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

时间:2010-01-17 12:18:31

标签: macos unix signals coredump

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

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

5 个答案:

答案 0 :(得分:88)

默认情况下它们似乎被禁止了。运行

$ ulimit -c unlimited

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

答案 1 :(得分:27)

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

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

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

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

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

另见:

答案 2 :(得分:12)

上面的答案,

  

ulimit -c unlimited

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

答案 3 :(得分:10)

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

  

默认写com.apple.finder AppleShowAllFiles TRUE

答案 4 :(得分:10)

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