프로세스 서버 예제
한 사람이 \\BOX17이라는 컴퓨터에서 애플리케이션을 실행한다고 가정합니다. 이 애플리케이션에는 문제가 있지만 디버깅 기술자는 다른 사이트에 있습니다.
첫 번째 사용자는 \\BOX17에서 DbgSrv를 사용하여 프로세스 서버를 설정합니다. 대상 애플리케이션의 프로세스 ID는 122입니다. 소켓 포트 번호가 1025인 TCP 프로토콜이 선택됩니다. 서버는 다음 명령으로 시작됩니다.
E:\Debugging Tools for Windows> dbgsrv -t tcp:port=1025
다른 컴퓨터에서 기술자는 다음 명령을 사용하여 WinDbg를 스마트 클라이언트로 시작합니다.
G:\Debugging Tools> windbg -premote tcp:server=BOX17,port=1025 -p 122
다음은 다른 예제입니다. 이 경우 NPIPE 프로토콜이 선택되고 WinDbg 대신 CDB가 사용됩니다. 첫 번째 사용자가 파이프 이름을 선택합니다. 이 예제에서는 "AnotherPipe"라는 영숫자 문자열일 수 있습니다. 첫 번째 사용자는 관리자 권한 명령 프롬프트 창(관리자 권한으로 실행)을 열고 다음 명령을 입력하여 디버깅 서버를 시작합니다.
E:\Debugging Tools for Windows> dbgsrv -t npipe:pipe=AnotherPipe
기술자는 서버 컴퓨터에 액세스할 수 없는 계정으로 클라이언트 컴퓨터에 로그온됩니다. 그러나 기술자는 서버 컴퓨터에 액세스할 수 있는 계정의 사용자 이름과 암호를 알고 있습니다. 해당 계정의 사용자 이름은 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
두 개의 파이프가 표시됩니다. 그러나 하나의 프로세스 서버만 있고 다른 하나는 디버깅 서버이며, 이에 관심이 없습니다. 따라서 AnotherPipe 는 올바른 이름이어야 합니다. 기술자는 다음 명령을 입력하여 스마트 클라이언트를 시작합니다.
G:\Debugging Tools> cdb -premote npipe:server=BOX17,pipe=AnotherPipe -v sol.exe
프로세스 서버를 사용하는 보다 복잡한 예제는 중간 기호를 참조하세요.