다음을 통해 공유


WinDbg를 사용하여 라이브 Kernel-Mode 디버깅(클래식)

WinDbg를 사용하여 라이브 커널 모드 디버깅 세션을 시작하는 방법에는 두 가지가 있습니다.

WinDbg 메뉴

WinDbg가 휴면 모드인 경우 파일 메뉴에서 커널 디버그를 선택하거나 Ctrl+K를 눌러 커널 디버깅 세션을 시작할 수 있습니다. 커널 디버깅 대화 상자가 나타나면 적절한 탭인 NET, 1394, USB, COM 또는 로컬을 클릭합니다. 각 탭은 다른 연결 방법을 지정합니다.

명령 프롬프트

명령 프롬프트 창에서 WinDbg를 시작할 때 커널 모드 디버깅 세션을 시작할 수 있습니다. 다음 명령 중 하나를 입력합니다.

windbg [-y SymbolPath] -k net:port=PortNumber,key=Key[,target=TargetIPAddress|TargetMachineName]

windbg [-y SymbolPath] -k usb:targetname=USBString

windbg [-y SymbolPath] -k com:port=ComPort,baud=BaudRate

windbg [-y SymbolPath] -k com:ipport=SerialTcpIpPort,port=SerialIPAddress

windbg [-y SymbolPath] -k com:pipe,port=\\VMHost\pipe\PipeName[,resets=0][,reconnect]

windbg [-y SymbolPath] -k com:modem

windbg [-y SymbolPath] -kl

windbg [-y SymbolPath] -k

자세한 내용은 WinDbg Command-Line 옵션을 참조하세요.

환경 변수

직렬(COM 포트) 또는 1394 연결을 통해 디버깅하는 경우 환경 변수를 사용하여 연결 설정을 지정할 수 있습니다.

다음 변수를 사용하여 직렬 연결을 지정합니다.

set _NT_DEBUG_PORT = ComPort

set _NT_DEBUG_BAUD_RATE = BaudRate

자세한 내용은 커널 모드 환경 변수를 참조하세요.

매개 변수

SymbolPath
기호 파일이 있는 디렉터리 목록입니다. 목록의 디렉터리를 세미콜론으로 구분합니다. 자세한 내용은 기호 경로를 참조하세요.

PortNumber
네트워크 디버깅에 사용할 포트 번호입니다. 49152에서 65535까지의 숫자를 선택할 수 있습니다. 자세한 내용은 수동으로 네트워크 연결 설정을 참조하세요.


네트워크 디버깅에 사용할 암호화 키입니다. 대상 컴퓨터를 구성할 때 bcdedit에서 제공하는 자동으로 생성된 키를 사용하는 것이 좋습니다. 자세한 내용은 수동으로 네트워크 연결 설정을 참조하세요.

TargetIPAddress
대상 컴퓨터의 IPv4 주소입니다.

target= IP 주소를 지정하면 디버거가 대상에 특수 패킷을 전송하여 지정된 대상 머신에 대한 연결을 시작합니다. 그러면 디버거와 연결을 시도하게 됩니다. 디버거는 약 반초마다 반복적으로 대상에 패킷을 보내 연결을 시도합니다. 연결이 성공하면 대상은 기존 연결을 삭제하고 디버거의 이 instance 통신합니다. 이렇게 하면 기존 디버깅 연결에서 디버깅 세션을 제어할 수 있습니다.

대상을 호스트 IP 주소로 구성하고 구성된 호스트 IP 주소를 사용하여 컴퓨터에서 디버거를 실행하는 경우 target= IP address 매개 변수를 지정할 필요가 없습니다. 대상이 호스트 IP 주소로 구성된 경우 3초마다 OFFER 패킷을 호스트에 보냅니다. OFFER 패킷을 사용하면 대상= IP 주소가 지정되지 않은 경우 디버거가 호스트에 연결할 수 있습니다.

대상에서 호스트 IP 주소를 구성하는 방법에 대한 자세한 내용은 KDNET 네트워크 커널 디버깅 자동 설정 및 KDNET 네트워크 커널 디버깅 수동 설정을 참조하세요.

TargetMachineName
대상 PC의 컴퓨터 이름입니다. 컴퓨터 이름을 사용하려면 네트워크의 DNS 시스템에 대상 PC의 IP 주소와 연결된 컴퓨터 이름이 있어야 합니다.

1394채널
1394 채널 번호입니다. 유효한 채널 번호는 0에서 62 사이의 정수(포함)입니다. 1394Channel 은 대상 컴퓨터에서 사용하는 숫자와 일치해야 하지만 어댑터에서 선택한 실제 1394 포트에 의존하지 않습니다. 자세한 내용은 수동으로 1394 연결 설정을 참조하세요.

1394프로토콜
1394 커널 연결에 사용할 연결 프로토콜입니다. 디버거가 올바른 프로토콜을 자동으로 선택하므로 거의 항상 생략할 수 있습니다. 이 항목을 수동으로 설정하려는 경우 대상 컴퓨터에서 Windows XP를 실행 중인 경우 1394Protocol 을 "channel"과 동일하게 설정해야 합니다. 대상 컴퓨터가 Windows Server 2003 이상을 실행하는 경우 1394Protocol을 "instance"로 설정해야 합니다. 생략하면 디버거는 기본적으로 현재 대상 컴퓨터에 적합한 프로토콜로 설정됩니다. 이는 WinDbg 그래픽 인터페이스가 아닌 명령줄 또는 환경 변수를 통해서만 지정할 수 있습니다.

USBString
USB 연결 문자열입니다. /targetname 부팅 옵션으로 지정된 문자열과 일치해야 합니다. 자세한 내용은 수동으로 USB 3.0 연결 설정USB 2.0 연결 수동 설정을 참조하세요.

ComPort
COM 포트의 이름입니다. 이 형식은 "com2" 형식이거나 "\\.\com2" 형식일 수 있지만 단순히 숫자가 아니어야 합니다. 자세한 내용은 수동으로 직렬 연결 설정을 참조하세요.

BaudRate
전송 속도입니다. 9600, 19200, 38400, 57600 또는 115200일 수 있습니다.

SerialTcpIpPort
에뮬레이트된 직렬 COM 포트의 대상 TCP IP 포트입니다.

SerialIPAddress
에뮬레이트된 직렬 COM 포트의 대상 TCP IP 주소입니다.

VMHost
가상 머신을 디버깅할 때 VMHost 는 가상 머신이 실행 중인 실제 컴퓨터의 이름을 지정합니다. 가상 머신이 커널 디버거 자체와 동일한 컴퓨터에서 실행되는 경우 VMHost에 단일 기간(.)을 사용합니다. 자세한 내용은 Virtual Machine에 대한 연결 설정을 참조하세요.

PipeName
디버깅 연결을 위해 가상 머신에서 만든 파이프의 이름입니다.

resets=0
호스트와 대상이 동기화될 때 대상에 무제한으로 초기화 패킷을 보낼 수 있도록 지정합니다. 이 매개 변수는 특정 종류의 가상 머신을 디버깅할 때만 필요합니다.

다시
읽기/쓰기 오류가 발생하는 경우 디버거가 파이프의 연결을 자동으로 끊고 다시 연결하도록 합니다. 또한 디버거가 시작될 때 명명된 파이프를 찾을 수 없는 경우 다시 연결 매개 변수는 이 이름의 파이프가 나타날 때까지 기다립니다. 이 매개 변수는 특정 종류의 가상 머신을 디버깅할 때만 필요합니다.

-Kl 기
디버거가 로컬 커널 모드 디버깅을 수행하도록 합니다. 자세한 내용은 로컬 Kernel-Mode 디버깅을 참조하세요.

다음 일괄 처리 파일을 사용하여 COM 포트 연결을 통해 디버깅 세션을 설정하고 시작할 수 있습니다.

set _NT_SYMBOL_PATH=d:\mysymbols
set _NT_DEBUG_PORT=com1
set _NT_DEBUG_BAUD_RATE=115200
set _NT_DEBUG_LOG_FILE_OPEN=d:\debuggers\logfile1.log
windbg -k

다음 명령줄을 사용하여 환경 변수 없이 WinDbg를 시작할 수 있습니다.

windbg -y d:\mysymbols -k com:port=com2,baud=57600

windbg -y d:\mysymbols -k com:port=\.\com2,baud=115200

windbg -y d:\mysymbols -k net:port=50000,key=AutoGeneratedKey

windbg -y d:\mysymbols -k net:port=50000,key=AutoGeneratedKey,target=TargetIPAddress

참고 항목

WinDbg Command-Line 옵션

커널 모드 환경 변수