【问题标题】:Where are core dumps written on Mac?Mac 上的核心转储写在哪里?
【发布时间】:2019-09-04 06:57:46
【问题描述】:

在 Mac OS X 上,如果我将 SIGQUIT 发送到我的 C 程序,它会终止,但没有核心转储文件。

您是否必须在 Mac OS X 上手动启用核心转储(如何?),还是将它们写入其他地方而不是工作目录?

【问题讨论】:

  • 你可以改写它而不是抱怨——事实上你的标题甚至没有动词。我很乐意支持您的问题,因为我对这个主题很感兴趣。我仍然认为问题不符合 SO 要求的质量。我什至有关于 coredump stackoverflow.com/questions/2207233/… 的相关问题顺便说一句,coredump 位于 /cores 但请使用终端和 root 帐户查看此文件夹。
  • @Sorin 建议不是问题,小事才是问题。
  • @Sorin 仅供参考'是'是一个(链接)动词。并不是说它在这里真的很重要,但如果我们批评语法,让我们做对;)examples.yourdictionary.com/reference/examples/…

标签: macos unix signals coredump


【解决方案1】:

默认情况下它们似乎被抑制了。跑步

$ ulimit -c unlimited

将为当前终端启用核心转储,它将作为core.PID 放置在/cores 中。当您打开一个新会话时,它将再次设置为默认值。

【讨论】:

    【解决方案2】:

    在 macOS 上,您的故障转储由 Crash Reporter 自动处理。

    您可以通过执行Console 并转到用户诊断报告部分(在“诊断和使用信息”组下)找到回溯文件,或者您可以在~/Library/Logs/DiagnosticReports 中找到它们。

    您还可以通过监控system.log文件来检查转储的生成位置,例如

    tail -f /var/log/system.log | grep crash
    

    您可以在/cores 中找到实际的核心转储文件。

    另见:

    【讨论】:

      【解决方案3】:

      另外,/cores 目录必须存在,并且运行程序的用户必须对其有写权限。

      【讨论】:

      • 我刚刚清理了它,占用了我 186GB 的空间!
      【解决方案4】:

      上面的答案,

      ulimit -c 无限制

      有效——但请确保在您将运行转储核心的程序的同一终端中运行它。您需要先运行 ulimit 命令。

      【讨论】:

        【解决方案5】:

        默认情况下,mac osx 中的特定目录是隐藏的。您可能希望在终端中启用此功能,然后核心转储应该在目录 /cores 中可见。

        默认写入 com.apple.finder AppleShowAllFiles TRUE

        【讨论】:

        • 谢谢。我正在使用终端(ls -lah)浏览,但无论如何这是一个有用的提示。
        猜你喜欢
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-30
        • 2015-05-12
        • 1970-01-01
        相关资源
        最近更新 更多