Im Moment habe ich GDB verwendet, um eine Binärdatei zu zerlegen und verschiedene Register und so weiter zu überprüfen. Gibt es einen einfachen Befehl, um alles auf dem Stapel zu untersuchen? Kann dies auf alles in einer Funktion beschränkt werden?
Im Moment habe ich GDB verwendet, um eine Binärdatei zu zerlegen und verschiedene Register und so weiter zu überprüfen. Gibt es einen einfachen Befehl, um alles auf dem Stapel zu untersuchen? Kann dies auf alles in einer Funktion beschränkt werden?
Antworten:
Für den aktuellen Stapelrahmen:
Sie können den Inhalt des Stapels mit anzeigen x/10x $sp
Dadurch werden die obersten 10 Elemente des Stapels gedruckt.
$sp
und die 9 Elemente danach gedruckt , dh (wenn der Stapel wie beispielsweise in x86 nach unten wächst) 9 Elemente, die vom Programm noch nicht verwendet werden. Richtig?
bt
(oder backtrace
) gibt Ihnen einen Aufrufstapel.
frame <args>
wählt einen Frame auf dem Aufrufstapel zur Überprüfung aus
info frame <args>
gibt Ihnen Informationen zu einem bestimmten Frame aus dem Stapel. Beim Aufruf ohne Argumente wird der aktuell ausgewählte Frame angezeigt
info locals
kann Ihnen Informationen über lokale Variablen auf dem Stapel geben.
info frame <addr>
wird verwendet, um den Rahmen zu untersuchen, ohne ihn auszuwählen