0

我试图从当前堆栈帧中显示内存打印,但现在我要做的很费力:

# Find out how big the current frame is:
(gdb) print/x $ebp - $esp
$1 = 0x4
# Use that in a display:
(gdb) x/4x $ebp

我很想使用这个define命令来实现它,所以这只会在每一步之后发生,所以我对堆栈帧有一个持续的认识。

做这样的事情:

(gdb) x/$1x $ebp
(gdb) x/($1)x $ebp

没有奏效。

4

1 回答 1

2

GDB中,命令x用于检查内存,参数如下:

x
x address
x/nfu address  

哪里n是重复计数,f是显示格式&u是单位大小;

(gdb) p/x $rsp
$4 = 0x7fffffffe248
(gdb) x/4x 0x7fffffffe248
0x7fffffffe248: 0xffffe4e5  0x00007fff  0x00000000  0x00000000
(gdb) x/$4
0x7fffffffe248: 0xffffe4e5
(gdb) x/$4x 
Value can't be converted to integer.
(gdb) x/$4 $rsp
A syntax error in expression, near `$rsp'.
(gdb) x/$_
0x7fffffffe248: 0xffffe4e5 

观察最后一个命令x/$_,在该命令之后x,检查的最后一个地址可用于使用$_变量的表达式。

编辑:变量产生的地址的内存内容由变量$_给出$__

于 2013-11-03T17:50:28.123 回答