反汇编中有这样的代码:
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.
如何正确打印?
看起来您正在使用 64 位代码,在这种情况下您只需要,例如:
(gdb) p $rbp-0x4
$1 = (void *) 0x7fff5fbff71c
如果你想看看到底是什么at这个地址,那么你需要强制转换void *
地址,例如
(gdb) p /x *(int *)($rbp-0x4)
$2 = 0x7fff
或者,更简洁地,使用x
代替p
, e.g.
(gdb) x /w $rbp-0x4
0x7fff5fbff71c: 0x00007fff
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)