다음을 통해 공유


원격 대상

호스트 컴퓨터인 컴퓨터(원격 클라이언트 또는 서버)에 따라 두 가지 형태의 원격 디버깅이 있습니다. 호스트 컴퓨터디버거 엔진 활성화된 컴퓨터입니다. 다른 컴퓨터에서 디버거 엔진은 단지 호스트 엔진에 명령 및 데이터를 릴레이하는 프록시 역할을 합니다.

명령 실행 및 확장및 기호 로드와 같은 모든 디버거 작업은 호스트 엔진에서 수행됩니다. 또한 디버거 세션은 호스트 엔진을 기준으로 합니다.

컴퓨터에서 현재 실행 중인 디버깅 서버 및 프로세스 서버를 나열하려면 OutputServers사용합니다.

서버 디버깅 및 클라이언트 디버깅

디버깅 서버 호스트 역할을 하고 디버깅 클라이언트에서 연결을 수신 대기하는 디버거 엔진의 인스턴스입니다. StartServer 메서드는 디버깅 클라이언트에서 연결 수신 대기를 시작하도록 디버거 엔진에 지시합니다.

디버깅 클라이언트 는 디버거 엔진이 프록시 역할을 하며 디버깅 서버에 디버거 명령과 I/O를 보내는 인스턴스입니다. DebugConnect 함수를 사용하여 디버깅 서버에 연결할 수 있습니다.

DebugConnect 반환된 클라이언트 개체는 디버깅 서버의 디버거 세션에 자동으로 조인되지 않습니다. ConnectSession 메서드를 사용하여 세션에 참가하고 입력 및 출력을 동기화할 수 있습니다.

디버깅 서버와 디버깅 클라이언트 간의 통신은 주로 디버거 명령과 서버로 전송된 RPC 호출 및 클라이언트로 다시 전송되는 명령 출력으로 구성됩니다.

프로세스 서버, 커널 연결 서버 및 스마트 클라이언트

프로세스 서버커널 연결 서버 모두 프록시 역할을 하는 디버거 엔진의 인스턴스이며, 스마트 클라이언트에서 연결을 수신 대기하고, 이러한 원격 클라이언트의 요청에 따라 메모리, 프로세서 또는 운영 체제 작업을 수행합니다. 프로세스 서버 동일한 컴퓨터에서 실행 중인 프로세스의 디버깅을 용이하게 합니다. 커널 연결 서버 연결 서버를 실행하는 컴퓨터에 연결된 Windows 커널 디버깅 대상의 디버깅을 용이하게 합니다. 프로세스 서버는 StartProcessServer API 메서드 또는 프로그램 DbgSrv사용하여 시작할 수 있습니다. WaitForProcessServerEnd 메서드는 StartProcessServer로 시작된 프로세스 서버가 종료될 때까지 기다립니다. KdSrv프로그램을 사용하여 커널 연결 서버를 활성화할 수 있습니다.

스마트 클라이언트 호스트 엔진 역할을 하고 프로세스 서버에 연결된 디버거 엔진의 인스턴스입니다. ConnectProcessServer 메서드가 프로세스 서버에 연결됩니다. 연결되면 Live User-Mode 대상에 설명된 방법을 사용할 수 있습니다.

원격 클라이언트가 프로세스 서버에서 작업을 마치면 DisconnectProcessServer를 사용하여 연결을 끊거나, EndProcessServer를 사용하여 프로세스 서버에 종료 요청을 할 수 있습니다. 실행 중인 컴퓨터에서 프로세스 서버를 종료하려면 작업 관리자를 사용하여 프로세스를 종료합니다. StartProcessServer 사용한 디버거 엔진의 인스턴스가 여전히 실행 중인 경우 실행 사용하여 프로세스 서버를 종료하는 .endsrv 0디버거 명령을 실행할 수 있습니다(일반적으로 프로세스 서버에 영향을 주지 않는 .endsrv일반적인 동작에 대한 예외임).

프로세스 서버와 스마트 클라이언트 간의 통신은 일반적으로 낮은 수준의 메모리, 프로세서 및 운영 체제 작업 및 원격 클라이언트에서 서버로 전송되는 요청으로 구성됩니다. 그러면 결과가 클라이언트로 다시 전송됩니다.