如何在gdb中打印-0x4(%rbp)?

时间:2011-03-28 07:26:40

标签: gdb cpu-registers

在反汇编中有这样的代码:

movl   $0x6,-0x4(%rbp)

我尝试以这种方式打印值但失败了:

(gdb) p  0x4(%esp)
A syntax error in expression, near `%esp)'.
(gdb) p 0x4+$esp
Argument to arithmetic operation not a number or boolean.

如何正确打印?

1 个答案:

答案 0 :(得分:14)

看起来你正在使用64位代码,在这种情况下你只需要,例如:

(gdb) p $rbp-0x4
$1 = (void *) 0x7fff5fbff71c

如果您想查看此地址的内容,那么您需要转换void *地址,例如

(gdb) p /x *(int *)($rbp-0x4)
$2 = 0x7fff

或更简洁地使用x代替p,例如

(gdb) x /w $rbp-0x4
0x7fff5fbff71c: 0x00007fff