자동으로 KDNET 네트워크 커널 디버깅 설정

Windows용 디버깅 도구는 네트워크를 통해 커널 디버깅을 지원합니다. 이 문서에서는 kdnet.exe 설정 도구를 사용하여 네트워크 디버깅을 자동으로 설정하는 방법을 설명합니다.

디버거를 실행하는 컴퓨터를 호스트 컴퓨터라고 하며 디버그 중인 컴퓨터를 대상 컴퓨터라고 합니다. 호스트 컴퓨터는 Windows 7 이상을 실행해야 하며 대상 컴퓨터는 Windows 8 이상을 실행해야 합니다.

호스트 컴퓨터의 IP 주소 확인

  1. 대상 및 호스트 PC가 네트워크 허브에 연결되어 있는지 확인하거나 적절한 네트워크 케이블을 사용하여 전환합니다.

  2. 호스트 컴퓨터에서 명령 프롬프트를 열고 를 입력 IPConfig 하여 IP 구성을 표시합니다.

  3. 명령 출력에서 이더넷 어댑터의 IPv4 주소를 찾습니다.

...

Ethernet adapter Ethernet:
...

IPv4 Address. . . . . . . . . . . : <YourHostIPAddress>
...

  1. 디버깅에 사용하려는 네트워크 어댑터의 IPv4 주소를 기록해 둡니다.

호스트 및 대상 컴퓨터 설정

kdnet.exe 유틸리티를 사용하여 다음 단계에 따라 대상 PC에서 디버거 설정을 자동으로 구성합니다.

  1. Windows 디버깅 도구가 호스트 시스템에 설치되어 있는지 확인합니다. 디버거 도구를 다운로드하고 설치하는 방법에 대한 자세한 내용은 Windows용 디버깅 도구를 참조하세요.

  2. kdnet.exe 찾아 파일을 VerifiedNICList.xml. 기본적으로 파일은 다음 위치에 있습니다.

    C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
    

    이러한 지침에서는 두 PC가 모두 대상 및 호스트 모두에서 64비트 버전의 Windows를 실행한다고 가정합니다. 그렇지 않은 경우 가장 좋은 방법은 대상이 실행 중인 호스트에서 도구의 동일한 "비트"를 실행하는 것입니다. 예를 들어 대상이 32비트 Windows를 실행하는 경우 호스트에서 32 버전의 디버거를 실행합니다. 자세한 내용은 32비트 또는 64비트 디버깅 도구 선택을 참조하세요.

  3. 호스트 컴퓨터에서 두 파일을 네트워크 공유 또는 썸 드라이브에 복사하여 대상 컴퓨터에서 사용할 수 있도록 합니다.

  4. 대상 컴퓨터에서 C:\KDNET 디렉터리를 만들고 kdnet.exe 복사하고 파일을 해당 디렉터리에VerifiedNICList.xml.

    중요

    kdnet.exe 사용하여 부팅 정보를 변경하기 전에 테스트 PC에서 BitLocker 및 보안 부팅과 같은 Windows 보안 기능을 일시적으로 일시 중단해야 할 수 있습니다. 테스트가 완료되면 이러한 보안 기능을 다시 사용하도록 설정하고 보안 기능이 비활성화된 경우 테스트 PC를 적절하게 관리합니다.

  5. 대상 컴퓨터에서 관리자 권한으로 명령 프롬프트를 엽니다. 대상 컴퓨터에 지원되는 네트워크 어댑터가 있는지 확인하려면 다음 명령을 입력합니다.

    C:\KDNET>kdnet.exe
    Network debugging is supported on the following NICs:
    busparams=1.0.0, Broadcom NetXtreme Gigabit Ethernet, Plugged in.  
    This Microsoft hypervisor supports using KDNET in guest VMs.
    
  6. kdnet.exe 출력에서 대상의 네트워크 어댑터가 지원됨을 나타내는 경우 계속 진행할 수 있습니다.

  7. 다음 명령을 입력하여 호스트 시스템의 IP 주소를 설정하고 고유한 연결 키를 생성합니다. IP 주소 또는 호스트 시스템의 이름을 사용합니다. 권장 범위인 50000-50039 내에서 작업하는 각 대상/호스트 쌍에 대한 고유한 포트 주소를 선택합니다.

    C:\KDNET>kdnet.exe <HostComputerIPAddress> <YourDebugPort> 
    
    Enabling network debugging on Intel(R) 82577LM Gigabit Network Connection.
    Key=2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p
    
  8. 반환된 키를 메모장 .txt 파일에 복사합니다.

커널 디버깅을 위해 WinDbg를 대상에 연결

호스트 컴퓨터에서 WinDbg를 엽니다. 파일 메뉴에서 커널 디버그를 선택합니다. 커널 디버깅 대화 상자에서 Net 탭을 엽니다. 이전에 메모장 .txt 파일에 저장된 포트 번호와 키를 붙여넣습니다. 확인을 선택합니다.

명령 프롬프트를 열고 다음 명령을 입력하여 WinDbg 세션을 시작할 수도 있습니다. <YourPort> 는 이전에 선택한 포트이며 <, YourKey> 는 이전에 kdnet.exe 반환된 키입니다. 이전에 저장한 키를 메모장 .txt 파일에 붙여넣습니다.

windbg.exe -k -d net:port=<YourDebugPort>,key=<YourKey> 

예제에 표시된 선택적 -d 매개 변수는 조기 침입을 사용하도록 설정합니다. 자세한 내용은 WinDbg 명령줄 옵션을 참조하세요.

WinDbg가 방화벽을 통해 포트에 액세스할 수 있도록 허용하라는 메시지가 표시되면 WinDbg에서 세 가지 네트워크 유형 모두 에 대한 포트에 액세스하도록 허용합니다.

세 가지 네트워크 유형 모두에 대한 액세스를 허용하는 선택 항목이 있는 Windows 보안 경고의 스크린샷

이 시점에서 디버거는 대상이 다시 연결될 때까지 기다립니다. 디버거 명령 창에 텍스트가 표시됩니다. 해당 텍스트는 다음과 유사합니다.

Microsoft (R) Windows Debugger Version 1.0.1908.30002 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.

Using NET for debugging
Opened WinSock 2.0
Waiting to reconnect...

대상 PC 다시 시작

디버거가 "다시 연결 대기 중..."에 있으면 스테이지에서 대상 컴퓨터를 다시 부팅합니다. PC를 다시 시작하는 한 가지 방법은 관리자의 명령 프롬프트에서 이 명령을 사용하는 것입니다.

shutdown -r -t 0 

대상 PC가 다시 시작되면 디버거가 자동으로 연결됩니다.

문제 해결 팁

방화벽을 통해 애플리케이션 디버깅을 허용해야 합니다.

디버거가 실행 중인 호스트 쪽에서 디버거가 방화벽을 통해 대상과 통신할 수 있도록 모든 유형의 네트워킹을 사용하도록 설정해야 합니다.

제어판 사용하여 방화벽을 통한 액세스를 허용합니다.

  1. 제어판 > 시스템 및 보안을 열고 Windows 방화벽을 통해 앱 허용을 선택합니다.

    • (WinDbg) 애플리케이션 목록에서 WinDbg 엔진 프로세스(TCP)(모두)를 찾습니다.

    • (WinDbg(클래식)) 애플리케이션 목록에서 Windows GUI 심볼 디버거Windows 커널 디버거를 찾습니다.

  2. 확인란을 사용하여 서로 다른 세 가지 네트워크 유형을 모두 통해 이러한 두 애플리케이션을 허용합니다.

  3. 아래로 스크롤하고 확인을 선택하여 방화벽 변경 내용을 저장합니다. 디버거를 다시 시작합니다.

    세 가지 네트워크 유형이 모두 사용하도록 설정된 Windows GUI 기호 디버거 및 Windows 커널 디버거 애플리케이션을 표시하는 제어판 방화벽 구성의 스크린샷

ping을 사용하여 연결 테스트

디버거가 시간 초과되고 연결되지 않는 경우 대상 PC에서 ping 명령을 사용하여 연결을 확인합니다.

   C:\>Ping <HostComputerIPAddress>

네트워크 디버깅을 위한 포트 선택

디버거가 시간 초과되고 연결되지 않는 경우 기본 포트 번호 50000이 이미 사용 중이거나 차단되었기 때문일 수 있습니다.

49152에서 65535까지의 포트 번호를 선택할 수 있습니다. 권장 범위는 50000에서 50039 사이입니다. 선택한 포트는 호스트 컴퓨터에서 실행되는 디버거에 의해 단독 액세스를 위해 열립니다.

네트워크 디버깅에 사용할 수 있는 포트 번호의 범위는 회사의 네트워크 정책에 의해 제한될 수 있습니다. 회사의 정책이 네트워크 디버깅에 사용할 수 있는 포트 범위를 제한하는지 여부를 확인하려면 네트워크 관리자와 검사.

지원되는 네트워크 어댑터

kdnet.exe 실행할 때 "이 컴퓨터의 NIC에서 네트워크 디버깅이 지원되지 않음"이 표시되는 경우 네트워크 어댑터는 지원되지 않습니다.

호스트 컴퓨터는 모든 네트워크 어댑터를 사용할 수 있지만 대상 컴퓨터는 Windows용 디버깅 도구에서 지원하는 네트워크 어댑터를 사용해야 합니다. 지원되는 네트워크 어댑터 목록은 Windows 10 네트워크 커널 디버깅에 지원되는 이더넷 NIC 및 Windows 8.1네트워크 커널 디버깅에 지원되는 이더넷 NIC를 참조하세요.

다른 디버깅 형식 사용

Windows 10 2020년 10월 업데이트(20H2)부터 다음 옵션은 네 가지 유형의 디버깅을 사용하도록 설정하도록 지원됩니다.

디버그 형식의 조합을 지정할 수 있습니다.

디버그 형식을 지정하지 않으면 커널 디버깅이 사용됩니다.

하이퍼바이저 및 커널 디버그를 모두 사용하도록 설정하면 하이퍼바이저 포트가 + 1로 <YourDebugPort> 설정됩니다.

사용 예

- bkw 옵션을 사용하여 bootmgr, 커널 및 윈로드 디버깅을 사용하도록 설정합니다.

C:\>kdnet.exe <HostComputerIPAddress> <YourDebugPort> -bkw

Enabling network debugging on Intel(R) 82577LM Gigabit Network Connection.
Key=2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p

디버깅 형식 옵션 요약

KNDET 옵션 Description 해당 집합 명령
b bootmgr 디버깅을 사용하도록 설정 bcdedit /bootdebug {bootmgr} on
h 하이퍼바이저 디버깅을 사용하도록 설정 bcdedit /set hypervisordebug on
k 커널 디버깅을 사용하도록 설정 bcdedit /debug on
w 에서는 winload 디버깅을 사용하도록 설정합니다. bcdedit /bootdebug on

버스 매개 변수 지정

kdnet이 전송에 대한 버스 매개 변수를 자동으로 확인할 수 없는 경우 이 구문을 사용하여 옵션으로 /busparams 명령줄에 지정합니다.

kdnet.exe /busparams [b.d.f] [host] [port] [-[b][h][k][w]]

b.d.f 는 구성할 디바이스의 버스 매개 변수를 지정합니다.

대상 컴퓨터의 장치 관리자 사용하여 디버깅에 사용할 어댑터의 PCI 버스, 디바이스 및 함수 번호를 확인합니다. 버스 매개 변수의 경우 b를 입력합니다. d. f 여기서 b, df 는 어댑터의 버스 번호, 디바이스 번호 및 함수 번호입니다. 이러한 값은 일반 탭의 위치 아래에 장치 관리자 표시됩니다.

예를 들면 다음과 같습니다.

C:\>kdnet.exe /busparams 0.29.7 <HostComputerIPAddress> <YourDebugPort> -bkw

참고 항목