使用gdb进行核心转储分析

avd*_*avd 9 c++ cygwin gdb segmentation-fault

我有几个关于核心转储的问题.我在Windows上有gdb,使用Cygwin.

  1. 核心转储文件的位置是什么?它是a.exe.stackdump文件吗?(这是崩溃后生成的唯一文件)我在其他论坛上读到核心转储文件名为"core".但我没有看到任何名为"core"的文件.

  2. 打开和理解核心转储文件的命令是什么?

Mar*_*n B 12

  1. 您需要通过包含来配置Cygwin以生成核心转储

    error_start=x:\path\to\dumper.exe

    在您的CYGWIN环境变量(见这里的部分"翻斗车"获取更多信息).如果你没有这样做,你只会得到一个堆栈跟踪 - 这也可能有助于你诊断问题.

  2. 按如下所示启动gdb以将其附加到核心转储文件:

    gdb myexecutable --core=mycorefile

    您现在可以使用常用的gdb命令来打印堆栈跟踪,检查变量的值等等.

  • 尝试`CYGWIN = error_start = c:\ cygwin\bin\dumper.exe`.有关更多建议,另请参见http://www.mail-archive.com/cygwin@cygwin.com/msg77667.html. (2认同)
  • 当使用 Bash 和 `export` 时,需要引用反斜杠: `export CYGWIN='error_start=C:\Opt\Cygwin\bin\dumper.exe'` (2认同)