12.4.3. 获得栈帧

当你碰到程序崩溃的时候,报告 bug 时附上栈帧信息是个不错的注意。

如下所示的步骤就可以取得栈帧信息。

  • 在 gdb(1) 中运行程序。

  • 重现崩溃。

    • 它使得你重新回到 gdb 提示符。
  • gdb 提示符后输入 “bt“。

程序在终端中的 gdb 环境运行时,如果它没反应,你可以按下 Ctrl-C来中止程序来取得 gdb 提示符。

[提示]提示

通常,你会看到堆栈顶部有一行或者多行有 “malloc()“ 或 “gmalloc()“.当这个出现的时候,你的堆栈不是非常有用的。找到一些有用信息的一个简单方法是设置环境变量 “$MALLOC_CHECK“ 的值为 2 (malloc(3)).你可以通过下面的方式在运行 gdb 时设置。

  1. $ MALLOC_CHECK_=2 gdb hello