Disassembly-Bereich
Nach oben zu CPU-Fenster - Index
Ansicht > Debug-Fenster > CPU-Fenster > Disassembly
Zeigt die Adresse, die hexadezimale Repräsentation der Maschinencodeanweisungen (Opcodes) und die Assembly-Anweisungen für alle Quelltextzeilen an. Die Adresse ist der Offset für die Disassemblierungsmethode. Der Disassembly-Bereich befindet sich oben links, wenn die gesamte CPU-Ansicht angezeigt wird (Ansicht > Debug-Fenster > CPU-Fenster > CPU).
Falls Debug-Informationen verfügbar sind, so zeigt der Debugger den zu den Assembly-Anweisungen gehörenden Quelltext an.
Ein grüner Pfeil () links neben der Adresse gibt die momentane Position des Ausführungspunkts an.
Wenn die aktuelle Anweisung eine Transferanweisung ist (z.B. call oder jmp), zeigt ein Aufwärts- oder Abwärts-Pfeil die Zielrichtung der Transferanweisung an. Wenn sich das Ziel beispielsweise vor der aktuellen Anweisung befindet, wird ein Aufwärts-Pfeil angezeigt. Befindet sich das Ziel nach der aktuellen Anweisung, wird ein Abwärts-Pfeil angezeigt.
Bei konditionalen Transferanweisungen (z.B. jz oder jle) wird nur ein Pfeil angezeigt, wenn die Bedingung true ist. Bei konditionalen Set-Anweisungen (z.B. seta oder setz) wird ein Links-Pfeil angezeigt, wenn die Bedingung true ist.
Blättern im Disassembly-Bereich
Verwenden Sie zum Blättern im Disassembly-Bereich eine der folgenden Methoden:
- Drücken Sie die Tasten STRG+LINKS oder STRG+RECHTS, um die Anfangsposition der Anzeige um ein Byte nach oben bzw. nach unten zu verschieben. Beachten Sie, dass die Veränderung der Anfangsposition der Anzeige im Disassembly-Bereich die Stelle verschiebt, an welcher der Debugger mit dem Disassemblieren des Maschinencodes beginnt.
- Klicken Sie ober- oder unterhalb des Bildlauffeldes auf der vertikalen Bildlaufleiste, um eine Bildschirmseite nach oben oder unten zu blättern. (Wegen der vielen Informationen, die im Disassembly-Bereich zur Verfügung stehen, ist das Ziehen des Bildlauffeldes deaktiviert.)
- Verwenden Sie die Befehle des Kontextmenüs Zu Adresse gehen, Zu aktuellem EIP, Verfolgen und Zurück wie im folgenden Abschnitt beschrieben.
Kontextmenü
Element | Beschreibung |
---|---|
Aktiviert |
Ist nur beim Klicken mit der rechten Maustaste auf einen Haltepunkt verfügbar. Schaltet den Haltepunkt zwischen aktiviert und deaktiviert um. |
Haltepunkt-Eigenschaften |
Ist nur beim Klicken mit der rechten Maustaste auf einen Haltepunkt verfügbar. Zeigt das Dialogfeld Eigenschaften des Adresshaltepunkts an. |
An aktuelle Position springen |
Führt Ihr Programm bei voller Geschwindigkeit bis zu der Anweisung aus, die Sie im Fenster CPU markiert haben. Nachdem Ihr Programm angehalten wurde, können Sie diesen Befehl verwenden, um die Fehlersuche an einer bestimmten Programmanweisung wieder aufzunehmen. |
Haltepunkt umschalten |
Fügt an der aktuell markierten Adresse einen Haltepunkt hinzu oder entfernt ihn. |
Zu Adresse gehen |
Zeigt das Dialogfeld Adresse eingeben an, in dem Sie ein Symbol oder für verwalteten Code eine Adresse im JIT-Compiler-Format (Just In Time) eingeben können. |
Zu aktuellem EIP |
Positioniert das Fenster CPU an der Position des aktuellen Programmzählers (die im Register EIP angegebene Adresse). Diese Position gibt die nächste von Ihrem Programm auszuführende Anweisung an. |
Verfolgen |
Positioniert den Ausschnitt an der Zieladresse der ausgewählten Anweisung. Verwenden Sie den Befehl Verfolgen zusammen mit Anweisungen, die die Steuerung weitergeben (wie CALL, JMP und INT) und mit konditionalen Sprunganweisungen (wie JZ, JNE, LOOP usw.). Bei konditionalen Sprunganweisungen wird die Adresse so angezeigt, als ob die Springbedingung true ist. Mit dem Befehl Zurück kehren Sie zum Ausgangspunkt des Sprungs zurück. |
Aufrufende Routine |
Positioniert den Disassembly-Bereich auf der Anweisung nach derjenigen, die den aktuellen Interrupt oder das aktuelle Unterprogramm aufgerufen hat. Hat die aktuelle Interrupt-Routine Datenelemente auf den Stack gelegt, so ist der Debugger möglicherweise nicht in der Lage, festzustellen, von wo aus die Routine aufgerufen wurde. |
Zurück |
Setzt das Fenster CPU auf den Zustand zurück, den es vor dem letzten Befehl Verfolgen hatte. |
Suchen |
Zeigt das Dialogfeld Such-Bytes eingeben an, mit dem Sie im Fenster CPU in Vorwärtsrichtung nach einem Ausdruck oder einer Liste von Bytes suchen können (Details erhalten Sie, wenn Sie im Dialogfeld Such-Bytes eingeben auf Hilfe klicken). |
Quelltext anzeigen |
Aktiviert den Quelltext-Editor und positioniert den Einfügepunkt in derjenigen Quelltextzeile, die am genauesten der im Fenster CPU markierten disassemblierten Anweisung entspricht. Gibt es keinen zugehörigen Quelltext, so hat dieser Befehl keine Wirkung. |
Gemischte Quelle |
Schaltet das Anzeigeformat zwischen "Nur Assembly-Anweisungen" und "Assembly-Anweisungen und dem zugehörigen Quelltext" (wenn Debug-Informationen verfügbar sind) um. |
Gemischter IL-Code |
Schaltet beim Debuggen von verwaltetem Code die Anzeige um, damit MSIL-Anweisungen angezeigt werden. |
Adressen anzeigen |
Schließt Anweisungsadressen ein. |
Opcodes anzeigen |
Schließt Anweisungs-Opcodes ein. Wählen Sie Auto, Immer oder Nie. Der Vorgabewert ist Auto, der Opcodes anzeigt, wenn das Fenster breit genug für die Anzeige der Opcode-Spalte ist. |
Neuer EIP |
Verändert die Position des Anweisungszeigers (des Wertes des Registers EIP) auf die aktuell im Disassembly-Ausschnitt ausgewählte Zeile. Verwenden Sie diesen Befehl, wenn Sie bestimmte Maschinenanweisungen auslassen möchten. Wenn Sie mit der Programmausführung fortfahren, beginnt die Ausführung an dieser Adresse. Dieser Befehl ist nicht dasselbe wie die Einzelschrittausführung von Anweisungen. Der Debugger führt keinerlei Anweisungen aus, die Sie auslassen.
|
Kopieren |
Kopiert alle ausgewählten Anweisungen in die Zwischenablage. Im Disassembly-Bereich können Sie eine einzelne Anweisung auswählen oder mit der Taste UMSCH mehrerer Anweisungen auswählen. In allen anderen Fenstern lässt sich nur jeweils ein Element zum Kopieren auswählen. |
FPU anzeigen |
Blendet das FPU-Fenster ein, in dem die Gleitkommaregister, die MMX-Register und SSE-Register angezeigt werden. |