Verwenden der Debuggermarkupsprache

Debuggerbefehle können die Ausgabe als Nur-Text oder in einem erweiterten Format bereitstellen, das Debugger Markup Language (DML) verwendet. Die mit DML erweiterte Ausgabe enthält Links, auf die Sie klicken können, um verwandte Befehle auszuführen.

DML ist in Windows 10 und höher verfügbar.

DML-fähige Befehle

Die folgenden Befehle können eine DML-Ausgabe generieren:

Der LmD-Befehl ist ein Beispiel für einen Befehl, der eine DML-Ausgabe bereitstellen kann. Der Befehl lmD zeigt eine Liste der geladenen Module an. Wie in der folgenden Abbildung gezeigt, ist jeder Modulname ein Link, auf den Sie klicken können, um ausführlichere Informationen zum Modul zu erhalten.

Screenshot der LmD-Befehlsausgabe im Debugger.

Die folgende Abbildung zeigt das Ergebnis des Klickens auf den Usbuhci-Link . Die Ausgabe enthält zusätzliche Links, mit denen Sie weitere Details des usbuhci-Moduls erkunden können.

Screenshot: Details des usbuhci-Moduls im Debugger.

Aktivieren und Deaktivieren von DML

Mit dem Befehl .prefer_dml wird DML aktiviert oder deaktiviert. Wenn DML aktiviert ist (.prefer_dml 1), generieren Befehle, die eine DML-Ausgabe generieren können, standardmäßig eine DML-Ausgabe.

Konsolenerweiterungen

Alle Windows-Debugger verfügen jetzt über Befehlsausgabebereiche, die die DML-Analyse unterstützen. In windbg unterstützt das Befehlsfenster das gesamte DML-Verhalten und zeigt Farben, Schriftarten und Links an. Die Konsolendebugger ntsd, cdb und kd unterstützen nur die Farbattribute von DML und nur, wenn sie in einer true-Konsole mit aktiviertem Farbmodus ausgeführt werden. Debugger mit umgeleiteten E/A-, ntsd-d- oder remote.exe-Sitzungen zeigen keine Farben an.

Farbmodus des Konsolendebuggers

Die Konsolendebugger, ntsd, cdb und kd können jetzt farbige Ausgaben anzeigen, wenn sie in einer echten Konsole ausgeführt werden. Dies ist nicht die Standardeinstellung, es muss der Farbmodus explizit über tools.ini aktiviert werden. Die neue col_mode <true|false-Token> in tools.ini steuert die Farbmoduseinstellung. Weitere Informationen zum Arbeiten mit der tools.ini-Datei finden Sie unter Konfigurieren von tools.ini

Wenn der Farbmodus aktiviert ist, kann der Debugger eine farbige Ausgabe erzeugen. Standardmäßig sind die meisten Farben nicht festgelegt und werden stattdessen standardmäßig auf die aktuellen Konsolenfarben festgelegt.

Windbg-Befehlsbrowserfenster

In Windows 10 und höher von Windbg analysiert und zeigt das Befehlsbrowserfenster DML an. Alle Tags wie <Link>, <Exec> und Änderungen an der Darstellung werden vollständig unterstützt.

Um eine Befehlsbrowsersitzung über das Menü in WinDbg zu starten, wählen Sie Ansicht, Befehlsbrowser aus. Der Befehl> .browse <im Befehlsfenster öffnet ein neues Befehlsbrowserfenster und führt den angegebenen Befehl aus. Weitere Informationen finden Sie unter Verwenden des Befehlsbrowserfensters in WinDbg (klassisch). Ein neues Befehlsbrowserfenster kann auch mit STRG+N geöffnet werden.

Das Befehlsbrowserfenster imitiert absichtlich das Verhalten eines Webbrowsers, mit einem Dropdownverlauf und Den vorherigen/nächsten Schaltflächen. In der Dropdownliste Verlauf werden nur die letzten zwanzig Befehle angezeigt, aber der vollständige Verlauf wird beibehalten, sodass Sie in den Befehlen die Dropdownliste abrufen können, um den älteren Verlauf anzuzeigen.

Sie können beliebig viele Befehlsfenster gleichzeitig öffnen. Befehlsfenster bleiben in Arbeitsbereichen erhalten, speichern aber nur den aktuellen Befehl. der Verlauf wird nicht beibehalten.

Das WinDbg-Menü Ansicht verfügt über die Option Browserstartbefehl festlegen , mit der ein Benutzer einen bevorzugten Befehl für neue Browserfenster festlegen kann, z. B. .dml_start. Dieser Befehl wird in Arbeitsbereichen gespeichert.

Im Menü Ansicht steht ein Unterfenster Zuletzt verwendete Befehle zur Verfügung, in dem interessante Befehle enthalten sind. Wenn Sie einen kürzlich verwendeten Befehl auswählen, wird ein neuer Browser mit dem angegebenen Befehl geöffnet. Im Kontextmenü des Browserfensters befindet sich ein Menüelement, das den aktuellen Befehl des Fensters der Liste der zuletzt verwendeten Befehle hinzufügt. Die Liste der zuletzt verwendeten Befehle wird in Arbeitsbereichen beibehalten.

Das Befehlsbrowserfenster führt den Befehl synchron aus und zeigt daher erst dann die Ausgabe an, wenn der Befehl abgeschlossen ist. Befehle mit langer Ausführungsdauer zeigen erst dann etwas an, wenn sie abgeschlossen sind.

Links verfügen über ein Kontextmenü mit der rechten Maustaste, das dem Kontextmenü mit der rechten Maustaste in einem Webbrowser ähnelt. Links können in einem neuen Browserfenster geöffnet werden. Der Befehl eines Links kann zur Verwendung in die Zwischenablage kopiert werden.

Klicken Sie auf das Symbol in der Nähe der oberen rechten Ecke der Titelleiste, um die Befehlsbrowserfenster entweder auf automatische Aktualisierung oder manuelle Aktualisierung festzulegen. Browser mit automatischer Aktualisierung führen ihren Befehl bei Debuggerzustandsänderungen automatisch erneut aus. Dadurch bleibt die Ausgabe live, aber auf Kosten der Ausführung des Befehls bei allen Änderungen. Die automatische Aktualisierung ist standardmäßig aktiviert. Wenn der Browser nicht live sein muss, kann das Kontextmenü des Fensters verwendet werden, um die automatische Aktualisierung zu deaktivieren.

Da Befehle von der Engine und nicht von der Benutzeroberfläche ausgeführt werden, geben benutzerspezifische Befehle wie CLS (Clear Screen) einen Syntaxfehler in zurück, wenn sie in Befehlsbrowserfenstern verwendet werden. Wenn es sich bei der Benutzeroberfläche um einen Remoteclient handelt, wird der Befehl vom Server und nicht vom Client ausgeführt, und die Befehlsausgabe zeigt den Serverstatus an.

Befehlsbrowserfenster können jeden Debuggerbefehl ausführen, es muss kein Befehl sein, der DML erzeugt. Sie können Browserfenster verwenden, um einen beliebigen Satz von Befehlen zur Verwendung zu aktivieren.

Anpassen von DML

DML definiert eine kleine Gruppe von Tags, die in die Befehlsausgabe aufgenommen werden können. Ein Beispiel ist das <Linktag> . Sie können mit dem <Linktag> (und anderen DML-Tags) experimentieren, indem Sie die Befehle .dml_start und .browse verwenden. Der Befehl .browse .dml_startFilepath führt die in einer DML-Datei gespeicherten Befehle aus. Die Ausgabe wird im Fenster Befehlsbrowser anstelle des regulären Befehlsfensters angezeigt.

Angenommen, die Datei c:\DmlExperiment.txt die folgenden Zeilen enthält.

My DML Experiment
<link cmd="lmD musb*">List modules that begin with usb.</link>

Der folgende Befehl zeigt den Text und den Link im Fenster Befehlsbrowser an.

.browse .dml_start c:\Dml_Experiment.txt

Screenshot: Ausgabe der DML-Datei im Fenster

Wenn Sie auf den Link Module auflisten klicken, die mit USB beginnen , wird eine Ausgabe ähnlich der folgenden Abbildung angezeigt.

Screenshot der Modulliste nach dem Klicken auf den Link in der DML-Dateiausgabe.

Eine ausführliche Erläuterung der DML-Anpassung und eine vollständige Liste der DML-Tags finden Sie unter Anpassen der Debuggerausgabe mithilfe von DML.