在Mac OS X上,如果我将SIGQUIT发送到我的C程序,它会终止,但是没有核心转储文件。
您是否必须在Mac OS X上手动启用核心转储(如何?),还是将它们写入其他地方而不是工作目录?
答案 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目录必须存在,并且运行该程序的用户必须具有写入权限。