如何使用GDB检查堆栈框架?


Answers:


73

对于当前堆栈框架:

  • 信息框列出有关该框的一般信息(事物从内存中开始的位置,等等)
  • 信息参数列出该函数的参数
  • info locals列出了存储在框架中的局部变量

91

您可以使用以下命令查看堆栈的内容 x/10x $sp

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


这是什么版本的GDB?我无法让gdb在GDB 7.7-0ubuntu3.1上将寄存器用作命令参数
nightpool

这是一个答案,它告诉您如何实际查看堆栈帧上的字节,而我在查找如何操作时遇到了一些麻烦。谢谢!

但是,这将打印由所指示的元件$sp和9个元素之后它,即(如果堆栈增长向下像例如在x86)的未实际使用的程序还9个元素。对?
cyrus

@cYrus $ sp指向堆栈的顶部,即较低的地址。您可能会想到$ bp,它存储堆栈的最低地址。
拉斐尔

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

  • frame <args> 将在调用堆栈中选择一个框架进行检查

  • info frame <args>将为您提供有关堆栈中特定帧的信息。不带参数调用时,将显示当前选定的帧

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


2
frame <args>也选择一个框架。info frame <addr>用于检查框架而不选择它
rostamn739
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.