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

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

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

ulimit -c unlimited 

还检查:

 $ sysctl kernel.core_pattern 

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

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

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

 sleep 10 & killall -SIGSEGV sleep 

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

也可以看看:

当我的gcc C ++应用程序崩溃时如何生成堆栈跟踪


Ubuntu的

如果您使用的是Ubuntu,您的转储是由/var/crashapport创建的,但是采用不同的格式(编辑文件以查看它)。

请阅读更多:

https://wiki.ubuntu.com/Apport


OS X.

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

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

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

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

使用

ulimit -c unlimited

允许核心创建(可能通过实际大小限制替换为更安全)。

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