gdb和当前函数堆栈

时间:2014-05-01 02:37:37

标签: gdb stack

所以我知道我当前的块在epb和esp之间 有没有办法按以下方式打印我的堆栈: 让我们说len = ebp-esp 我想在gdb上看一个看起来像这样的命令 x / lenx $ esp

所以我正在为正在执行的当前函数写入堆栈中的内容? 我可以使用以下显示来执行此操作: display / lenx $ esp?

1 个答案:

答案 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

有用的链接: