다음을 통해 공유


클라이언트 및 서버 예제

한 사람이 \\BOX17이라는 컴퓨터에서 애플리케이션을 실행한다고 가정해 보겠습니다. 이 애플리케이션에는 문제가 있지만 디버깅 기술자는 다른 사이트에 있습니다.

첫 번째 사용자는 \\BOX17에서 CDB를 사용하여 디버깅 서버를 설정합니다. 대상 애플리케이션의 프로세스 ID는 122입니다. 소켓 포트 번호가 1025인 TCP 프로토콜이 선택됩니다. 서버는 관리자 권한 명령 프롬프트 창에 다음 명령을 입력하여 시작됩니다(관리자 권한으로 실행).

E:\Debugging Tools for Windows> cdb -server tcp:port=1025 -p 122

다른 컴퓨터에서 기술자는 WinDbg를 디버깅 클라이언트로 사용하기로 결정합니다. 이 명령은 다음 명령으로 시작할 수 있습니다.

G:\Debugging Tools> windbg -remote tcp:server=BOX17,port=1025

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

E:\Debugging Tools for Windows> cdb -server npipe:pipe=MainPipe -v winmine.exe 

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

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

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

기술자는 명명된 파이프에 어떤 이름이 사용되었는지 확실하지 않으므로 사용 가능한 디버깅 서버에 대해 BOX17을 쿼리합니다.

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

두 개의 파이프가 표시됩니다. 그러나 하나는 디버깅 서버이고, 다른 하나는 프로세스 서버이며, 이에 관심이 없습니다. 따라서 MainPipe 는 올바른 이름이어야 합니다. 기술자는 다음 명령을 사용하여 디버깅 클라이언트를 시작합니다.

G:\Debugging Tools> cdb -remote npipe:server=BOX17,pipe=MyPipe 

보안 서버 사용

다음은 보안 서버의 예입니다. 이 서버는 TLS1의 S-채널 프로토콜과 함께 보안 소켓 계층을 사용합니다. 디버거는 컴퓨터 저장소에서 인증서를 찾습니다. 인증서는 16진수 지문으로 지정됩니다.

D:\> cdb -server "ssl:proto=tls1,machuser=ab 38 f7 ae 13 20 ac da 05 14 65 60 30 83 7b 83 09 2c d2 34,port=1234" notepad.exe