c++ - C++ 中的 Stackdump 不显示堆栈跟踪

标签 c++ exception gcc stack stack-trace

我有一个应用程序有时会崩溃并创建下一个文件:(APP.exe.stackdump)

Exception: STATUS_ACCESS_VIOLATION at eip=6BA4B246
eax=67452301 ebx=EFCDAB89 ecx=98BADCFE edx=10325476 esi=FFFFFFFF edi=98BADCFE
ebp=FFFFFFFF esp=01A2C928 program=C:\APP.exe, pid 168, thread unknown (0x13E8)
cs=001B ds=0023 es=0023 fs=003B gs=0000 ss=0023
Stack trace:
Frame     Function  Args
End of stack trace

我在 Windows、Ubuntu 和 Centos 中使用 g++ 进行编译。该错误有时仅在线程内发生,无论如何都可以获取发生位置的堆栈跟踪?或者任何额外的信息?

更新 1:

我可以用:

signal(SIGSEGV, sigHandler);

但我仍然没有堆栈跟踪信息。

最佳答案

Or any extra info?

使用 valgrind 或 efence。两者都非常擅长在取消引用时发现野指针的使用,而不是在使用损坏的数据时发现。

关于c++ - C++ 中的 Stackdump 不显示堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6910884/

相关文章:

c - ARM Cortex M3 的 GNU-C 工具链 setup.c 问题

c++ - 调用 gcc _without_ -pthread 有什么好处?

c++ - 如何从字符串中自动格式化和缩进 XML?

c++ - 内存堆问题C++,动态分配多维数组

c++ - 在执行过程中如何用C++代码在计算机中找到Iostream文件

java - 无法使用Spring MVC在服务层包装DAO异常

c++ - 在 glVertexAttribPointer 调用中是否强制转换为 void* 合法 C++?

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?

MySQL TRIGGER NEW.date=NOW() 在除 `id` 和 `name` 之外的任何列更新

c++ - 手动创建 gnu_unique_object 符号