Ich bin neu bei GDB, daher habe ich einige Fragen:
Wie kann ich den Inhalt des Stapels anzeigen? Beispiel: Um den Inhalt des Registers zu sehen, tippe ich
info registers
. Was sollte es für den Stapel sein?Wie kann ich den Inhalt von sehen
$0x4(%esp)
? Wenn ichprint /d $0x4(%esp)
tippe, gibt GDB einen Fehler aus.
Plattform: Linux und GDB
Antworten:
info frame
um die Stapelrahmeninformationen anzuzeigenUm den Speicher an bestimmten Adressen zu lesen, sollten Sie einen Blick darauf werfen
x
x/x $esp
für hexx/d $esp
für signiertx/u $esp
für nicht signiert usw. x verwendet die Formatsyntax, Sie können sich auch die aktuelle Anweisung überx/i $eip
usw. ansehen .quelle
Verwenden:
bt
- backtrace: Stapelfunktionen und Argumente anzeigeninfo frame
- Zeige Start / Ende / Argumente / Stapel-Zeiger des Stapelsx/100x $sp
- Stapelspeicher anzeigenquelle
Sie müssen die Speicheranzeigebefehle von gdb verwenden. Das Grundlegende ist
x
, zu untersuchen . Auf der verlinkten Seite gibt es ein Beispiel, das verwendet wirdum "vier Wörter (
w
) des Speichers über dem Stapelzeiger (hier$sp
) hexadezimal (x
)" zu drucken ". Das Zitat ist leicht umschrieben.quelle