2010-01-17 93 views
59

在Mac OS X上,如果我將SIGQUIT發送到我的C程序,它會終止,但沒有核心轉儲文件。在Mac上寫入的核心轉儲文件在哪裏?

您是否必須在Mac OS X上手動啓用核心轉儲(如何?),還是將它們寫入其他位置而不是工作目錄?

+1

不要抱怨你可以重新修飾它 - 事實上你的標題甚至沒有動詞。我很樂意提出你的問題,因爲我對這個問題很感興趣。我仍然認爲這個問題並沒有遵循SO所要求的質量。 我甚至有關於coredump的相關問題http://stackoverflow.com/questions/2207233/how-to-enable-full-coredumps-on-os-x 順便說一句,coredumps要位於'/核心「,但使用終端和root帳戶查看此文件夾。 – sorin

+5

@Sorin建議不是問題,小氣。 – xyz

+1

@Sorin FYI'are'是(連接)動詞。不是說這裏真的很重要,但是如果我們批評語法,就讓它正確吧;)http://examples.yourdictionary.com/reference/examples/examples-of-linking-verbs.html –

回答

79

它似乎是默認禁止的。運行

$ ulimit -c unlimited 

能令核心轉儲,它會被放在/核心/作爲core.PID

10

默認情況下,在Mac OSX上的特定目錄是隱藏的。您可能希望在終端中啓用此功能,然後核心轉儲應該在目錄/內核中可見。

默認寫com.apple.finder AppleShowAllFiles TRUE

+1

謝謝。我正在瀏覽終端(ls -lah),但無論如何,這是一個有用的提示。 – xyz

12

上面的答案,

的ulimit -c無限

作品 - 但一定要運行在同一個終端上運行核心轉儲程序。您需要先運行ulimit命令。

8

此外,/ cores目錄必須存在,運行該程序的用戶必須具有寫入權限。

+3

我剛把它清理乾淨,佔用了我的空間186GB! – Dragonborn

19

在macOS上,您的故障轉儲將由Crash Reporter自動處理。

您可以回溯通過執行Console和去用戶診斷文件的報告部分(在「診斷和使用信息」組),或者你可以在~/Library/Logs/DiagnosticReports找到它們。

您還可以通過監視system.log文件(例如,文件)來檢查生成轉儲的位置。

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

實際核心轉儲文件,你可以在/cores找到。

參見: