<分区>
我想知道如何在 Ubuntu 中生成核心转储文件。我正在使用 Ubuntu 8.04.1 和 gcc 编译器 4.2.3。我编写了一个简单的 C 程序来生成核心转储。我已经按照 --gcc -g badpointer.c 中的方式编译了程序。当我运行该程序时,它会出现段错误,但不会生成核心转储。要生成核心转储文件,我还需要执行哪些其他操作?
<分区>
我想知道如何在 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
如果核心转储成功,您将在段错误指示后看到“(core dumped)”。否则再次仔细检查您的 ulimit
。
另见:
Ubuntu
如果你有 Ubuntu,你的转储是由 Apport 创建的在 /var/crash
中,但是默认情况下它是禁用的。
更多详情,请查看:Where do I find the core dump in Ubuntu?
在 macOS 中,故障转储由 Crash Reporter 自动创建以回溯的形式。
您可以通过执行 Console 找到这些崩溃文件。并转到“用户诊断报告”部分(在“诊断和使用信息”组下),或者您可以在 ~/Library/Logs/DiagnosticReports
中找到它们。
实际的核心文件在/cores
中生成。
关于c - 如何在 Ubuntu 中生成核心转储文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6152232/