我想知道如何在Ubuntu上生成核心转储文件。 我正在使用Ubuntu 8.04.1和gcc编译器4.2.3。 我编写了一个简单的C程序来生成核心转储。 我已经按照以下方式编译了该程序 -- gcc -g badpointer.c。当我运行该程序时,它会出现分段错误,但没有生成核心转储文件。我需要做哪些额外的工作才能生成核心转储文件?
通过以下命令激活您的核心转储:
ulimit -c unlimited
此外,通过以下方式检查core_pattern
值:
sysctl kernel.core_pattern
查看您的转储文件创建位置(%e
将是进程名称,%t
将是系统时间)。
您可以在/etc/sysctl.conf中更改它,然后通过sysctl -p
重新加载。
您可以通过以下方式进行测试:
sleep 10 &
killall -SIGSEGV sleep
ulimit
。Ubuntu
如果你使用的是Ubuntu系统,你的转储文件是由Apport在/var/crash
目录下创建的,但默认情况下它是禁用的。
更多详情请查看:在Ubuntu中如何找到核心转储文件?
在 macOS 中,崩溃转储文件以回溯形式由Crash Reporter自动生成。您可以通过执行 Console 并转到“用户诊断报告”部分(在“诊断和使用信息”组中),或者您可以在 ~/Library/Logs/DiagnosticReports
找到这些崩溃文件。
实际的核心文件会生成在/cores
中。
阅读更多: 如何在 Mac OS X 中生成核心转储文件?
检查 ulimit -c
的输出,如果输出为0,那么这就是为什么没有核心转储的原因。
使用
ulimit -c unlimited
允许核心创建(可能用实际大小限制替换 unlimited
以增加安全性)。
使用ulimit -c
SIZE设置最大核心转储大小。
sleep 10&killall -SIGSEGV sleep
如何添加选项以重新打开或保持关闭的应用程序? - e-info128