KD 연결 서버 예제

디버깅할 컴퓨터가 있는 사이트에 디버깅 기술자가 없다고 가정합니다. 디버깅 기술자는 이 사이트의 누군가에게 이 대상 컴퓨터를 디버그 케이블을 사용하여 다른 컴퓨터에 연결하도록 요청합니다.

다른 컴퓨터가 IP 주소 127.0.0.42에 있게 합니다. 디버그 케이블은 이 컴퓨터의 COM1을 대상 컴퓨터에서 디버그가 사용하도록 설정된 포트에 연결합니다. KD 연결 서버는 다음 명령으로 시작됩니다.

E:\Debugging Tools for Windows> kdsrv -t tcp:port=1027

그런 다음, 다른 위치에서 기술자는 다음 명령을 사용하여 WinDbg를 스마트 클라이언트로 시작합니다.

G:\Debugging Tools> windbg -k kdsrv:server=@{tcp:server=127.0.0.42,port=1027},trans=@{com:port=com1,baud=57600} -y SymbolPath

기호 경로는 스마트 클라이언트가 실행 중인 컴퓨터를 기준으로 합니다.

다음은 다른 예제입니다. 이 경우 NPIPE 프로토콜이 선택되고 WinDbg 대신 KD가 사용됩니다. 첫 번째 사용자가 파이프 이름을 선택합니다. 이 예제에서는 영숫자 문자열일 수 있습니다. "KernelPipe". 첫 번째 사용자는 관리자 권한 명령 프롬프트 창(관리자 권한으로 실행)을 열고 다음 명령을 입력하여 디버깅 서버를 시작합니다.

E:\Debugging Tools for Windows> set _NT_DEBUG_PORT=com1
E:\Debugging Tools for Windows> kdsrv -t npipe:pipe=KernelPipe

기술자는 서버 컴퓨터에 액세스할 수 없는 계정으로 클라이언트 컴퓨터에 로그온됩니다. 그러나 기술자는 서버 컴퓨터에 액세스할 수 있는 계정의 사용자 이름과 암호를 알고 있습니다. 해당 계정의 사용자 이름은 Contoso입니다. 기술자는 다음 명령을 입력합니다.

net use \\BOX17\ipc$ /user:Contoso

메시지가 표시되면 기술자가 Contoso 계정의 암호를 입력합니다.

기술자는 명명된 파이프에 어떤 이름이 사용되었는지 잘 모르기 때문에 KD 연결 서버에 대해 127.0.0.42를 쿼리합니다.

G:\Debugging Tools> cdb -QR 127.0.0.42
Servers on 127.0.0.42:
Debugger Server - npipe:Pipe=MainPipe
Remote Process Server - npipe:Pipe=AnotherPipe
Remote Kernel Debugger Server - npipe:Pipe=KernelPipe

세 개의 파이프가 표시됩니다. 그러나 하나만 KD 연결 서버이며 다른 하나는 디버깅 서버 및 사용자 모드 프로세스 서버입니다. 기술자는 다음 명령을 입력하여 스마트 클라이언트를 시작합니다.

G:\Debugging Tools> kd -k kdsrv:server=@{npipe:server=127.0.0.42,pipe=KernelPipe},trans=@{com:baud=57600} -y SymbolPath

전송 속도가 지정되었지만 포트는 지정되지 않습니다. 이로 인해 디버거는 KdSrv가 실행 중인 컴퓨터의 _NT_DEBUG_PORT 지정된 포트로 기본 설정됩니다.