如何在Ubuntu中生成核心转储文件
这个问题在这里已经有了答案:
激活你的coredumps:
ulimit -c unlimited
另请检查:
$ sysctl kernel.core_pattern
查看您的转储的创建位置(%e将是进程名称,%t将是系统时间)。
您可以在/etc/sysctl.conf中更改它,然后通过sysctl -p
重新加载。
你可以测试它:
sleep 10 &
killall -SIGSEGV sleep
如果核心转储成功,您将在分段故障指示后看到“(核心转储)”。
也可以看看:
如何在我的gcc C ++应用程序崩溃时生成堆栈跟踪
Ubuntu的
如果你有Ubuntu,你的转储是通过/var/crash
的apport
创建的,但是格式不同(编辑文件以查看它)。
请阅读更多:
https://wiki.ubuntu.com/Apport
OS X
在OS X中,您的崩溃转储是由Crash Reporter以回溯的形式自动创建的。 您可以通过执行控制台并转至'用户诊断报告'部分(位于“诊断和使用信息”组下)或您可以在~/Library/Logs/DiagnosticReports
找到这些崩溃文件。
实际的核心文件是在/cores
中生成的。
阅读更多:如何在Mac OS X中生成核心转储?
检查ulimit -c
的输出,如果它输出0,这就是为什么你没有核心转储。
使用
ulimit -c unlimited
以允许核心创建(也许可以通过实际大小限制来取代unlimited
以更安全)。
使用ulimit -c
SIZE设置最大核心转储大小。