Verwenden der Debuggermarkupsprache

Debuggerbefehle können die Ausgabe in 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 DML-Ausgabe generieren:

Der lmD-Befehl ist ein Beispiel für einen Befehl, der die DML-Ausgabe bereitstellen kann. Der lmD-Befehl zeigt eine Liste der geladenen Module an. Wie die folgende Abbildung zeigt, ist jeder Modulname ein Link, auf den Sie klicken können, um detailliertere 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 der Details des Usbuhci-Moduls im Debugger.

Aktivieren und Deaktivieren von DML

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

Konsolenverbesserungen

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 das einzige, wenn sie in einer echten Konsole mit aktiviertem Farbmodus ausgeführt werden. Debugger mit umgeleiteter E/A, ntsd –d oder remote.exe Sitzungen zeigen keine Farben an.

Konsolendebuggerfarbmodus

Die Konsolendebugger, ntsd, cdb und kd haben jetzt die Möglichkeit, farbige Ausgabe anzuzeigen, wenn sie in einer echten Konsole ausgeführt wird. Dies ist nicht der Standard, es erfordert, dass der Farbmodus über tools.ini explizit aktiviert wird. Das 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 standardmäßig auf die aktuellen Konsolenfarben festgelegt.

Windbg-Befehlsbrowserfenster

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

Um eine Befehlsbrowsersitzung mit dem 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 bewusst das Verhalten eines Webbrowsers mit einem Dropdownverlauf und vorherigen/nächsten Schaltflächen. In der Dropdownliste "Verlauf" werden nur die letzten zwanzig Befehle angezeigt, aber der vollständige Verlauf wird beibehalten, indem Sie in den Befehlen zurückkehren, die Sie zum Anzeigen des älteren Verlaufs abrufen können.

Sie können beliebig viele Befehlsfenster gleichzeitig öffnen. Befehlsfenster bleiben in Arbeitsbereichen erhalten, speichern jedoch nur den aktuellen Befehl. die Geschichte wird nicht aufbewahrt.

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

Ein Unterfenster "Zuletzt verwendete Befehle" ist im Menü "Ansicht " verfügbar, um interessante Befehle zu halten. Wenn Sie einen zuletzt verwendeten Befehl auswählen, wird ein neuer Browser mit dem angegebenen Befehl geöffnet. Es gibt ein Menüelement im Kontextmenü des Browserfensters, das den aktuellen Befehl des Fensters zur 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 die Ausgabe an, wenn der Befehl abgeschlossen ist. Lange ausgeführte Befehle werden erst angezeigt, wenn sie fertig sind.

Links verfügen über ein Kontextmenü, 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 oberen rechten Ecke der Titelleiste, um die Befehlsbrowserfenster entweder automatisch zu aktualisieren oder manuell zu aktualisieren. Browser für die automatische Aktualisierung führen den Befehl automatisch erneut aus, wenn sich der Debuggerstatus ändert. Dadurch bleibt die Ausgabe live, aber zu den Kosten der Ausführung des Befehls für alle Ä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 vom Modul und nicht von der Benutzeroberfläche ausgeführt werden, geben spezifische Befehle der Benutzeroberfläche, z . B. CLS (Clear Screen), einen Syntaxfehler zurück, wenn sie in Befehlsbrowserfenstern verwendet werden. Dies bedeutet auch, dass der Befehl, wenn es sich bei der Benutzeroberfläche um einen Remoteclient handelt, vom Server ausgeführt wird, nicht vom Client, 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 für die Verwendung aktiv zu haben.

Anpassen von DML

DML definiert einen kleinen Satz von Tags, die in der Befehlsausgabe enthalten sein können. Ein Beispiel ist das <Linktag> . Sie können mit den Befehlen ".dml_start" und ".browse" mit dem <Linktag> (und anderen DML-Tags) experimentieren. Der Befehl ".browse" .dml_start Filepath führt die befehle aus, die in einer DML-Datei gespeichert sind. Die Ausgabe wird im Befehlsbrowserfenster anstelle des regulären Befehlsfensters angezeigt.

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

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

Der folgende Befehl zeigt den Text und den Link im Befehlsbrowserfenster an.

.browse .dml_start c:\Dml_Experiment.txt

Screenshot der DML-Dateiausgabe im Befehlsbrowserfenster.

Wenn Sie auf die Listenmodule klicken, die mit usb-Verknüpfung beginnen, wird die Ausgabe ähnlich wie in 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 einer vollständigen Liste der DML-Tags finden Sie unter Customizing Debugger Output Using DML.