所以我知道我当前的块在epb和esp之间 有没有办法按以下方式打印我的堆栈: 让我们说len = ebp-esp 我想在gdb上看一个看起来像这样的命令 x / lenx $ esp
所以我正在为正在执行的当前函数写入堆栈中的内容? 我可以使用以下显示来执行此操作: display / lenx $ esp?
答案 0 :(得分:0)
是否可以拥有一个每次都会改变的变量
似乎display
不允许这样做。因此,您可以定义自己的命令,并在需要查看函数堆栈时调用它:
define display_stack
eval "x /%dbx $esp", $ebp-$esp
end
然后在调试程序时:
(gdb) display_stack
如果你需要在每一步看到你的函数堆栈,你可以1)定义另一个命令nn
并在调试你的函数时使用它2)使用hook for pseudo-command,'stop':
define nn
n
display_stack
end
define hook-stop
echo "hook-stop, display_stack:\n"
display_stack
end
有用的链接: