我在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)]
答案 0 :(得分:1)
选项包括:
-g
选项并在gdb
下运行程序(使用或不使用CDT的调试透视图)并让调试程序在发生时捕获访问冲突。addr2line
实用程序。您在程序上运行ldd以将崩溃地址转换为DLL或可执行文件的名称。然后调用addr2line
,第一个参数设置为具有给定地址范围的DLL的路径,第二个参数是崩溃的地址。如果崩溃站点不在您自己的代码中,则可能需要通过Cygwin的安装实用程序安装与代码使用的库相关的任何调试包。在任何情况下,使用addr2line
的简单情况是崩溃站点在您的代码中。但实际上,当您使用库导致库中发生崩溃时,您可以使用它。