Partager via


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 de débogage est actif. Sur l’autre ordinateur, le moteur de débogueur agit simplement comme un proxy, relayant les commandes et données vers le moteur hôte.

Toutes les opérations du débogueur , telles que l’exécution de commandes et 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.

Serveurs de débogage et clients de débogage

Un serveur de débogage est une instance du moteur de débogueur qui agit comme hôte et écoute les connexions des clients de débogage. La méthode StartServer indique au moteur de débogage de commencer à écouter des connexions depuis des clients de débogage.

Un client de débogage est une 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 automatiquement joint à la session du débogueur sur le serveur de débogage. La méthode ConnectSession peut être utilisée pour joindre la session, synchroniser 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 noyau sont tous deux des instances du moteur de débogage agissant comme proxys, en attente de connexions de clients intelligents et exécutant des opérations de mémoire, de processeur ou de système d'exploitation demandées 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 exécutant le serveur de connexion. Un serveur de processus peut être démarré à l’aide de la méthode API StartProcessServer ou du programme DbgSrv. La méthode WaitForProcessServerEnd attend la fin d’un serveur de processus démarré avec StartProcessServer. Un serveur de connexion de noyau peut être activé à l’aide du programme KdSrv.

Un client intelligent est une instance du moteur de débogueur agissant en tant que moteur hôte et connecté à un serveur de processus. La méthode ConnectProcessServer se connectera à un serveur de processus. Une fois connecté, les méthodes décrites dans Cibles en mode utilisateur en direct peuvent être utilisées.

Lorsque le client distant est 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 à partir de l’ordinateur sur lequel il s’exécute, utilisez le Gestionnaire des tâches pour mettre fin au processus. Si l’instance du moteur de débogueur qui a utilisé startProcessServer est toujours en cours d’exécution, elle peut utiliser Exécuter 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.