在Mac上写的核心转储在哪里?

xyz*_*xyz 71 unix macos coredump signals

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

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

xyz*_*xyz 93

它们似乎默认被抑制.运行

$ ulimit -c unlimited
Run Code Online (Sandbox Code Playgroud)

将为当前终端启用核心转储,并将其置于/ cores /作为core.PID.当您打开新会话时,它将再次设置为默认值.


ken*_*orb 28

在macOS上,崩溃转储由Crash Reporter自动处理.

您可以通过执行控制台并转到" 用户诊断报告"部分(在"诊断和使用信息"组下)找到回溯文件,也可以在其中找到它们~/Library/Logs/DiagnosticReports.

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

tail -f /var/log/system.log | grep crash
Run Code Online (Sandbox Code Playgroud)

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

也可以看看:


Jos*_*son 12

上面的答案,

ulimit -c无限制

工作 - 但一定要在运行转储核心的程序的同一个终端中运行它.您需要先运行ulimit命令.


Gna*_*ark 10

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

默认写入com.apple.finder AppleShowAllFiles为TRUE

  • 谢谢。我正在使用Terminal(ls -lah)浏览,但是无论如何这都是一个有用的技巧。 (3认同)

小智 10

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

  • 我刚清理了一下,占用了186GB的空间! (4认同)