代码之家  ›  专栏  ›  技术社区  ›  Reto Meier

Mac上的核心转储在哪里?

  •  64
  • Reto Meier  · 技术社区  · 15 年前

    在MacOSX上,如果我将sigquit发送到我的C程序,它将终止,但没有核心转储文件。

    您是否必须在Mac OS X上手动启用核心转储(如何实现?)或者它们是被写到其他地方而不是工作目录中?

    5 回复  |  直到 6 年前
        1
  •  88
  •   Skurpi Daghall    6 年前

    它们似乎被默认地抑制了。运行

    $ ulimit -c unlimited
    

    将为当前终端启用核心转储,并将其放置在/cores/as core.pid中。打开新会话时,它将再次设置为默认值。

        2
  •  25
  •   kenorb    7 年前

    在MacOS上,崩溃转储由 Crash Reporter .

    您可以通过执行 Console 然后去 用户诊断报告 部分(在“诊断和使用信息”组下)或您可以在 ~/Library/Logs/DiagnosticReports .

    您还可以检查通过监视在何处生成转储 system.log 文件,例如

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

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

    参见:

        3
  •  12
  •   Joshua Richardson    13 年前

    上面的答案,

    ulimit-c无限制

    工作——但是一定要在运行转储核心的程序的同一个终端上运行它。您需要先运行ulimit命令。

        4
  •  10
  •   Gnark    15 年前

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

    默认值写入com.apple.finder appleshowallfiles true

        5
  •  9
  •   user666406    11 年前

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