我正在尝试显示当前堆栈帧的内存打印,但是现在我要做的就是费力:
# 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
没用。
答案 0 :(得分: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
,检查的最后一个地址可用于使用$_
变量的表达式。
编辑:变量$_
生成的地址的内存内容由变量$__
给出。