How can one see content of stack with GDB?
Use:
bt
- backtrace: show stack functions and argsinfo frame
- show stack start/end/args/locals pointersx/100x $sp
- show stack memory
(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 frameStack 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 $sp0xffeac63c: 0xf7d39cba 0xf7d3c0d8 0xf7d3c21b 0x000000010xffeac64c: 0xf78d133f 0xffeac6f4 0xf7a14450 0xffeac6780xffeac65c: 0x00000000 0xf7d3790e
You need to use gdb's memory-display commands. The basic one is x
, for examine. There's an example on the linked-to page that uses
gdb> x/4xw $sp
to print "four words (w
) of memory above the stack pointer (here, $sp
) in hexadecimal (x
)". The quotation is slightly paraphrased.