Freigeben über


Steuern einer Remote-Debugging-Sitzung

Nachdem die Remotesitzung gestartet wurde, können Befehle entweder in den Debugserver oder den Debugclient eingegeben werden. Wenn mehrere Clients vorhanden sind, kann jeder von ihnen Befehle eingeben. Sobald die EINGABETASTE gedrückt wurde, wird der Befehl an den Debugserver übertragen und ausgeführt.

Wenn ein Benutzer einen Befehl eingibt, sehen alle Benutzer den Befehl selbst und seine Ausgabe. Wenn dieser Befehl von einem Debugging-Client ausgegeben wurde, wird allen anderen Benutzern vor dem Befehl eine Kennung angezeigt, die angibt, welcher Benutzer den Befehl ausgegeben hat. Befehle, die vom Debugserver ausgegeben wurden, weisen dieses Präfix nicht auf.

Nachdem ein Befehl von einem Benutzer ausgeführt wurde, erhalten andere Benutzer, die über KD oder CDB verbunden sind, keine neue Eingabeaufforderung. Andererseits sehen Benutzer von WinDbg die Eingabeaufforderung im unteren Bereich des Debugger-Befehlsfensters kontinuierlich, auch wenn das Debugger-Modul ausgeführt wird. Keine dieser Gründe sollte eine Ursache für Alarme sein; jeder Benutzer kann jederzeit einen Befehl eingeben, und das Modul führt diese Befehle in der Reihenfolge aus, in der sie empfangen wurden.

Aktionen, die über die WinDbg-Schnittstelle ausgeführt werden, werden auch vom Debugserver ausgeführt.

Kommunikation zwischen Benutzern

Wenn ein neuer Debugclient eine Verbindung mit der Sitzung herstellt, wird allen anderen Benutzern eine Meldung angezeigt, dass dieser Client verbunden ist. Es wird keine Meldung angezeigt, wenn ein Client die Verbindung trennt.

Der Befehl .clients (List Debugging Clients) Befehl listet alle Clients auf, die derzeit mit der Debugsitzung verbunden sind.

Der Befehl .echo (Echo Comment) ist nützlich, um Nachrichten von einem Benutzer an einen anderen zu senden.

WinDbg-Arbeitsbereiche

Wenn WinDbg als Debugclient verwendet wird, speichert sein Arbeitsbereich nur Werte, die über die grafische Benutzeroberfläche festgelegt sind. Änderungen, die über das Fenster "Debuggerbefehl" vorgenommen wurden, werden nicht gespeichert. (Dadurch wird sichergestellt, dass nur vom lokalen Client vorgenommene Änderungen angezeigt werden, da das Fenster "Debuggerbefehl" Eingaben von allen Clients sowie vom Debugserver akzeptiert.)

Dateipfade

Der Symbolpfad, der Pfad des ausführbaren Images und der Erweiterungs-DLL-Pfad werden als Dateipfade relativ zum Installationsordner "Debugtools für Windows" auf dem Debugserver interpretiert.

Wenn WinDbg als Debugclient verwendet wird, verfügt es auch über einen eigenen lokalen Quellpfad. Alle quellbezogenen Befehle greifen auf die Quelldateien auf dem lokalen Computer zu. Daher müssen die richtigen Pfade auf jedem Client oder Server festgelegt werden, der Quellbefehle verwendet.

Dieses Mehrpfadsystem ermöglicht es einem Debuggingclient, quellbezogene Befehle zu verwenden, ohne die Quelldateien tatsächlich für andere Clients oder für den Server freizugeben. Dies ist nützlich, wenn private oder vertrauliche Quelldateien vorhanden sind, auf die einer der Benutzer Zugriff hat.

Abbrechen des Debugging-Servers

Der befehl .endsrv (End Debugging Server) kann verwendet werden, um einen Debugserver zu beenden. Wenn der Debugger mehrere Debugserver eingerichtet hat, können Sie einige davon beenden, während andere weiterlaufen.

Durch das Beenden eines Servers wird verhindert, dass zukünftige Clients sich mit ihm verbinden können. Es werden keine Clients abgetrennt, die derzeit mit dem Server verbunden sind.

Schließen des Debuggers und Beenden der Sitzung

Um einen Debugging-Client zu verlassen, ohne den Server zu stoppen, müssen Sie einen Befehl von diesem speziellen Client ausführen. Zum Schließen nutzen Sie die STRG+B-Tastenkombination, wenn dieser Client KD oder CDB ist. Wenn Sie ein Skript zum Ausführen von KD oder CDB verwenden, verwenden Sie .remote_exit (Exit Debugging Client). Wenn dieser Client WinDbg ist, wählen Sie Beenden aus dem Dateimenü aus, um den Vorgang zu beenden.

Um die gesamte Sitzung zu beenden und den Debugserver zu beenden, verwenden Sie den befehl q (Beenden). Dieser Befehl kann von einem beliebigen Server oder Client eingegeben werden und beendet die gesamte Sitzung für alle Benutzer.

Wichtig

Es gibt zusätzliche wichtige Sicherheitsaspekte bei der Verwendung von Remotedebugging, weitere Informationen, einschließlich Informationen zum Aktivieren des sicheren Modus, finden Sie unter Sicherheit während des Remotedebuggings und Sicherheitsüberlegungen für Windows-Debuggingtools.