【发布时间】:2017-06-11 01:54:43
【问题描述】:
由于堆栈向较小的地址增长,因此使用 gdb 检查它对我来说很费劲。到目前为止我使用
x/64xw 0xffffd0e8-64*4
如果我想查看位于 0xffffd0e8(在堆栈上)的值以及在堆栈上跟随它的值(在这种情况下,在 32 位机器上是以下 64 个字)。
有没有更简单的方法?
另外,有没有什么办法可以自动给栈上的内容贴上相应的变量名?还是每行只显示一个单词,而不是四个?
【问题讨论】:
-
考虑改用
x/64xw $esp。 -
我知道。但有时我想检查当前帧,它不在堆栈顶部。
-
定义一个辅助函数。
-
@MichaelPalm 运行
frame命令(或up或down)后,gdb 将获取给定帧的$esp和$ebp寄存器变量的正确值.eval "x/%dxw $esp", ($ebp-$esp+4)/4之类的东西会打印出当前帧中的局部变量区域。
标签: debugging assembly gdb reverse-engineering