我找到了一个有用的主题,用于查找导致 Window 上的核心转储文件崩溃的代码行 (http://www.codeproject.com/Articles/3472/Finding-crash-information-using-the-MAP-file)。但我找不到 Linux 的类似主题。有时我在测试系统上有 coredump 但由于缺少调试信息我无法分析它们。我无法复制这个崩溃,所以我无法调试它们。 Gdb stacktrace 显示堆栈如下:
#0 0x00a2b430 in __kernel_vsyscall ()
#1 0x01522b11 in raise () from /lib/libc.so.6
#2 0x015243ea in abort () from /lib/libc.so.6
#3 0x08126e9f in ?? ()
#4 0x081276a8 in ?? ()
#5 0x0808b6fb in main ()
所以我想有一个类似的主题,即从 Linux 上的 coredump 中查找崩溃信息,就像上面的 Window 主题一样。你能帮忙想出任何解决方案或相关主题吗?
最佳答案
通常可以使用与“旧”编译器标志完全相同的一组 C 编译器标志重新编译程序,只需添加 -g 来添加调试信息,然后将此可执行文件与生成的核心转储一起加载到调试器中。
但是,重要的是不要更改源代码中的任何内容或更改任何编译器标志,因为这会导致生成与核心转储不匹配的不同代码。唯一可以更改的标志是 -g,它添加了调试信息。
关于c++ - 在 Linux 上从 coredump 中发现崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30163342/