Disassembly-Bereich

Aus RAD Studio
Wechseln zu: Navigation, Suche

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 (Ausführungspunkt) 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.
Der Befehl Aufrufende Routine arbeitet am besten, wenn die Option Stack-Frames unter Quelltexterzeugung im Dialogfeld Projekt > Optionen > Compilieren (Delphi) oder Standard-Stack-Frames im Dialogfeld Projekt > Optionen > C++-Compiler (C++) aktiviert ist.

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.

Achtung: Verwenden Sie diesen Befehl mit äußerster Vorsicht. Wenn Sie Programmanweisungen übergehen, kann Ihr System möglicherweise in einen instabilen Zustand geraten. Der Stack-Frame und die Register könnten für die aktuelle Programmposition fehlerhaft werden.

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.

Siehe auch