如何在Ubuntu中生成核心转储文件

时间:2011-05-27 12:28:06

标签: c coredump

我想知道如何在Ubuntu中生成核心转储文件。我使用的是Ubuntu 8.04.1和gcc编译器4.2.3。我编写了一个简单的C程序来生成核心转储。我已经将程序编译为 - gcc -g badpointer.c。当我运行程序时,它会给出分段错误,但不会生成核心转储。我还需要做些什么才能生成核心转储文件?

3 个答案:

答案 0 :(得分:48)

的Linux

通过以下方式激活您的coredump:

ulimit -c unlimited

另外,请检查:

$ sysctl kernel.core_pattern

查看转储的创建位置(%e将是进程名称,%t将是系统时间。

您可以在/etc/sysctl.conf中更改它,然后按sysctl -p重新加载。

您可以通过以下方式进行测试:

sleep 10 &
killall -SIGSEGV sleep

如果核心转储成功,您将在分段故障指示后看到“(core dumped)”。

另见:


<强> Ubuntu的

如果您使用的是Ubuntu,则转储是由/var/crash中的Apport创建的,但默认情况下会被禁用。

有关详情,请查看:Where do I find the core dump in Ubuntu?


macOS / OS X

在macOS中,Crash Reporter以回溯的形式自动创建崩溃转储。 您可以通过执行Console并转到“用户诊断报告”部分(在“诊断和使用信息”组下)找到这些崩溃文件,也可以在~/Library/Logs/DiagnosticReports中找到它们。

实际核心文件在/cores生成。

了解详情:How to generate core dumps in Mac OS X?

答案 1 :(得分:35)

检查ulimit -c的输出,如果输出0,这就是你没有核心转储的原因。

使用

ulimit -c unlimited

允许核心创建(可能会将unlimited替换为实际大小限制以更安全)。

答案 2 :(得分:0)

使用ulimit -c SIZE 设置最大核心转储大小。