Cibles distantes

Il existe deux formes différentes de débogage à distance, selon l’ordinateur (client ou serveur distant) qui est l’ordinateur hôte. L’ordinateur hôte est l’ordinateur sur lequel le moteur du débogueur est actif. Sur l’autre ordinateur, le moteur de débogueur agit simplement comme un proxy relayant des commandes et des données vers le moteur hôte.

Toutes les opérations de débogueur, telles que l’exécution de commandes et d’extensions, et le chargement de symboles, sont effectuées par le moteur hôte. Une session de débogueur est également relative au moteur hôte.

Pour répertorier les serveurs de débogage et les serveurs de processus en cours d’exécution sur un ordinateur, utilisez OutputServers.

Débogage de serveurs et de clients de débogage

Un serveur de débogage est un instance du moteur de débogueur agissant en tant qu’hôte et à l’écoute des connexions des clients de débogage. La méthode StartServer indique au moteur de débogueur de commencer à écouter les connexions des clients de débogage.

Un client de débogage est un instance du moteur de débogueur agissant en tant que proxy, en envoyant des commandes de débogueur et des E/S au serveur de débogage. La fonction DebugConnect peut être utilisée pour se connecter au serveur de débogage.

L’objet client retourné par DebugConnect n’est pas joint automatiquement à la session de débogueur sur le serveur de débogage. La méthode ConnectSession peut être utilisée pour joindre la session, en synchronisant l’entrée et la sortie.

La communication entre un serveur de débogage et un client de débogage se compose principalement de commandes de débogueur et d’appels RPC envoyés au serveur, et de la sortie de commande renvoyée au client.

Serveurs de traitement, serveurs de connexion au noyau et clients intelligents

Les serveurs de processus et les serveurs de connexion au noyau sont deux instances du moteur de débogueur agissant en tant que proxys, à l’écoute des connexions à partir de clients intelligents et effectuant des opérations de mémoire, de processeur ou de système d’exploitation comme demandé par ces clients distants. Un serveur de processus facilite le débogage des processus qui s’exécutent sur le même ordinateur. Un serveur de connexion de noyau facilite le débogage d’une cible de débogage du noyau Windows connectée à l’ordinateur qui exécute le serveur de connexion. Un serveur de processus peut être démarré à l’aide de la méthode StartProcessServer ou du programme DbgSrv. La méthode WaitForProcessServerEnd attend qu’un serveur de processus démarré avec StartProcessServer se termine. Un serveur de connexion de noyau peut être activé à l’aide du programme KdSrv.

Un client intelligent est un instance du moteur de débogueur agissant en tant que moteur hôte et connecté à un serveur de processus. La méthode ConnectProcessServer se connecte à un serveur de processus. Une fois connectées, les méthodes décrites dans Live User-Mode Targets peuvent être utilisées.

Lorsque le client distant a terminé avec le serveur de processus, il peut se déconnecter à l’aide de DisconnectProcessServer, ou il peut utiliser EndProcessServer pour demander que le serveur de processus s’arrête. Pour arrêter le serveur de processus de l’ordinateur sur lequel il s’exécute, utilisez le Gestionnaire des tâches pour mettre fin au processus. Si le instance du moteur du débogueur qui a utilisé StartProcessServer est toujours en cours d’exécution, il peut utiliser Execute pour émettre la commande de débogueur .endsrv 0, qui met fin au serveur de processus (il s’agit d’une exception au comportement habituel de .endsrv, qui n’affecte généralement pas les serveurs de processus).

La communication entre un serveur de processus et un client intelligent se compose généralement d’opérations de mémoire, de processeur et de système d’exploitation de bas niveau et de requêtes envoyées du client distant au serveur. Leurs résultats sont ensuite renvoyés au client.