c - 如何在 Ubuntu 中生成核心转储文件

标签 c coredump

<分区>

我想知道如何在 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

另见:


Ubuntu

如果你有 Ubuntu,你的转储是由 Apport 创建的在 /var/crash 中,但是默认情况下它是禁用的。

更多详情,请查看:Where do I find the core dump in Ubuntu?


macOS/OS X

在 macOS 中,故障转储由 Crash Reporter 自动创建以回溯的形式。 您可以通过执行 Console 找到这些崩溃文件。并转到“用户诊断报告”部分(在“诊断和使用信息”组下),或者您可以在 ~/Library/Logs/DiagnosticReports 中找到它们。

实际的核心文件在/cores中生成。

阅读更多:How to generate core dumps in Mac OS X?

关于c - 如何在 Ubuntu 中生成核心转储文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6152232/

相关文章:

c - 内存损坏

带有 SIGFPE 的核心转储用于非零除法

Python C-API 和 Numpy : core dump on import_array

自制arrayList中的Coredump

c - 指针减法的机制

c - sscanf float 迭代循环

c - struct itimerspec 中的浮点值

c - 当尝试打印 UINT_MAX 时,我得到 -1

linux - 从 Linux 的核心转储中找到崩溃的汇编指令

C 链接,对 <function> 的 undefined reference