Verwenden von Debuggerbefehlen
Dies beschreibt die Verwendung von Debuggerbefehlen. WinDbg ist ein Debugger, der verwendet werden kann, um Absturzabbilder zu analysieren, den Livebenutzermodus und den Kernelmoduscode zu debuggen und CPU-Register und Arbeitsspeicher zu untersuchen. Weitere Informationen finden Sie unter Win Dbg-Übersicht.
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
Bei WinDbg bezieht sich "Debugger-Befehlsfenster" auf das Fenster mit der Bezeichnung "Befehl" in der Titelleiste. 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 zu diesem Fenster wechseln, indem Sie Befehl im Menü "Ansicht" auswählen, ALT+1 drücken oder die Schaltfläche "Befehl(ALT+1)" auswählen (
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 nicht am Ende der Zeile stehen, damit dieses Verfahren ordnungsgemäß funktioniert.
KD oder CDB
Bei KD oder CDB bezieht sich "Debugger-Befehlsfenster" 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 an und zeigt dann die Eingabeaufforderung erneut an.
Eingabeaufforderung im Debugger-Fenster
Wenn Sie das Debuggen im Benutzermodus ausführen, sieht die Eingabeaufforderung im Fenster "Debuggerbefehl" wie im folgenden Beispiel aus.
2:005>
Im vorherigen Beispiel ist 2 die aktuelle Prozessnummer, und 005 ist die aktuelle Threadnummer.
Wenn Sie den Debugger an mehrere Computer anfügen, wird die Systemnummer wie im folgenden Beispiel vor dem Prozess und der Threadnummer eingeschlossen.
3:2:005>
In diesem Beispiel ist 3 die aktuelle Systemnummer, 2 ist die aktuelle Prozessnummer, und 005 ist die aktuelle Threadnummer.
Wenn Sie das Debuggen im Kernelmodus auf einem Zielcomputer mit nur einem Prozessor ausführen, 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 ausgestellten 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 in diesem Beschäftigt-Zustand befindet, wird keine Eingabeaufforderung angezeigt. Wenn Sich WinDbg in diesem Beschäftigt-Zustand befindet, wird der folgende Indikator anstelle der Eingabeaufforderung angezeigt:
*BUSY*
Sie können den BEFEHL PCMD (Eingabeaufforderungsbefehl festlegen) 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 der Debugger verfügbar.
Einige Befehle sind nur im Livedebugging verfügbar, und andere Befehle sind nur verfügbar, wenn Sie eine Speicherabbilddatei debuggen.
Einige Befehle sind nur während des Debuggens im Benutzermodus verfügbar, und andere Befehle sind nur beim Kernelmodusdebugging verfügbar.
Einige Befehle sind nur verfügbar, wenn das Ziel auf bestimmten Prozessoren ausgeführt wird. Weitere Informationen zu allen Befehlen und deren Einschränkungen finden Sie unter Debuggerbefehle.
Befehle "Bearbeiten", "Wiederholen" und "Abbrechen"
Sie können standardbearbeitungsschlüssel verwenden, wenn Sie einen Befehl eingeben:
Verwenden Sie die NACH-OBEN- und NACH-UNTEN-TASTE, um vorherige Befehle zu finden.
Bearbeiten Sie den aktuellen Befehl mit den TASTEN RÜCKTASTE, ENTF, EINFÜGEN und NACH-LINKS und NACH-RECHTS.
Drücken Sie die ESC-TASTE, um die aktuelle Zeile zu löschen.
Sie können die TAB-TASTE drücken, um die Texteingabe 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 Textabschlussoptionen zu durchlaufen, und halten Sie die UMSCHALTTASTE gedrückt, und drücken Sie TAB, um rückwärts zu wechseln. Sie können auch Wildcardzeichen im Text verwenden und die TAB-TASTE drücken, um zu den vollständigen Textabschlussoptionen zu erweitern. Wenn Sie z. B. fo*!ba eingeben und dann die TAB-TASTE 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 des Textabschlusses verwenden, beginnt ihr Textfragment mit einem Punkt (.), wird der Text mit einem Punktbefehl abgeglichen. 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, schließt das Drücken der TAB-TASTE den Code und die Eingabe von Symbolen und Modulnamen ab. Wenn kein Modulname sichtbar ist, werden lokale Symbole und Modulnamen abgeschlossen. Wenn ein Modul- oder Modulmuster angegeben wird, schließt der Symbolabschluss Code und Typsymbole aus allen Übereinstimmungen ab.
Sie können im Fenster "Debuggerbefehl" den Inhalt der Zwischenablage automatisch in den befehl einfügen, den Sie eingeben, und halten (oder klicken Sie mit der rechten Maustaste darauf).
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 selbst, um den vorherigen Befehl zu wiederholen. In WinDbg können Sie dieses Verhalten aktivieren oder deaktivieren. Weitere Informationen zu diesem Verhalten finden Sie unter EINGABETASTE (Letzter Befehl wiederholen).
Wenn der letzte von Ihnen ausgegebene Befehl eine lange Anzeige darstellt und Sie ihn abschneiden möchten, verwenden Sie die STRG+C-Taste in CDB oder KD. Verwenden Sie in WinDbg Debug | Umbrechen oder drücken Sie STRG+UMBRUCH.
Im Kernelmodusdebugging können Sie Befehle über die Tastatur des Zielcomputers abbrechen, indem Sie STRG+C drücken.
Sie können den BEFEHL CLS (Clear Screen) 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" | löschen. Befehl 'Befehlsausgabe löschen' oder durch Auswählen der Befehlsausgabe löschen im Kontextmenü des Fensters 'Debuggerbefehle'.
Ausdruckssyntax
Viele Befehle und Erweiterungsbefehle akzeptieren Ausdrücke als ihre Argumente. Der Debugger wertet diese Ausdrücke aus, bevor der Befehl ausgeführt wird. 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 einschreiben zu müssen. Es gibt zwei Arten von Aliasen. Weitere Informationen zu Aliasen finden Sie unter Verwenden von Aliasen.
Selbstwiederholungsbefehle
Sie können die folgenden Befehle verwenden, um eine Aktion zu wiederholen oder andere Befehle bedingt auszuführen:
Der Befehl "!list extension"
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, führt jeder Tastatureintrag automatisch einen Bildlauf nach unten im Debugger-Befehlsfenster nach unten durch.
In WinDbg führt die Anzeige automatisch einen Bildlauf nach unten durch, wenn ein Befehl eine Ausgabe erzeugt oder Sie die EINGABETASTE drücken. Wenn Sie diesen automatischen Bildlauf deaktivieren möchten, aktivieren Sie die Optionen im Menü "Ansicht ", und deaktivieren Sie dann das Kontrollkästchen "Automatisch scrollen ".
WinDbg-Textfeatures
In WinDbg können Sie mehrere zusätzliche Features verwenden, um zu ändern, wie Text im Fenster "Debuggerbefehl" angezeigt wird. Sie können auf einige dieser Features im WinDbg-Fenster, einige im Kontextmenü im Fenster "Debuggerbefehl" und einige zugreifen, indem Sie das entsprechende Menüsymbol auswählen.
Der Word-Umbruchbefehl im Kontextmenü aktiviert und deaktiviert den Wortumbruchstatus . Dieser Befehl wirkt sich auf das gesamte Fenster aus, nicht nur auf Befehle, die Sie nach dem Ändern dieses Zustands verwenden. Da viele Befehle und Erweiterungen formatierte Displays erzeugen, wird in der Regel kein Wortumbruch empfohlen.
Die Bearbeitung | Befehl "Zu Befehl Ausgabe hinzufügen" fügt im Fenster "Debuggerbefehl" einen Kommentar hinzu. Der Befehl "Zu Befehl hinzufügen" im Kontextmenü hat denselben Effekt.
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 unterschiedliche Textarten angeben. Sie können z. B. 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 winDbgs Debuginformationsfenstern gemeinsam haben, z. B. das Anpassen der Schriftarten und die Verwendung spezieller Bearbeitungsbefehle.
Remote-Debugging
Wenn Sie Remotedebugging ü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.