Debuggen von Assembler-Code in WinDbg (Classic)

In WinDbg können Sie Assembler-Code anzeigen, indem Sie Befehle eingeben oder das Disassemblierungsfenster verwenden.

Debugger-Befehlsfenster

Sie können Assembler-Code ansehen, indem Sie einen der u, ub, uu (Unassemble) Befehle im Debugger Befehlsfenster eingeben.

Disassembly-Fenster

Um das Disassembly-Fenster zu öffnen oder dorthin zu wechseln, wählen Sie Dissasembly aus dem Menü View. (Sie können auch ALT+7 drücken oder die Schaltfläche Disassembly in der Symbolleiste auswählen. ALT+UMSCHALT+7 schließt das Disassembly-Fenster).

Der folgende Screenshot zeigt ein Beispiel für ein Disassembly-Fenster.

Screenshot des Fensters Disassembly in WinDbg.

Der Debugger entnimmt einen Speicherabschnitt, interpretiert ihn als binäre Computeranweisungen und disassembliert ihn dann, um eine Assembler-Version der Computeranweisungen zu erzeugen. Der resultierende Code wird im Disassembly-Fenster angezeigt.

Im Disassembly-Fenster können Sie Folgendes tun:

  • Um einen anderen Bereich des Speichers zu disassemblieren, geben Sie in das Feld Offset die Adresse des Speichers ein, den Sie disassemblieren möchten. (Sie können die Eingabetaste drücken, nachdem Sie die Adresse eingegeben haben, müssen es aber nicht.) Im Disassembly-Fenster wird Code angezeigt, bevor Sie die Adresse eingegeben haben; Sie können diesen Code ignorieren.

  • Um andere Bereiche des Speichers zu sehen, wählen Sie die Schaltflächen Previous oder Next oder drücken Sie die Tasten BUILD HOCH oder BILD RUNER. Diese Befehle zeigen den disassemblierten Code aus dem vorhergehenden bzw. nachfolgenden Speicherbereich an. Durch Drücken der Tasten PFEIL RECHTS, PFEIL LINKS, PFEIL OBEN und PFEIL UNTEN können Sie innerhalb des Fensters navigieren. Wenn Sie diese Tasten verwenden, um die Seite zu verlassen, wird eine neue Seite angezeigt.

Das Disassembly-Fenster verfügt über eine Symbolleiste, die zwei Schaltflächen und ein Kontextmenü mit zusätzlichen Befehlen enthält. Um auf das Menü zuzugreifen, halten Sie die Titelleiste gedrückt (oder klicken Sie mit der rechten Maustaste) oder wählen Sie das Symbol, das in der Nähe der oberen rechten Ecke des Fensters erscheint. Die folgende Liste beschreibt einige der Menübefehle.

  • Go to current address öffnet das Source-Fenster mit der Quelldatei, die der ausgewählten Zeile im Disassembly-Fenster entspricht, und hebt diese Zeile hervor.

  • Disassemble before current instruction bewirkt, dass die aktuelle Zeile in der Mitte des Disassembly-Fensters platziert wird. Dieser Befehl ist die Standardoption. Wenn Sie diesen Befehl deaktivieren, wird die aktuelle Zeile oben im Disassembly-Fenster angezeigt. Das spart Zeit, da die Disassemblierung in umgekehrter Richtung zeitaufwändig sein kann.

  • Highlight instructions from the current source line bewirkt, dass alle Anweisungen, die der aktuellen Quellzeile entsprechen, hervorgehoben werden. Oft entspricht eine einzige Quellcodezeile mehreren Assembler-Anweisungen. Wenn der Code optimiert wurde, sind diese Assembler-Anweisungen möglicherweise nicht fortlaufend. Mit diesem Befehl können Sie alle Assembler-Anweisungen finden, die aus der aktuellen Quellcodezeile assembliert wurden.

  • Show source line for each instruction zeigt die Nummer der Quellcodezeile an, die den einzelnen Assembler-Anweisungen entspricht.

  • Source file for each instruction anzeigen zeigt den Namen der Quelldatei an, die den einzelnen Assembler-Anweisungen entspricht.

Weitere Informationen

Weitere Informationen zum Assembler-Debugging und den zugehörigen Befehlen sowie eine vollständige Erklärung der Assembler-Anzeige finden Sie unter Debugging im Assembler-Modus.