首页 文章

如何在Ubuntu中生成核心转储文件[重复]

提问于
浏览
22

这个问题在这里已有答案:

我想知道如何在Ubuntu中生成核心转储文件 . 我使用的是Ubuntu 8.04.1和gcc编译器4.2.3 . 我编写了一个简单的C程序来生成核心转储 . 我已经将程序编译为 - gcc -g badpointer.c . 当我运行程序时,它会给出分段错误,但不会生成核心转储 . 我还需要做些什么才能生成核心转储文件?

3 回答

  • 0

    Linux

    通过以下方式激活您的coredumps:

    ulimit -c unlimited
    

    另外,检查:

    $ sysctl kernel.core_pattern
    

    查看转储的创建位置( %e 将是进程名称, %t 将是系统时间) .

    您可以在/etc/sysctl.conf中更改它,然后通过 sysctl -p 重新加载 .

    您可以通过以下方式测试:

    sleep 10 &
    killall -SIGSEGV sleep
    

    如果核心转储成功,您将在分段故障指示后看到“(core dumped)” .

    也可以看看:


    Ubuntu

    如果您使用的是Ubuntu,则转储是由Apport/var/crash 中创建的,但默认情况下它被禁用 .

    有关详细信息,请查看:Where do I find the core dump in Ubuntu?


    macOS / OS X.

    在macOS中,故障转储由Crash Reporter以回溯的形式自动创建 . 您可以通过执行Console并转到'User Diagnostic Reports'部分(在'Diagnostic and Usage Information'组下)找到这些崩溃文件,或者您可以在 ~/Library/Logs/DiagnosticReports 中找到它们 .

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

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

  • 45

    检查 ulimit -c 的输出,如果输出0,这就是你没有核心转储的原因 .

    使用

    ulimit -c unlimited

    允许核心创建(可能用实际大小限制替换 unlimited 以更安全) .

  • 34

    使用 ulimit -c SIZE设置最大核心转储大小 .

相关问题