我在CTest Framework中运行单元测试时遇到分段错误。所以我需要用于seg故障的核心转储文件。但无法找到它。
答案 0 :(得分:0)
在最近的Ubuntu(在我的情况下为12.04)中,可能会打印“Segmentation fault(core dumped)”,但是没有核心文件产生在您可能期望的位置(例如本地编译的程序)。
如果您的核心文件大小为ulimit为0(you haven't done ulimit -c unlimited
),则会发生这种情况 - 这是Ubuntu的默认设置。通常这会抑制“(核心转储)”,让你陷入错误,但在Ubuntu上,核心文件通过/proc/sys/kernel/core_pattern
通过管道输送到Apport(Ubuntu的崩溃报告系统),这似乎会导致误导消息。 / p>
如果Apport发现有问题的程序不是一个,它应该报告崩溃(你可以在/var/log/apport.log
中看到),它会回退到模拟将核心文件放入的错误内核行为cwd(这是在脚本/ usr / share / apport / apport中完成的)。这包括尊重ulimit,在这种情况下它什么都不做。但是(我假设)就内核而言,生成了一个核心文件(并通过管道传输给apport),因此消息“Segmentation fault(core dumped)”。
最终PEBKAC忘了设置ulimit,但误导性的消息让我觉得我已经疯了一会儿,想知道吃了我的核心文件是什么。
(另外,一般来说,核心(5)手册页 - man 5 core
- 是核心文件最终结束的原因以及可能无法编写的原因。)