Wie kann man bei GDB den Inhalt des Stacks sehen?

Lesezeit: 2 Minuten

Ich bin neu bei GDB, daher habe ich einige Fragen:

  • Wie kann ich mir den Inhalt des Stacks ansehen? Beispiel: Um den Inhalt des Registers zu sehen, tippe ich info registers. Für den Stapel, was sollte es sein?

  • Wie kann ich den Inhalt von sehen $0x4(%esp)? Wenn ich tippe print /d $0x4(%esp)GDB gibt einen Fehler aus.

Plattform: Linux und GDB

  • mögliches Duplikat von Using GDB to inspect the Machine Stack

    – Angestellter Russe

    21. Oktober 2011 um 15:04 Uhr

info frame um die Stapelrahmeninformationen anzuzeigen

Um den Speicher an gegebenen Adressen auszulesen, sollten Sie einen Blick auf werfen x

x/x $esp für Hex x/d $esp für unterschrieben x/u $esp für unsigned etc. x verwendet die Formatsyntax, Sie könnten sich auch die aktuelle Anleitung über ansehen x/i $eip usw.

Benutzeravatar von gaoithe
gaoit

Verwenden:

  • bt – Backtrace: Stack-Funktionen und Argumente anzeigen
  • info frame – Start/Ende/Argumente/Locals-Zeiger des Stacks anzeigen
  • x/100x $sp – Stapelspeicher anzeigen
(gdb) bt
#0  zzz () at zzz.c:96
#1  0xf7d39cba in yyy (arg=arg@entry=0x0) at yyy.c:542
#2  0xf7d3a4f6 in yyyinit () at yyy.c:590
#3  0x0804ac0c in gnninit () at gnn.c:374
#4  main (argc=1, argv=0xffffd5e4) at gnn.c:389

(gdb) info frame
Stack level 0, frame at 0xffeac770:
 eip = 0x8049047 in main (goo.c:291); saved eip 0xf7f1fea1
 source language c.
 Arglist at 0xffeac768, args: argc=1, argv=0xffffd5e4
 Locals at 0xffeac768, Previous frame's sp is 0xffeac770
 Saved registers:
  ebx at 0xffeac75c, ebp at 0xffeac768, esi at 0xffeac760, edi at 0xffeac764, eip at 0xffeac76c

(gdb) x/10x $sp
0xffeac63c: 0xf7d39cba  0xf7d3c0d8  0xf7d3c21b  0x00000001
0xffeac64c: 0xf78d133f  0xffeac6f4  0xf7a14450  0xffeac678
0xffeac65c: 0x00000000  0xf7d3790e

Benutzeravatar von unwind
entspannen

Sie müssen die Speicheranzeigebefehle von gdb verwenden. Das grundlegende ist xzur Prüfung. Es gibt ein Beispiel auf der verlinkten Seite, das verwendet

gdb> x/4xw $sp

um “vier Wörter (w ) des Speichers über dem Stapelzeiger (hier $sp) im Hexadezimalformat (x)”. Das Zitat ist leicht paraphrasiert.

1423190cookie-checkWie kann man bei GDB den Inhalt des Stacks sehen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy