Compartir a través de


Destinos remotos

Hay dos formas diferentes de depuración remota, en función del equipo (cliente remoto o servidor) que sea el equipo host. El equipo host es el equipo en el que está activo el motor del depurador. En el otro equipo, el motor del depurador simplemente actúa como un proxy que retransmite comandos y datos al motor del host.

Todas las operaciones del depurador, como ejecutar comandos y extensiones, y cargar símbolos, se realizan mediante el motor del host. Una sesión del depurador también es relativa al motor del host.

Para enumerar los servidores de depuración y los servidores de procesos que se ejecutan actualmente en un equipo, use OutputServers.

Servidores de depuración y clientes de depuración

Un servidor de depuración es una instancia del motor del depurador que actúa como host y escucha las solicitudes de conexión de los clientes de depuración. El método StartServer indicará al motor del depurador que empiece a escuchar las conexiones de los clientes de depuración.

Un cliente de depuración es una instancia del motor del depurador que actúa como proxy, enviando comandos de depurador y E/S al servidor de depuración. La función DebugConnect se puede usar para conectarse al servidor de depuración.

El objeto cliente devuelto por DebugConnect no se une automáticamente a la sesión del depurador en el servidor de depuración. El método connectSession se puede usar para unirse a la sesión, sincronizar la entrada y la salida.

La comunicación entre un servidor de depuración y un cliente de depuración consta principalmente de comandos del depurador y llamadas RPC enviadas al servidor y la salida del comando enviada de vuelta al cliente.

Servidores de procesos, servidores de conexión de kernel y clientes inteligentes

Los servidores de procesos y servidores de conexión de kernel son instancias del motor del depurador que actúan como proxies, escuchan conexiones de clientes inteligentes y realizan operaciones de memoria, procesador o sistema operativo según lo solicitado por estos clientes remotos. Un servidor de procesos facilita la depuración de procesos que se ejecutan en el mismo equipo. Un servidor de conexión de kernel facilita la depuración de un destino de depuración de kernel de Windows que está conectado al equipo que ejecuta el servidor de conexión. Un servidor de procesos se puede iniciar mediante el método de API StartProcessServer o el programa DbgSrv. El método WaitForProcessServerEnd esperará a que un servidor de procesos iniciado con StartProcessServer finalice. Un servidor de conexión de kernel se puede activar mediante el programa KdSrv.

Un cliente inteligente es una instancia del motor del depurador que actúa como un motor del host y está conectado a un servidor de procesos. El método ConnectProcessServer se conectará a un servidor de procesos. Una vez conectado, se pueden usar los métodos descritos en Live User-Mode Targets.

Cuando el cliente remoto finaliza con el servidor de procesos, puede desconectarse mediante DisconnectProcessServer, o puede usar EndProcessServer para solicitar que se apague el servidor de procesos. Para apagar el servidor de procesos desde el equipo en el que se ejecuta, use el Administrador de tareas para finalizar el proceso. Si la instancia del motor del depurador que usó StartProcessServer sigue en ejecución, puede usar Ejecutar para emitir el comando del depurador .endsrv 0, que finalizará el servidor de procesos (se trata de una excepción al comportamiento habitual de .endsrv, que generalmente no afecta a los servidores de procesos).

La comunicación entre un servidor de procesos y un cliente inteligente normalmente consta de operaciones de sistema operativo, procesador y memoria de bajo nivel que se envían desde el cliente remoto al servidor. Sus resultados se devuelven al cliente.