14
votes

Is there any way to get GDB to print the last "n" values pushed on the machine's stack. For example, currently if I want to inspect the contents of the stack I do the following (assuming x86 architecture):

(gdb) # get last value pushed on stack
(gdb) p *(int *)($esp)
(gdb) # get 2nd to last value pushed on stack
(gdb) p *(int *)($esp + 4) 

Is there a better way to view the machine stack? Printed nicely, maybe?

1

1 Answers

22
votes

Examine 16 words on the top of stack:

x/16wx $esp

The "w" is for printing words