2014-11-23 32 views
1

當在Yosemite下調用時(在stderr上打印「段錯誤:11」)時,OS X二進制運行到段錯誤,但當使用lldb調用時,不會發生段錯誤,並且程序以錯誤結束代碼0.在OS X上捕獲與lldb的段錯誤

你有什麼想法是什麼原因可能,使用lldb時不會發生segfault?有沒有辦法在那裏觸發它(當它發生時停止執行,所以可以進行一些調試)?

回答

3

嘗試單獨運行程序並附加到它。如果你的二進制文件被稱爲a.out,你可以使用process attach --waitfor命令是這樣的:

term1$ lldb 
(lldb) pr a -w a.out 

term2$ a.out 

LLDB將輪詢進程表,直到a.out啓動 - 當它看到這個過程中,它會附加到它。在lldb終端中,ccontinue)進程執行。

或者,您可能會在~/Library/Logs/DiagnosticReports/的流程部門中有一個崩潰報告。這會告訴你在你的二進制文件崩潰的地方的回溯。您可能還想打開Console.app並查看是否有任何消息在其崩潰的位置被記錄到控制檯。

+0

謝謝,這對我工作! – muffel 2014-11-23 22:33:19