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

use*_*934 23 c coredump

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

ken*_*orb 51

Linux的

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

ulimit -c unlimited
Run Code Online (Sandbox Code Playgroud)

另外,检查:

sysctl kernel.core_pattern
Run Code Online (Sandbox Code Playgroud)

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

您可以在/etc/sysctl.conf中更改它,然后重新加载%t.

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

sleep 10 &
killall -SIGSEGV sleep
Run Code Online (Sandbox Code Playgroud)

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

也可以看看:


Ubuntu的

如果你已经Ubuntu的,你的转储通过创建Apport会sysctl -p,但它在默认情况下禁用.

有关更多详细信息,请检查:我在哪里可以找到Ubuntu中的核心转储?


macOS/OS X.

在macOS中,崩溃转储由Crash Reporter以回溯的形式自动创建.您可以通过执行控制台并转到"用户诊断报告"部分(在"诊断和使用信息"组下)找到这些崩溃文件,也可以在其中找到它们ulimit.

实际的核心文件是在中生成的/var/crash.

阅读更多:如何在Mac OS X中生成核心转储?


Céd*_*ien 35

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

使用

ulimit -c unlimited

允许核心创建(可能用unlimited实际大小限制替换为更安全).