我想知道如何在 Ubuntu 中生成核心转储文件。我使用的是 Ubuntu 8.04.1 和 gcc 编译器 4.2.3。我编写了一个简单的 C 程序来生成核心转储。我已经编译了该程序,如 -- gcc -g badpointer.c 。当我运行该程序时,它给出了分段错误,但没有生成核心转储。我还需要做什么才能生成核心转储文件?
Linux
通过以下命令激活您的核心转储:
ulimit -c unlimited
另外,请检查core_pattern
价值依据:
sysctl kernel.core_pattern
查看转储的创建位置(%e
将是进程名称,并且%t
将是系统时间)。
您可以在 /etc/sysctl.conf 中更改它,然后重新加载sysctl -p
.
您可以通过以下方式进行测试:
sleep 10 &
killall -SIGSEGV sleep
如果核心转储成功,您将在分段错误指示后看到“(core dumped)”。否则请仔细检查您的ulimit
s again.
也可以看看:
- 如何在 Linux 中针对分段错误生成核心转储? https://stackoverflow.com/q/17965/55075
- 当我的程序崩溃时如何自动生成堆栈跟踪 https://stackoverflow.com/q/77005/55075
Ubuntu
如果你有 Ubuntu,你的转储是由Apport https://wiki.ubuntu.com/Apport in /var/crash
,但默认情况下它是禁用的。
欲了解更多详情,请查看:在 Ubuntu 中哪里可以找到核心转储? https://askubuntu.com/q/966407/78223
macOS/OS X
在 macOS 中,故障转储是由以下命令自动创建的事故报告者 http://en.wikipedia.org/wiki/Crash_Reporter以回溯的形式。
您可以通过执行找到这些崩溃文件Console http://en.wikipedia.org/wiki/Console_%28OS_X%29并转到“用户诊断报告”部分(在“诊断和使用信息”组下),或者您可以在~/Library/Logs/DiagnosticReports
.
实际的核心文件是在/cores
.
阅读更多:如何在 Mac OS X 中生成核心转储? https://stackoverflow.com/questions/9412156/how-to-generate-core-dumps-in-mac-os-x
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)