首页 > 解决方案 > 如何从截断的 Linux C 程序核心中收集最少的调试数据?有或没有 GDB?

问题描述

如何从截断的 Linux C 程序核心中收集最少的调试数据?

我尝试了几个小时使用相同的程序重现分段故障信号,但我没有成功。我只成功拿到过一次。我不知道如何用 gdb 提取最少的信息。我认为我对 gdb 很有经验,但现在我想我必须再次学习很多东西......也许有人知道除 GDB 之外的另一个调试器来尝试一些东西。我所说的最少信息是指产生段错误信号的调用函数。

我的核心文件是 32MB,GDB 表明需要的核心分配内存是 700MB。如何知道与段错误有关的更深层次的堆栈函数是否在核心文件中被识别?

从文件名中我已经知道了相关的线程名称,但调试程序还不够。我收集了主程序的 /proc/$PID/maps 文件,但我不知道检索 segfault 函数是否有用。

此外,如何知道段错误信号是来自线程内部还是来自线程外部?

标签: linuxsegmentation-faultgdbcoretruncated

解决方案


推荐阅读