Remoteziele

Es gibt zwei verschiedene Formen des Remotedebuggens, je nachdem, welcher Computer (Remoteclient oder -server) der Hostcomputer ist. Der Hostcomputer ist der Computer, auf dem die Debugger-Engine aktiv ist. Auf dem anderen Computer fungiert die Debugger-Engine lediglich als Proxy, der Befehle und Daten an die Host-Engine weitergibt.

Alle Debuggervorgänge , z. B. das Ausführen von Befehlen und Erweiterungen und das Laden von Symbolen, werden von der Host-Engine ausgeführt. Eine Debuggersitzung ist auch relativ zur Host-Engine.

Verwenden Sie OutputServers, um die Debugserver und Prozessserver auf einem Computer auflisten zu können.

Debuggen von Servern und Debuggen von Clients

Ein Debugserver ist eine instance der Debugger-Engine, die als Host fungiert und auf Verbindungen von Debugclients lauscht. Die Methode StartServer weist die Debugger-Engine an, mit dem Lauschen auf Verbindungen von Debugclients zu beginnen.

Ein Debugclient ist eine instance der Debugger-Engine, die als Proxy fungiert und Debuggerbefehle und E/A an den Debugserver sendet. Die Funktion DebugConnect kann verwendet werden, um eine Verbindung mit dem Debugserver herzustellen.

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

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

Verarbeiten von Servern, Kernelverbindungsservern und Smart Clients

Prozessserver und Kernelverbindungsserver sind beide Instanzen der Debugger-Engine, die als Proxys fungieren, auf Verbindungen von smarten Clients lauschen und Arbeitsspeicher-, Prozessor- oder Betriebssystemvorgänge ausführen, wie von diesen Remoteclients angefordert. Ein Prozessserver erleichtert das Debuggen von Prozessen, die auf demselben Computer ausgeführt werden. Ein Kernelverbindungsserver erleichtert das Debuggen eines Windows-Kerneldebuggingziels, das mit dem Computer verbunden ist, auf dem der Verbindungsserver ausgeführt wird. Ein Prozessserver kann mit der Methode StartProcessServer oder dem Programm DbgSrv gestartet werden. Die WaitForProcessServerEnd-Methode wartet auf das Ende eines Prozessservers, der mit StartProcessServer gestartet wurde. Ein Kernelverbindungsserver kann mit dem Programm KdSrv aktiviert werden.

Ein smarter Client ist eine instance der Debugger-Engine, die als Host-Engine fungiert und mit einem Prozessserver verbunden ist. Die ConnectProcessServer-Methode stellt eine Verbindung mit einem Prozessserver her. Nach der Verbindung können die unter Live User-Mode Targets beschriebenen Methoden verwendet werden.

Wenn der Remoteclient mit dem Prozessserver fertig ist, kann er die Verbindung mithilfe von DisconnectProcessServer trennen, oder er kann EndProcessServer verwenden, um das Herunterfahren des Prozessservers anzufordern. Um den Prozessserver von dem Computer herunterzufahren, auf dem er ausgeführt wird, verwenden Sie den Task-Manager, um den Prozess zu beenden. Wenn die instance der Debugger-Engine, die StartProcessServer verwendet hat, weiterhin ausgeführt wird, kann sie Ausführen verwenden, um den Debuggerbefehl .endsrv 0 auszusetzen, der den Prozessserver beendet (dies ist eine Ausnahme vom üblichen Verhalten von .endsrv, das sich in der Regel nicht auf Prozessserver auswirkt).

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