WinDbg를 사용한 원격 디버깅

원격 디버깅에는 두 개의 서로 다른 위치에서 실행되는 두 개의 디버거가 포함됩니다. 디버깅을 수행하는 디버거를 디버깅 서버라고 합니다. 디버깅 클라이언트라고 하는 두 번째 디버거는 원격 위치에서 디버깅 세션을 제어합니다. 원격 세션을 설정하려면 먼저 디버깅 서버를 설정한 다음 디버깅 클라이언트를 활성화해야 합니다.

디버깅 중인 코드는 디버깅 서버를 실행하는 동일한 컴퓨터에서 실행 중이거나 별도의 컴퓨터에서 실행 중일 수 있습니다. 디버깅 서버가 사용자 모드 디버깅을 수행하는 경우 디버깅 중인 프로세스가 디버깅 서버와 동일한 컴퓨터에서 실행될 수 있습니다. 디버깅 서버가 커널 모드 디버깅을 수행하는 경우 디버깅되는 코드는 일반적으로 별도의 대상 컴퓨터에서 실행됩니다.

다음 다이어그램에서는 호스트 컴퓨터에서 실행되는 디버깅 서버가 별도의 대상 컴퓨터에서 실행되는 코드의 커널 모드 디버깅을 수행하는 원격 세션을 보여 줍니다.

커널 모드 디버깅을 위해 연결된 원격, 호스트 및 대상 컴퓨터를 보여 주는 다이어그램

원격 디버깅 연결에 사용할 수 있는 몇 가지 전송 프로토콜은 TCP, NPIPE, SPIPE, SSL 및 COM 포트입니다. TCP를 프로토콜로 사용하도록 선택했고 WinDbg를 디버깅 클라이언트와 디버깅 서버 모두로 사용하도록 선택했습니다. 다음 절차를 사용하여 원격 커널 모드 디버깅 세션을 설정할 수 있습니다.

  1. 호스트 컴퓨터에서 WinDbg를 열고 대상 컴퓨터를 사용하여 커널 모드 디버깅 세션을 설정합니다. ( WinDbg를 사용하여 라이브 Kernel-Mode 디버깅(클래식)을 참조하세요.)

  2. 디버그 메뉴에서 중단을 선택하거나 Ctrl-Break를 눌러 중단합니다.

  3. 디버거 명령 창에서 다음 명령을 입력합니다.

    .server tcp:port=5005

    참고 포트 번호 5005는 임의입니다. 포트 번호가 선택됩니다.

  4. WinDbg는 다음과 유사한 출력으로 응답합니다.

    Server started.  Client can connect with any of these command lines
    0: <debugger> -remote tcp:Port=5005,Server=YourHostComputer
    
  5. 원격 컴퓨터의 WinDbg를 열고 파일 메뉴에서 원격 세션에 연결을 선택합니다.

  6. 연결 문자열에서 다음 문자열을 입력합니다.

    tcp:Port=5005,Server=YourHostComputer

    여기서 YourHostComputer 는 디버깅 서버를 실행하는 호스트 컴퓨터의 이름입니다.

    확인을 선택합니다.

명령줄 사용

이전 섹션에 제공된 프로시저 대신 명령줄에서 원격 디버깅 세션을 설정할 수 있습니다. 채널 32의 1394 케이블을 통해 호스트 컴퓨터와 대상 컴퓨터 간에 커널 모드 디버깅 세션을 설정하도록 설정되어 있다고 가정합니다. 다음 절차를 사용하여 원격 디버깅 세션을 설정할 수 있습니다.

  1. 호스트 컴퓨터의 명령 프롬프트 창에서 다음 명령을 입력합니다.

    windbg -server tcp:port=5005 -k 1394:channel=32

  2. 원격 컴퓨터의 명령 프롬프트 창에 다음 명령을 입력합니다.

    windbg -remote tcp:Port=5005,Server=YourHostComputer

    여기서 YourHostComputer 는 디버깅 서버를 실행하는 호스트 컴퓨터의 이름입니다.

추가 정보

이 항목에 표시된 것 외에는 여러 가지 방법으로 원격 디버깅을 설정할 수 있습니다. WinDbg 디버거 명령 창에서 디버깅 서버를 설정하는 방법에 대한 자세한 내용은 .server(디버깅 서버 만들기)를 참조하세요. 명령줄에서 WinDbg를 시작하고 원격 디버깅을 설정하는 방법에 대한 자세한 내용은 WinDbg Command-Line 옵션을 참조하세요.