如何在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/crash
的apport
创建的,但是采用不同的格式(编辑文件以查看它)。
请阅读更多:
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设置最大核心转储大小。