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

C 如何在Ubuntu中生成核心转储文件,c,coredump,C,Coredump,我想知道如何在Ubuntu中生成核心转储文件。我正在使用Ubuntu 8.04.1和gcc编译器4.2.3。我已经编写了一个简单的C程序来生成一个内核转储。我已经按照--gcc-g badpointer.c编译了这个程序。当我运行程序时,它会给出分段错误,但不会生成核心转储。要生成核心转储文件,我还需要做哪些事情?检查ulimit-c的输出,如果输出0,这就是为什么不转储核心 使用 ulimit-c unlimited 允许创建内核(可以用实际大小限制替换无限大小,以更安全)。使用ulimit-

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

检查
ulimit-c
的输出,如果输出0,这就是为什么不转储核心

使用

ulimit-c unlimited


允许创建内核(可以用实际大小限制替换
无限大小
,以更安全)。

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

Linux 通过以下命令激活coredumps:

ulimit -c unlimited
此外,通过以下方式检查
核心模式
值:

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

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

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

sleep 10 &
killall -SIGSEGV sleep
如果堆芯倾倒成功,在分段故障指示后,您将看到“(堆芯倾倒)”。否则,请再次仔细检查您的
ulimit
s

另见:


Ubuntu

如果你有Ubuntu,你的转储文件是在
/var/crash
中创建的,但是默认情况下它是禁用的

有关详细信息,请查看:


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

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


阅读更多信息:

使用
sleep 10&killall-SIGSEGV sleep
如何添加选项以重新启动或保持关闭应用程序?@e-info128一旦进程因SIGSEGV信号而停止(基本崩溃),您将无法重新打开它。您需要重新启动一个新流程,除非它是一个服务,这样它就可以自动重新启动。