当我在CTEST框架中运行单元测试时,我会遇到细分故障。因此,我需要SEG故障的核心转储文件。但无法找到它。
在最近的ubuntu上(我的情况下为12.04(,可以打印"分割故障(核心倾倒(",但是没有生成您可能期望的核心文件(例如本地编译的程序(。
如果您的核心文件大小ULIMIT为0(you haven't done ulimit -c unlimited
( - 这可能会发生这种情况 - 这是Ubuntu上的默认值。通常,这会抑制"(核心倾倒(",使您陷入错误,但是在Ubuntu上,Corefiles通过/proc/sys/kernel/core_pattern
将Corefiles被输送到Apport(Ubuntu的崩溃报告系统(,这似乎会导致误导性消息。
如果Apport发现该程序不是一个应该报告崩溃的程序(您可以在/var/log/apport.log
中看到的(,则它落后于模拟将核心文件放入CWD的默认内核行为(这是在脚本/usr/share/apport/apport中完成。这包括尊敬Ulimit,在这种情况下,它无济于事。但是(我假设(就内核而言,生成了一个Corefile(并输送到Apport(,因此消息"分割故障(核心倾倒("。
最终是佩布卡克(Pebkac(忘记了ulimit,但是误导性的信息让我以为我生气了一段时间,想知道什么在吃我的核心文件。
(总的来说,核心(5(手册页 - man 5 core
-是核心文件结束的地方的好参考,原因可能未写。(