원격 대상

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

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

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

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

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

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

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

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

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

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

스마트 클라이언트는 호스트 엔진 역할을 하고 프로세스 서버에 연결된 디버거 엔진의 instance. ConnectProcessServer 메서드는 프로세스 서버에 연결합니다. 연결되면 Live User-Mode Targets 에 설명된 메서드를 사용할 수 있습니다.

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

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