2012-02-21 65 views
1

我正在研究C中的一個PostgreSQL擴展,它表示segfaults,所以我想看看我的OS X Lion框上的核心轉儲文件。但是,/cores或其他任何地方都沒有核心文件。看來他們在系統中啓用,但僅限於一個大小爲0:如何在OS X Lion上獲得核心轉儲?

> sysctl kern.coredump    
kern.coredump: 1 
> ulimit -c 
0 

我試着在我使用的啓動和停止的PostgreSQL的shell會話設置ulimit -c unlimited,似乎堅持:

> ulimit -c 
unlimited 

然而不管我做什麼,都沒有核心文件。我以pg_ctl -c開始PostgreSQL,其中-c告訴PostgreSQL生成核心轉儲。但是這個系統一無所有。我如何讓Lion轉儲核心文件?

+0

如果我編寫一個調用abort()的小程序,設置ulimit -c unlimited並運行它,我會在Lion上的/ cores中獲得核心轉儲。你可以做一個快速的健康檢查嗎?如果它能夠工作,我會懷疑PostgreSQL中有些奇怪的事情發生,或者是在你的ulimit和pg_ctl啓動的最終子進程之間出現問題。 – 2012-02-21 23:26:42

回答

1

Lion中的/ cores /目錄不一定存在,如果不存在,則不會獲取核心。你應該可以設置ulimit(像你一樣),運行一個像cat(1)這樣的程序,用一個SIGQUIT(控制反斜槓)退出並得到一個coredump:

lion:〜user $ ulimit -c unlimited 獅子:〜用戶$貓 ^ \ ^ \ 退出:3(核心轉儲) 獅子:〜用戶$ LS -l /核/ 總716584 -r -------- 1用戶的用戶366891008 Jun 21 23:35 core.1263 獅子:〜用戶$

技術說明TN2124 http://developer.apple.com/library/mac/#technotes/tn2124/如Yuji在https://stackoverflow.com/a/3783403/225077中建議的是有幫助的。