Alvos remotos
Existem duas formas diferentes de depuração remota, dependendo de qual computador (cliente ou servidor remoto) é o computador host. O computador host é o computador no qual o mecanismo de depurador está ativo. No outro computador, o mecanismo de depurador está meramente agindo como um proxy retransmitindo comandos e dados para o mecanismo 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 motor anfitrião. Uma sessão do depurador também é relativa ao mecanismo do host.
Para listar os servidores de depuração e os servidores de processo atualmente em execução em um computador, use OutputServers.
Depuração de Servidores e Depuração de 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 indicará ao mecanismo de depuração para começar a ouvir conexões de clientes de depuração.
Um de cliente de depuração
O objeto cliente retornado pelo DebugConnect não é associado automaticamente à 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 do depurador e chamadas RPC enviadas ao servidor e saída de comando enviada de volta ao cliente.
Servidores de processo, servidores de conexão do kernel e clientes inteligentes
Servidores de processos e servidores de ligação do kernel são ambas as instâncias do mecanismo de depuração atuando como proxies, ouvindo conexões de clientes inteligentes e executando operações de memória, processador ou sistema operativo a pedido desses clientes remotos. Um servidor de processos facilita a depuração de processos que estão a ser executados no mesmo computador. Um servidor de ligação do kernel facilita a depuração de um alvo de depuração do kernel do Windows que está ligado ao computador que executa o servidor de ligação. Um servidor de processo pode ser iniciado usando o método API StartProcessServer ou o programa DbgSrv. O método WaitForProcessServerEnd aguardará pelo término de um servidor de processo que foi iniciado com StartProcessServer. Um servidor de conexão do kernel pode ser ativado usando o programa KdSrv.
Um cliente inteligente é uma instância do motor de depuração atuando como motor anfitrião 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 terminar com o servidor de processo, ele pode se desconectar usando DisconnectProcessServerou pode usar EndProcessServer para solicitar que o servidor de processo seja desligado. Para desligar o servidor de processo do computador em que está a ser executado, utilize o Gestor de Tarefas para terminar o processo. Se a instância do mecanismo de depurador que usou StartProcessServer ainda estiver em execução, ele poderá usar Execute para emitir o comando do depurador .endsrv 0, que encerrará o servidor de processo (essa é uma exceção ao comportamento usual do .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 e solicitações de memória de baixo nível, processador e sistema operacional que são enviadas do cliente remoto para o servidor. Os resultados são então enviados de volta ao cliente.