使用gdb进行核心转储分析

9

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

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

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

2个回答

12
  1. 你需要配置Cygwin以生成核心转储文件,方法是将

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

    包含在您的CYGWIN环境变量中(有关更多信息,请参见此处的“dumper”一节)。如果您没有这样做,则只会获得堆栈跟踪--这也可能帮助您诊断问题。

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

    gdb myexecutable --core=mycorefile

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


如何修改Cygwin环境变量? - avd
实际上我知道环境变量的概念。我理解你所说的,设置名为“error_start”的环境变量。我想问的是,我应该在哪里定义新的环境变量?在同一个地方(我的电脑->属性->...)吗? - avd
1
那是一个选项--但更好的地方可能是在cygwin.bat中,因为该变量是特定于Cygwin的。或者,为了测试,只需在运行要测试的可执行文件之前从bash shell(使用“export”命令)设置变量。 - Martin B
2
尝试使用CYGWIN=error_start=c:\cygwin\bin\dumper.exe。更多建议请参见http://www.mail-archive.com/cygwin@cygwin.com/msg77667.html。 - Martin B
2
在使用Bash和export时,需要引用反斜杠:export CYGWIN='error_start=C:\Opt\Cygwin\bin\dumper.exe' - Lumi
显示剩余3条评论

2
  1. 是的,cygwin默认会创建a.exe.stackdump文件。您需要配置它也创建core文件(Martin的答案涵盖了这一点)。
  2. 在此处可以找到有关核心转储调试的简单教程here

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接