如何使用GDB检查堆栈帧?

时间:2010-05-05 05:46:48

标签: gdb stack

现在我一直在使用GDB来反汇编二进制文件并检查不同的寄存器和诸如此类的东西。是否有一个简单的命令来检查堆栈中的所有内容?这可以局限于函数中的所有内容吗?

4 个答案:

答案 0 :(得分:81)

您可以使用 x/10x $sp

查看堆栈的内容

这将打印堆栈的前10个元素。

答案 1 :(得分:66)

对于当前堆栈帧:

  • 信息框列出了有关框架的一般信息(内容从内存开始等)。
  • info args 列出函数的参数
  • 信息本地列出了存储在框架中的局部变量

答案 2 :(得分:42)

  • bt(或backtrace)会给你一个调用堆栈。

  • frame <args>会为您提供有关堆叠中特定框架的信息。

  • info locals可以为您提供有关堆栈中任何局部变量的信息。

答案 3 :(得分:0)

  • 只需尝试bt full,您将获得所有框架和本地
  • 输入frame x,进入x

顺便说一下,您应该了解进程地址空间及其组成: linux virtual address space,这将帮助您了解框架的使用方式。