Compartilhar via


Destinos remotos

Há duas formas diferentes de depuração remota, dependendo de qual computador (cliente remoto ou servidor) é o computador host. O computador host é o computador no qual o mecanismo de depurador está ativo. No outro computador, o mecanismo de depurador está apenas agindo como um proxy retransmitindo comandos e dados para o mecanismo de host.

Todas as operações do depurador, como a execução de comandos e extensões, e o carregamento de símbolos, são executadas pelo host. Uma sessão de depurador também é relativa ao mecanismo de host.

Para listar os servidores de depuração e os servidores de processo em execução no momento em um computador, use OutputServers.

Depurando servidores e depurando clientes

Um servidor de depuração é uma instância do mecanismo de depurador atuando como um host e escutando conexões de clientes de depuração. O método StartServer informará o mecanismo de depuração para começar a escutar conexões de clientes de depuração.

Um cliente de depuração é uma instância do mecanismo de depurador atuando como um proxy, enviando comandos de depurador e E/S para o servidor de depuração. A função DebugConnect pode ser usada para se conectar ao servidor de depuração.

O objeto cliente retornado por DebugConnect não é ingressado automaticamente na sessão do depurador no servidor de depuração. O método ConnectSession pode ser usado para ingressar na sessão, sincronizando entrada e saída.

A comunicação entre um servidor de depuração e um cliente de depuração consiste principalmente em comandos de depurador e chamadas RPC enviadas para o servidor e saída de comando enviada de volta para o cliente.

Servidores de processo, servidores de conexão kernel e clientes inteligentes

Servidores de processo e servidores de conexão de kernel são instâncias do mecanismo de depurador atuando como proxies, escutando conexões de clientes inteligentes e executando operações de memória, processador ou sistema operacional, conforme solicitado por esses clientes remotos. Um servidor de processo facilita a depuração de processos em execução no mesmo computador. Um servidor de conexão de kernel facilita o processo de depuração de um alvo de depuração do kernel do Windows que está conectado ao computador que executa o servidor de conexão. Um servidor de processo pode ser iniciado usando o método de API StartProcessServer ou o programa DbgSrv. O método WaitForProcessServerEnd aguardará o término de um servidor de processo iniciado com StartProcessServer. Um servidor de conexão de kernel pode ser ativado usando o programa KdSrv.

Um cliente inteligente é uma instância do motor de depuração atuando como um motor hospedeiro e conectado a um servidor de processos. O método ConnectProcessServer se conectará a um servidor de processo. Uma vez conectado, os métodos descritos em Live User-Mode Targets podem ser usados.

Quando o cliente remoto conclui o uso do servidor de processamento, ele pode se desconectar usando DisconnectProcessServer, ou pode usar EndProcessServer para solicitar que o servidor de processamento seja desligado. Para desligar o servidor de processo do computador em que ele está em execução, use o Gerenciador de Tarefas para encerrar o processo. Se a instância do mecanismo de depurador que usou StartProcessServer ainda estiver em execução, ela poderá usar Executar para emitir o comando de depurador .endsrv 0, que encerrará o servidor de processo (isso é uma exceção ao comportamento habitual de .endsrv, que geralmente não afeta os servidores de processo).

A comunicação entre um servidor de processo e um cliente inteligente normalmente consiste em operações de memória, processador e sistema operacional de baixo nível e solicitações que são enviadas do cliente remoto para o servidor. Em seguida, os resultados são enviados de volta ao cliente.