Verwenden von Debuggerbefehlen

Dies beschreibt die Verwendung von Debuggerbefehlen. WinDbg ist ein Debugger, der verwendet werden kann, um Absturzabbilder zu analysieren, Livebenutzermodus- und Kernelmoduscode zu debuggen und CPU-Register und Arbeitsspeicher zu untersuchen. Weitere Informationen finden Sie unter WinDbg Overview.

Informationen zum Installieren des Debuggers finden Sie unter Installieren des Windows-Debuggers.

Informationen zu den ersten Schritten mit WinDbg finden Sie unter Erste Schritte mit Windows Debugging.

WinDbg Debugger-Befehlsfenster

Für WinDbg bezieht sich "Debuggerbefehlsfenster" auf das Fenster, das in der Titelleiste als "Befehl" bezeichnet wird. Dieses Fenster enthält zwei Bereiche:

  • Im kleinen unteren Bereich geben Sie Befehle ein.

  • Im großen oberen Bereich zeigen Sie die Befehlsausgabe an.

Dieses Fenster ist immer am Anfang einer Debugsitzung geöffnet. Sie können dieses Fenster erneut öffnen oder wechseln, indem Sie im Menü Ansichtdie Option Befehl auswählen, ALT+1 drücken oder die Schaltfläche Befehl (ALT+1) auswählen (Screenshot der Schaltfläche Debuggerbefehlsfenster).

Sie können die NACH-OBEN- und NACH-UNTEN-TASTE verwenden, um durch den Befehlsverlauf zu scrollen. Wenn ein vorheriger Befehl angezeigt wird, können Sie ihn bearbeiten und dann die EINGABETASTE drücken, um den vorherigen Befehl (oder die bearbeitete Version des vorherigen Befehls) auszuführen. Der Cursor muss sich nicht am Ende der Zeile befinden, damit diese Prozedur ordnungsgemäß funktioniert.

KD oder CDB

Für KD oder CDB bezieht sich "Debuggerbefehlsfenster" auf das gesamte Fenster. Sie geben befehle an der Eingabeaufforderung am unteren Rand des Fensters ein. Wenn die Befehle über eine Ausgabe verfügen, zeigt das Fenster die Ausgabe und dann erneut die Eingabeaufforderung an.

Debugger-Eingabeaufforderung

Beim Debuggen im Benutzermodus sieht die Eingabeaufforderung im Fenster Debuggerbefehl wie im folgenden Beispiel aus.

2:005>

Im vorherigen Beispiel ist 2 die aktuelle Prozessnummer und 005 die aktuelle Threadnummer.

Wenn Sie den Debugger an mehrere Computer anfügen, wird die Systemnummer vor dem Prozess und der Threadnummer angegeben, wie im folgenden Beispiel gezeigt.

3:2:005>

In diesem Beispiel ist 3 die aktuelle Systemnummer, 2 die aktuelle Prozessnummer und 005 die aktuelle Threadnummer.

Wenn Sie das Debuggen im Kernelmodus auf einem Zielcomputer ausführen, der nur über einen Prozessor verfügt, sieht die Eingabeaufforderung wie im folgenden Beispiel aus.

kd>

Wenn der Zielcomputer jedoch über mehrere Prozessoren verfügt, wird die Anzahl des aktuellen Prozessors wie im folgenden Beispiel vor der Eingabeaufforderung angezeigt.

0: kd>

Wenn der Debugger mit der Verarbeitung eines zuvor ausgegebenen Befehls beschäftigt ist, werden neue Befehle vorübergehend nicht verarbeitet, obwohl sie dem Befehlspuffer hinzugefügt werden können. Darüber hinaus können Sie weiterhin Steuertasten in KD und CDB verwenden, und Sie können weiterhin Menübefehle und Tastenkombinationen in WinDbg verwenden. Wenn sich KD oder CDB im Status "Ausgelastet" befindet, wird keine Eingabeaufforderung angezeigt. Wenn Sich WinDbg in diesem Status beschäftigt befindet, wird der folgende Indikator anstelle der Eingabeaufforderung angezeigt:

*BUSY*

Sie können den Befehl .pcmd (Set Prompt Command) verwenden, um dieser Eingabeaufforderung Text hinzuzufügen.

Arten von Befehlen

WinDbg, KD und CDB unterstützen eine Vielzahl von Befehlen. Einige Befehle werden zwischen den Debuggern gemeinsam verwendet, und einige sind nur für einen oder zwei debuggers verfügbar.

Einige Befehle sind nur beim Livedebuggen verfügbar, und andere Befehle sind nur verfügbar, wenn Sie eine Dumpdatei debuggen.

Einige Befehle sind nur während des Debuggens im Benutzermodus verfügbar, und andere Befehle sind nur beim Debuggen im Kernelmodus verfügbar.

Einige Befehle sind nur verfügbar, wenn das Ziel auf bestimmten Prozessoren ausgeführt wird. Weitere Informationen zu allen Befehlen und ihren Einschränkungen finden Sie unter Debuggerbefehle.

Bearbeiten, Wiederholen und Abbrechen von Befehlen

Sie können Standardbearbeitungsschlüssel verwenden, wenn Sie einen Befehl eingeben:

  • Verwenden Sie die NACH-OBEN- und NACH-UNTEN-TASTE, um nach vorherigen Befehlen zu suchen.

  • Bearbeiten Sie den aktuellen Befehl mit den TASTEN BACKSPACE, DELETE, INSERT und NACH-LINKS- und NACH-RECHTS-TASTE.

  • Drücken Sie die ESC-TASTE, um die aktuelle Zeile zu löschen.

Sie können die TAB-TASTE drücken, um Ihren Texteintrag automatisch abzuschließen. Drücken Sie in einem der Debugger die TAB-TASTE, nachdem Sie mindestens ein Zeichen eingegeben haben, um einen Befehl automatisch abzuschließen. Drücken Sie wiederholt die TAB-TASTE, um die Textvervollständigungsoptionen zu durchlaufen, halten Sie die UMSCHALTTASTE gedrückt, und drücken Sie DIE TAB-TASTE, um rückwärts zu fahren. Sie können auch Feldhalterzeichen im Text verwenden und die TAB-TASTE drücken, um den vollständigen Satz von Textvervollständigensoptionen zu erweitern. Wenn Sie beispielsweise fo*!ba eingeben und dann TAB drücken, wird der Debugger auf den Satz aller Symbole erweitert, die mit "ba" beginnen, in allen Modulen mit Modulnamen, die mit "fo" beginnen. Als weiteres Beispiel können Sie alle Erweiterungsbefehle ausführen, die "prcb" enthalten, indem Sie !*prcb eingeben und dann DIE TAB-TASTE drücken.

Wenn Sie die TAB-TASTE zum Ausführen der Texterfüllung verwenden, wird der Text mit einem Punkt (.) abgeglichen, wenn Ihr Textfragment mit einem Punkt beginnt. Wenn Ihr Textfragment mit einem Ausrufezeichen (!) beginnt, wird der Text mit einem Erweiterungsbefehl abgeglichen. Andernfalls wird der Text mit einem Symbol abgeglichen. Wenn Sie die TAB-TASTE zum Eingeben von Symbolen verwenden, werden durch Drücken der TAB-TASTE Code- und Typsymbole und Modulnamen abgeschlossen. Wenn kein Modulname sichtbar ist, werden lokale Symbole und Modulnamen abgeschlossen. Wenn ein Modul- oder Modulmuster angegeben ist, werden code- und typsymbole aus allen Übereinstimmungen durch die Symbolvervollständigen abgeschlossen.

Sie können im Fenster Debuggerbefehl auswählen und halten (oder mit der rechten Maustaste darauf klicken), um den Inhalt der Zwischenablage automatisch in den eingegebenen Befehl einzufügen.

Die maximale Befehlslänge beträgt 4096 Zeichen. Wenn Sie jedoch den Benutzermodusdebugger über den Kerneldebugger steuern, beträgt die maximale Zeilenlänge 512 Zeichen.

Drücken Sie in CDB und KD die EINGABETASTE, um den vorherigen Befehl zu wiederholen. In WinDbg können Sie dieses Verhalten aktivieren oder deaktivieren. Weitere Informationen zu diesem Verhalten finden Sie unter ENTER (Repeat Last Command).

Wenn der letzte von Ihnen ausgegebene Befehl eine lange Anzeige aufweist und Sie sie abschneiden möchten, verwenden Sie die STRG+C-TASTE in CDB oder KD. Verwenden Sie in WinDbg Debuggen | Brechen Sie , oder drücken Sie STRG+BREAK.

Beim Debuggen im Kernelmodus können Sie Befehle über die Tastatur des Zielcomputers abbrechen, indem Sie STRG+C drücken.

Sie können den Befehl .cls (Bildschirm löschen) verwenden, um den gesamten Text aus dem Fenster Debuggerbefehl zu löschen. Mit diesem Befehl wird der gesamte Befehlsverlauf gelöscht. In WinDbg können Sie den Befehlsverlauf mithilfe von Bearbeiten | Deaktivieren Sie den Befehl Befehlsausgabe , oder klicken Sie im Kontextmenü des Fensters Debuggerbefehl auf Befehlsausgabe löschen .

Ausdruckssyntax

Viele Befehle und Erweiterungsbefehle akzeptieren Ausdrücke als Ihre Argumente. Der Debugger wertet diese Ausdrücke aus, bevor er den Befehl ausführt. Weitere Informationen zu Ausdrücken finden Sie unter Auswerten von Ausdrücken.

Aliase

Aliase sind Textmakros, mit denen Sie vermeiden können, komplexe Ausdrücke neu eingeben zu müssen. Es gibt zwei Arten von Aliasen. Weitere Informationen zu Aliasen finden Sie unter Verwenden von Aliasen.

Self-Repeating-Befehle

Sie können die folgenden Befehle verwenden, um eine Aktion zu wiederholen oder andere Befehle bedingt auszuführen:

Weitere Informationen zu den einzelnen Befehlen finden Sie in den einzelnen Befehlsthemen.

Steuern des Bildlaufs

Sie können die Bildlaufleiste verwenden, um Ihre vorherigen Befehle und deren Ausgabe anzuzeigen.

Wenn Sie CDB oder KD verwenden, scrollt jeder Tastatureintrag automatisch nach unten im Debuggerbefehlsfenster zurück nach unten.

In WinDbg scrollt die Anzeige automatisch nach unten, wenn ein Befehl eine Ausgabe erzeugt oder Sie die EINGABETASTE drücken. Wenn Sie diesen automatischen Bildlauf deaktivieren möchten, aktivieren Sie im Menü Ansicht die Option Optionen, und deaktivieren Sie dann das Kontrollkästchen Automatisch scrollen.

WinDbg-Textfeatures

In WinDbg können Sie mehrere zusätzliche Features verwenden, um die Anzeige von Text im Debuggerbefehlsfenster zu ändern. Sie können auf einige dieser Features im WinDbg-Fenster zugreifen, einige im Kontextmenü im Fenster Debuggerbefehl und einige, indem Sie das entsprechende Menüsymbol auswählen.

  • Der Befehl Word Umbruch im Kontextmenü aktiviert und deaktiviert die Wortumbruch-status. Dieser Befehl wirkt sich auf das gesamte Fenster aus, nicht nur auf Befehle, die Sie verwenden, nachdem dieser Zustand geändert wurde. Da viele Befehle und Erweiterungen formatierte Anzeigen erzeugen, wird in der Regel kein Wortumbruch empfohlen.

  • Bearbeiten | Zum Menübefehl "Befehlsausgabe hinzufügen " fügt im Fenster Debuggerbefehl einen Kommentar hinzu. Der Befehl Zum Befehlsausgabe hinzufügen im Kontextmenü hat die gleiche Auswirkung.

  • Sie können die Farben anpassen, die für den Text und den Hintergrund des Debuggerbefehlsfensters verwendet werden. Sie können unterschiedliche Farben für verschiedene Arten von Text angeben. Beispielsweise können Sie die automatische Registerausgabe in einer Farbe, Fehlermeldungen in einer anderen Farbe und DbgPrint-Nachrichten in einer dritten Farbe anzeigen.

  • Sie können alle Features verwenden, die den Fenstern für Debuginformationen von WinDbg gemeinsam sind, z. B. das Anpassen der Schriftarten und die Verwendung spezieller Bearbeitungsbefehle.

Remote Debugging

Wenn Sie das Remotedebuggen über den Debugger ausführen, kann der Debugclient auf eine begrenzte Anzahl von Befehlen zugreifen. Um die Anzahl der Befehle zu ändern, auf die der Client zugreifen kann, verwenden Sie die Befehlszeilenoption-clines oder die Umgebungsvariable _NT_DEBUG_HISTORY_SIZE.