eclipse cdt cygwin gdb stackdump不是核心转储文件格式无法识别

时间:2015-11-27 06:20:36

标签: c++ gdb cygwin eclipse-cdt

我在eclipse cdt上以调试模式运行我的应用程序之后尝试了以下命令 并使用生成文件TestC ++ .exe.stackdump

进行分割
Exception: STATUS_ACCESS_VIOLATION at eip=004017F5
eax=6779632F ebx=0024CC4C ecx=00000000 edx=6C7049CC esi=2006135A edi=611CCFB2
ebp=0024CBB8 esp=0024CBA0 program=C:\Users\Achilles\workspace\c++\TestC++\Debug\TestC++.exe, pid 1072, thread main
cs=001B ds=0023 es=0023 fs=003B gs=0000 ss=0023
Stack trace:
Frame     Function  Args
0024CBB8  004017F5 (0024CC18, 6779632F, 00000000, 00000000)
0024CBD8  00401806 (0024CC18, 20061318, 0024FD24, 61028993)
0024CBF8  00401806 (0024CC18, 0024CC4C, 00000000, 6108FCE0)
0024CC28  004011CA (00000001, 0024CC4C, 200280E8, 6100833B)
0024CD18  6100839A (00000000, 0024CD74, 61007410, 00000000)
End of stack trace
  

错误:   “/cygdrive/c/Users/Achilles/workspace/c++/TestC++/./TestC++.exe.stackdump”   不是核心转储:文件格式无法识别

TestC ++。exe.stackdump文件内容:

[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]

1 个答案:

答案 0 :(得分:1)

选项包括:

  1. 获取编译和链接以使用g ++的-g选项并在gdb下运行程序(使用或不使用CDT的调试透视图)并让调试程序在发生时捕获访问冲突。
  2. 使用cygwin的addr2line实用程序。您在程序上运行ldd以将崩溃地址转换为DLL或可执行文件的名称。然后调用addr2line,第一个参数设置为具有给定地址范围的DLL的路径,第二个参数是崩溃的地址。如果崩溃站点不在您自己的代码中,则可能需要通过Cygwin的安装实用程序安装与代码使用的库相关的任何调试包。在任何情况下,使用addr2line的简单情况是崩溃站点在您的代码中。但实际上,当您使用库导致库中发生崩溃时,您可以使用它。
  3. 使用printf或真实的日志系统隔离问题。