gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:15:40 26 4
gpt4 key购买 nike

在 eclipse cdt 上以 Debug模式运行我的应用程序后,我尝试了以下命令并通过生成文件 TestC++.exe.stackdump 进行了 segmentation

gdb ./Debug/TestC++.exe ./TestC++.exe.stackdump

Error: "/cygdrive/c/Users/Achilles/workspace/c++/TestC++/./TestC++.exe.stackdump" is not a core dump: File format not recognized

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

最佳答案

选项是:

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

关于c++ - eclipse cdt cygwin gdb stackdump 不是核心转储文件格式无法识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33951329/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com