Visual Studio 네트워크 케이블을 통해 Kernel-Mode 디버깅 설정
중요
이 기능은 Windows 10 버전 1507 이상 버전의 WDK에서는 사용할 수 없습니다.
Microsoft Visual Studio 사용하여 이더넷 네트워크를 통해 커널 모드 디버깅을 설정하고 수행할 수 있습니다. 커널 모드 디버깅에 Visual Studio 사용하려면 Visual Studio 통합된 Windows WDK(드라이버 키트)가 있어야 합니다. 통합 환경을 설치하는 방법에 대한 자세한 내용은 Visual Studio 사용하여 디버깅을 참조하세요.
Visual Studio 사용하여 이더넷 디버깅을 설정하는 대신 자동으로 설정을 수행할 수 있습니다. 자세한 내용은 KDNET 네트워크 커널 디버깅 자동 설정을 참조하세요.
이더넷 네트워크를 통해 디버깅하면 다른 유형의 케이블에 대한 디버깅에 비해 다음과 같은 이점이 있습니다.
- 호스트 및 대상 컴퓨터는 로컬 네트워크의 어느 곳에나 있을 수 있습니다.
- 한 호스트 컴퓨터에서 여러 대상 컴퓨터를 쉽게 디버그할 수 있습니다.
- 네트워크 케이블은 저렴하고 쉽게 사용할 수 있습니다.
- 두 컴퓨터가 있으면 둘 다 이더넷 어댑터가 있을 가능성이 높습니다. 둘 다 직렬 포트가 있거나 둘 다 1394개 포트가 있을 가능성이 적습니다.
디버거를 실행하는 컴퓨터를 호스트 컴퓨터라고 하며 디버깅 중인 컴퓨터를 대상 컴퓨터라고 합니다. 호스트 컴퓨터는 XP 이상 Windows 실행 중이어야 하며 대상 컴퓨터는 Windows 8 이상 실행 중이어야 합니다.
지원되는 네트워크 어댑터
호스트 컴퓨터는 유선 또는 무선 네트워크 어댑터를 사용할 수 있지만 대상 컴퓨터는 Windows 대한 디버깅 도구에서 지원하는 네트워크 어댑터를 사용해야 합니다. 지원되는 네트워크 어댑터 목록은 Windows 8.1 네트워크 커널 디버깅에 지원되는 이더넷 NIC 및 Windows 10네트워크 커널 디버깅에 지원되는 이더넷 NIC를 참조하세요.
호스트 및 대상 컴퓨터 구성
대상 컴퓨터의 네트워크 어댑터를 네트워크 허브로 커넥트 또는 적절한 네트워크 케이블을 사용하여 전환합니다. 호스트 컴퓨터의 네트워크 어댑터를 네트워크 허브로 커넥트 표준 케이블 또는 무선 연결을 사용하여 전환합니다.
드라이버 배포 및 테스트를 위해 컴퓨터 프로비전에 설명된 대로 호스트 및 대상 컴퓨터 구성을 시작합니다(WDK 8.1).
호스트 컴퓨터의 Visual Studio 컴퓨터 구성 대화 상자에서 컴퓨터 프로비저닝을 선택하고 디버거 설정을 선택합니다.
연결 형식의 경우 네트워크를 선택합니다.

포트 번호의 경우 기본값을 그대로 적용하거나 선택한 값을 입력합니다. 49152에서 65535까지 임의의 숫자를 선택할 수 있습니다. 선택한 포트는 호스트 컴퓨터에서 실행되는 디버거에 의해 단독 액세스를 위해 열립니다. 호스트 컴퓨터에서 실행되는 다른 애플리케이션에서 사용되지 않는 포트 번호를 선택해야 합니다.
참고 네트워크 디버깅에 사용할 수 있는 포트 번호의 범위는 회사의 네트워크 정책에 의해 제한될 수 있습니다. 호스트 컴퓨터에서 제한 사항이 무엇인지 알 수 있는 방법은 없습니다. 회사의 정책이 네트워크 디버깅에 사용할 수 있는 포트 범위를 제한하는지 여부를 확인하려면 네트워크 관리자에게 문의하세요.
키의 경우 자동으로 생성된 기본값을 사용하는 것이 좋습니다. 그러나 원하는 경우 사용자 고유의 키를 입력할 수 있습니다. 자세한 내용은 이 항목의 뒷부분에 있는 사용자 고유의 키 만들기 를 참조하세요. 호스트 IP의 경우 기본값을 적용합니다. 호스트 컴퓨터의 IP 주소입니다.
대상 컴퓨터에서 Device Manager를 사용하여 디버깅에 사용할 어댑터의 PCI 버스, 디바이스 및 함수 번호를 확인합니다. 버스 매개 변수의 경우 b를 입력합니다. d. f 여기서 b, d 및 f는 어댑터의 버스 번호, 디바이스 번호 및 함수 번호입니다. 이러한 값은 일반 탭의 위치 아래에 디바이스 관리자에 표시됩니다.
구성 프로세스는 몇 분 정도 걸리며 대상 컴퓨터를 한두 번 자동으로 다시 부팅할 수 있습니다. 프로세스가 완료되면 마침을 클릭합니다.
주의 대상 컴퓨터가 도킹 스테이션에 있고 도킹 스테이션의 일부인 네트워크 어댑터에 대해 네트워크 디버깅을 사용하도록 설정된 경우 도킹 스테이션에서 컴퓨터를 제거하지 마세요. 도킹 스테이션에서 대상 컴퓨터를 제거해야 하는 경우 먼저 커널 디버깅을 사용하지 않도록 설정합니다. 대상 컴퓨터에서 커널 디버깅을 사용하지 않도록 설정하려면 관리자 권한으로 명령 프롬프트 창을 열고 bcdedit /debug off 명령을 입력합니다. 대상 컴퓨터를 다시 부팅합니다.
참고 대상 컴퓨터에 Hyper-V 역할을 설치하려는 경우 Virtual Machine 호스트의 네트워크 디버깅 설정을 참조하세요.
대상 컴퓨터에서 dbgsettings 확인
중요
BCDEdit를 사용하여 부팅 정보를 변경하기 전에 테스트 PC에서 BitLocker 및 보안 부팅과 같은 Windows 보안 기능을 일시적으로 일시 중단해야 할 수 있습니다. 테스트가 완료되면 이러한 보안 기능을 다시 사용하도록 설정하고 보안 기능이 비활성화된 경우 테스트 PC를 적절하게 관리합니다.
대상 컴퓨터에서 관리자 권한으로 명령 프롬프트 창을 열고 다음 명령을 입력합니다.
bcdedit /dbgsettings
bcdedit /enum
...
key RF8...KNE
debugtype NET
hostip 10.125.5.10
port 50001
dhcp Yes
...
busparams 0.29.7
...
debugtype이 NET이고 포트가 호스트 컴퓨터의 Visual Studio 지정한 포트 번호인지 확인합니다. 또한 키가 Visual Studio 자동으로 생성(또는 지정한) 키인지 확인합니다.
busparams가 지정한 버스 매개 변수와 일치하는지 확인합니다.
Bus 매개 변수에 대해 입력한 값이 표시되지 않으면 다음 명령을 입력합니다.
bcdedit /set "{dbgsettings}" busparamsb.d.F
여기서 b, d 및 f 는 디버깅에 사용하도록 선택한 대상 컴퓨터의 네트워크 어댑터의 버스, 디바이스 및 함수 번호입니다. 이러한 값은 일반 탭의 위치 아래에 디바이스 관리자에 표시됩니다.
예를 들면 다음과 같습니다.
bcdedit /set "{dbgsettings}" busparams 0.29.7
디버깅 세션 시작
- 호스트 컴퓨터의 Visual Studio 도구 메뉴에서 프로세스에 연결(Attach to Process)을 선택합니다.
- 전송의 경우 커널 모드 디버거를 Windows 선택합니다.
- 한정자의 경우 이전에 구성한 대상 컴퓨터의 이름을 선택합니다.
- 연결을 클릭합니다.
방화벽을 통해 디버거 허용
네트워크 디버깅 연결을 처음 설정하려고 하면 방화벽을 통해 디버깅 애플리케이션(Microsoft Visual Studio)을 허용하라는 메시지가 표시될 수 있습니다. 클라이언트 버전의 Windows 프롬프트가 표시되지만 서버 버전의 Windows 프롬프트는 표시되지 않습니다. 도메인, 프라이빗 및 퍼블릭의 세 가지 네트워크 유형 모두에 대한 확인란을 선택하여 프롬프트에 응답합니다. 프롬프트가 표시되지 않거나 프롬프트를 사용할 수 있을 때 확인란을 선택하지 않은 경우 제어판을 사용하여 방화벽을 통한 액세스를 허용해야 합니다. 제어판 > 시스템 및 보안을 열고 Windows 방화벽을 통해 앱 허용을 클릭합니다. 애플리케이션 목록에서 확인란을 사용하여 방화벽을 통해 Visual Studio 수 있습니다. Visual Studio를 다시 시작합니다.
사용자 고유의 키 만들기
대상 컴퓨터를 안전하게 유지하려면 호스트와 대상 컴퓨터 간에 이동하는 패킷을 암호화해야 합니다. 대상 컴퓨터를 구성할 때 자동으로 생성된 암호화 키(Visual Studio 구성 마법사에서 제공)를 사용하는 것이 좋습니다. 그러나 사용자 고유의 키를 만들도록 선택할 수 있습니다. 네트워크 디버깅은 4개의 64비트 값으로 지정된 256비트 키를 기본 36에서 마침표로 구분하여 사용합니다. 각 64비트 값은 최대 13자를 사용하여 지정됩니다. 유효한 문자는 문자 a-z 및 숫자 0~9입니다. 특수 문자는 허용되지 않습니다. 다음 목록에서는 유효한(강력하지는 않지만) 키의 예를 제공합니다.
- 1.2.3.4
- abc.123.def.456
- don't.use.previous.keys
네트워크 케이블을 통해 디버깅하기 위한 팁 문제 해결
방화벽을 통해 애플리케이션 디버깅을 허용해야 합니다.
디버거(WinDbg 또는 KD)는 방화벽을 통해 액세스할 수 있어야 합니다. 제어판을 사용하여 방화벽을 통한 액세스를 허용할 수 있습니다. 제어판 > 시스템 및 보안을 열고 Windows 방화벽을 통해 앱 허용을 클릭합니다. 애플리케이션 목록에서 확인란을 사용하여 방화벽을 통해 Visual Studio 수 있습니다. Visual Studio를 다시 시작합니다.
포트 번호는 네트워크 정책에서 허용하는 범위에 있어야 합니다.
네트워크 디버깅에 사용할 수 있는 포트 번호의 범위는 회사의 네트워크 정책에 의해 제한될 수 있습니다. 회사 정책이 네트워크 디버깅에 사용할 수 있는 포트 범위를 제한하는지 확인하려면 네트워크 관리자에게 문의하세요.
포트 번호를 변경해야 하는 경우 다음 절차를 사용합니다.
- 호스트 컴퓨터의 Visual Studio 드라이버 메뉴에서 컴퓨터 구성 테스트를 >선택합니다.
- 테스트 컴퓨터의 이름을 선택하고 다음을 클릭합니다.
- 컴퓨터 프로비저닝을 선택하고 디버거 설정을 선택합니다. 다음을 클릭합니다.
- 포트 번호의 경우 네트워크 관리자가 허용하는 범위에 있는 숫자를 입력합니다. 다음을 클릭합니다.
- 재구성 프로세스는 몇 분 정도 걸리며 대상 컴퓨터를 자동으로 다시 부팅합니다. 프로세스가 완료되면 다음 및 마침을 클릭합니다.
busparams 지정
디버깅에 사용하려는 네트워크 어댑터의 버스, 디바이스 및 함수 번호를 지정해야 합니다. 버스 매개 변수를 지정하려면 디바이스 관리자를 열고 디버깅에 사용할 네트워크 어댑터를 찾습니다. 네트워크 어댑터의 속성 페이지를 열고 일반 탭의 위치 아래에 표시된 버스 번호, 장치 번호 및 함수 번호를 기록해 둡니다. 관리자 권한 명령 프롬프트 창에서 다음 명령을 입력합니다. 여기서 b, d 및 f는 10진수 형식의 버스, 디바이스 및 함수 번호입니다.
bcdedit -set "{dbgsettings}" busparamsb.d.F
대상 컴퓨터를 다시 부팅합니다.
관련 항목
Visual Studio Kernel-Mode 디버깅 설정
Windows 10 네트워크 커널 디버깅에 지원되는 이더넷 NIC