Debugging-Umgebungen
Es gibt sechs verfügbare Debugging-Umgebungen:
- WinDbg
- WinDbg (Klassisch)
- Kerneldebugger (KD)
- NTKD
- Konsole Debugger (CDB)
- SYMBOLISCHER NT-Debugger (NTSD)
In den folgenden Abschnitten werden die Debugging-Umgebungen beschrieben.
WinDbg
WinDbg ist die neueste Version von WinDbg mit modernen visuellen Elementen, schnelleren Fenstern und einer vollständigen Skriptumgebung, die mit dem erweiterbaren Debugger-Datenmodell vor und in der Mitte erstellt wurde. WinDbg verwendet dasselbe zugrunde liegende Modul wie WinDbg (Classic), sodass alle Befehle, Erweiterungen und Workflows, die Sie verwendet haben, weiterhin wie zuvor funktionieren.
Weitere Informationen erhalten Sie unter WinDbg-Funktionen.
WinDbg (Klassisch)
Microsoft Windows Debugger WinDbg (Klassisch) ist ein Windows-basierter Debugger, der sowohl Benutzermodus- als auch Kernelmodusdebugging ausführen kann. WinDbg bietet Debugging für Windows-Kernel-, Kernelmodustreiber und Systemdienste sowie Benutzermodusanwendungen und Treiber.
WinDbg verwendet die Visual Studio-Debugsymbolformate für das Debuggen auf Quellebene. Es kann auf jedes Symbol oder jede Variable eines Moduls zugreifen, das über PDB-Symboldateien verfügt, und kann auf den Namen jeder öffentlichen Funktion zugreifen, die von Modulen verfügbar gemacht wird, die mit COFF-Symboldateien kompiliert wurden (z. B. Windows-DBG-Dateien).
WinDbg kann Quellcode anzeigen, Haltepunkte festlegen, Ansichtsvariablen (einschließlich C++-Objekte), Stapelablaufverfolgungen und Arbeitsspeicher festlegen. Das Fenster "Debuggerbefehl" ermöglicht es dem Benutzer, eine Vielzahl von Befehlen ausstellen zu können.
Für das Debuggen im Kernelmodus benötigt WinDbg in der Regel zwei Computer (den Hostcomputer und den Zielcomputer). WinDbg unterstützt auch verschiedene Remotedebuggingoptionen für Benutzermodus- und Kernelmodusziele.
WinDbg ist ein grafisches Schnittstellen-Gegenstück zu CDB/NTSD und KD/NTKD.
KD
Microsoft Kernel Debugger (KD) ist ein zeichenbasiertes Konsolenprogramm, das eine eingehende Analyse der Kernelmodusaktivität auf allen NT-basierten Betriebssystemen ermöglicht. Sie können KD verwenden, um Kernelmoduskomponenten und Treiber zu debuggen oder das Verhalten des Betriebssystems selbst zu überwachen. KD unterstützt auch das Debuggen von Multiprozessoren.
In der Regel wird KD nicht auf dem Computer ausgeführt, der gedebuggt wird. Sie benötigen zwei Computer (den Hostcomputer und den Zielcomputer) für das Kernelmodusdebugging.
NTKD
Es gibt eine Variation des KD-Debuggers mit dem Namen NTKD. Es ist in jeder Hinsicht mit KD identisch, außer dass es beim Start ein neues Textfenster erzeugt, während KD das Eingabeaufforderungsfenster erbt, von dem aus es aufgerufen wurde.
CDB
Microsoft Console Debugger (CDB) ist ein zeichenbasiertes Konsolenprogramm, das die Analyse des Windows-Benutzermodusspeichers und -Konstrukte auf niedriger Ebene ermöglicht. Der Name Console Debugger wird verwendet, um anzugeben, dass CDB als Konsolenanwendung klassifiziert wird. Es bedeutet nicht, dass die Zielanwendung eine Konsolenanwendung sein muss. Tatsächlich ist CDB vollständig in der Lage, Konsolenanwendungen und grafische Windows-Programme zu debuggen.
CDB ist äußerst leistungsfähig für das Debuggen eines Programms, das derzeit ausgeführt wird oder kürzlich abgestürzt ist (Liveanalyse), aber einfach einzurichten. Es kann verwendet werden, um das Verhalten einer funktionierenden Anwendung zu untersuchen. Im Falle einer fehlerhaften Anwendung kann CDB verwendet werden, um eine Stapelablaufverfolgung zu erhalten oder die schuldigen Parameter zu betrachten. Es funktioniert gut über ein Netzwerk (mit einem Remotezugriffsserver), da es zeichenbasiert ist.
Mit CDB können Sie Programmcode anzeigen und ausführen, Haltepunkte festlegen und Werte im Arbeitsspeicher untersuchen und ändern. CDB kann Binärcode analysieren, indem es ihn zerlegt und Montageanweisungen anzeigt. Außerdem kann der Quellcode direkt analysiert werden.
Da CDB über Adressen oder globale Symbole auf Speicherspeicherorte zugreifen kann, können Sie auf Daten und Anweisungen nach Namen und nicht nach Adresse verweisen, wodurch bestimmte Codeabschnitte leicht zu finden und zu debuggen sind. CDB unterstützt das Debuggen mehrerer Threads und Prozesse. Er ist erweiterbar und kann sowohl seitenseitigen als auch nicht ausgelagerten Speicher lesen und schreiben.
Wenn die Zielanwendung selbst eine Konsolenanwendung ist, gibt das Ziel das Konsolenfenster mit CDB gemeinsam. Verwenden Sie die -2 Befehlszeilenoption , um ein separates Konsolenfenster für eine Zielkonsolenanwendung zu erstellen.
NTSD
Es gibt eine Variation des CDB-Debuggers namens Microsoft NT Symbolic Debugger (NTSD). Es ist in jeder Hinsicht mit CDB identisch, außer dass es beim Start ein neues Textfenster erzeugt, während CDB das Eingabeaufforderungsfenster erbt, von dem aus es aufgerufen wurde.
Da der Startbefehl auch zum Spawen eines neuen Konsolenfensters verwendet werden kann, ergeben die folgenden beiden Konstruktionen dieselben Ergebnisse:
start cdb parameters
ntsd parameters
Es ist möglich, die Eingabe und Ausgabe von NTSD (oder CDB) umzuleiten, damit sie von einem Kerneldebugger (Visual Studio, WinDbg oder KD) gesteuert werden kann. Wenn diese Technik mit NTSD verwendet wird, wird überhaupt kein Konsolenfenster angezeigt. Die Steuerung von NTSD aus dem Kerneldebugger ist daher besonders nützlich, da es zu einem extrem einfachen Debugger führt, der fast keine Belastung für den Computer mit der Zielanwendung angibt. Diese Kombination kann zum Debuggen von Systemprozessen, herunterfahren und späteren Startphasen verwendet werden. Details finden Sie unter Steuern des Benutzermodusdebuggers aus dem Kerneldebugger .