Freigeben über


Entfernte Ziele

Es gibt zwei verschiedene Arten von Remotedebugging, je nachdem, welcher Computer (Remoteclient oder Server) der Hostcomputer ist. Der Hostcomputer ist der Computer, auf dem das Debuggermodul aktiv ist. Auf dem anderen Computer fungiert die Debugging-Engine lediglich als Proxy, der Befehle und Daten an die Host-Engine weiterleitet.

Alle Debugger-Operationen - wie die Ausführung von Befehlen und Erweiterungen, und das Laden von Symbolen - werden von der Host-Engine durchgeführt. Eine Debugger-Sitzung ist auch relativ zur Host-Engine.

Um die Debugging- und Prozessserver aufzulisten, die derzeit auf einem Computer laufen, verwenden Sie Ausgangsserver.

Debuggen von Servern und Debuggen von Clients

Ein Debugging-Server ist eine Instanz der Debugger-Engine, die als Host fungiert und auf Verbindungen von Debugging-Clients wartet. Die Methode StartServer teilt der Debugger-Engine mit, dass sie auf Verbindungen von Debugging-Clients warten soll.

Ein Debugclient ist eine Instanz des Debuggermoduls, das als Proxy fungiert und Debuggerbefehle und E/A an den Debugserver sendet. Die Funktion DebugConnect- kann zum Herstellen einer Verbindung mit dem Debugserver verwendet werden.

Das von DebugConnect zurückgegebene Clientobjekt wird nicht automatisch mit der Debuggersitzung auf dem Debugserver verknüpft. Die Methode ConnectSession kann verwendet werden, um an der Sitzung teilzunehmen, Eingabe und Ausgabe zu synchronisieren.

Die Kommunikation zwischen einem Debugserver und einem Debuggingclient besteht hauptsächlich aus Debuggerbefehlen und RPC-Aufrufen, die an den Server gesendet werden, und der an den Client gesendeten Befehlsausgabe.

Prozessserver, Kernelverbindungsserver und intelligente Clients

Prozessdiener und Kernel-Verbindungsserver sind beides Instanzen der Debugger-Engine, die als Proxys fungieren, auf Verbindungen von intelligenten Clients warten und Speicher-, Prozessor- oder Betriebssystemoperationen ausführen, die von diesen entfernten Clients angefordert werden. Ein Prozessserver erleichtert das Debuggen von Prozessen, die auf demselben Computer ausgeführt werden. A Kernel-Verbindungsserver erleichtert das Debuggen eines Windows-Kernel-Debugging-Ziels, das mit dem Computer verbunden ist, auf dem der Verbindungsserver läuft. Ein Prozessserver kann mit der API-Methode StartProcessServer oder dem Programm DbgSrvgestartet werden. Die Methode WaitForProcessServerEnd wartet darauf, dass ein mit StartProcessServer gestarteter Prozessserver beendet wird. Ein Kernelverbindungsserver kann mit dem Programm KdSrvaktiviert werden.

Ein smart client ist eine Instanz des Debuggermoduls, das als Hostmodul fungiert und mit einem Prozessserver verbunden ist. Die Methode ConnectProcessServer stellt eine Verbindung mit einem Prozessserver her. Sobald die Verbindung hergestellt ist, können die in Live-Ziele im Benutzermodus verwendet werden können.

Wenn der Remote-Client mit dem Prozess-Server fertig ist, kann er die Verbindung mit DisconnectProcessServer, oder es kann EndProcessServer um die Schließung des Prozess-Servers zu beantragen. Um den Prozessserver vom Computer herunterzufahren, auf dem er ausgeführt wird, verwenden Sie den Task-Manager, um den Prozess zu beenden. Wenn die Instanz des Debuggermotors, die StartProcessServer verwendet hat, weiterhin läuft, kann sie Execute verwenden, um den Debuggerbefehl .endsrv 0auszugeben, wodurch der Prozessserver beendet wird. Dies ist eine Ausnahme vom üblichen Verhalten von .endsrv, das sich im Allgemeinen nicht auf Prozessserver auswirkt.

Die Kommunikation zwischen einem Prozessserver und einem intelligenten Client besteht in der Regel aus Vorgängen mit niedriger Speicherebene, Prozessor und Betriebssystem sowie Anforderungen, die vom Remoteclient an den Server gesendet werden. Ihre Ergebnisse werden dann an den Client zurückgesendet.