1
當在Yosemite下調用時(在stderr上打印「段錯誤:11」)時,OS X二進制運行到段錯誤,但當使用lldb調用時,不會發生段錯誤,並且程序以錯誤結束代碼0.在OS X上捕獲與lldb的段錯誤
你有什麼想法是什麼原因可能,使用lldb時不會發生segfault?有沒有辦法在那裏觸發它(當它發生時停止執行,所以可以進行一些調試)?
當在Yosemite下調用時(在stderr上打印「段錯誤:11」)時,OS X二進制運行到段錯誤,但當使用lldb調用時,不會發生段錯誤,並且程序以錯誤結束代碼0.在OS X上捕獲與lldb的段錯誤
你有什麼想法是什麼原因可能,使用lldb時不會發生segfault?有沒有辦法在那裏觸發它(當它發生時停止執行,所以可以進行一些調試)?
嘗試單獨運行程序並附加到它。如果你的二進制文件被稱爲a.out
,你可以使用process attach --waitfor
命令是這樣的:
term1$ lldb
(lldb) pr a -w a.out
term2$ a.out
LLDB將輪詢進程表,直到a.out
啓動 - 當它看到這個過程中,它會附加到它。在lldb終端中,c
(continue
)進程執行。
或者,您可能會在~/Library/Logs/DiagnosticReports/
的流程部門中有一個崩潰報告。這會告訴你在你的二進制文件崩潰的地方的回溯。您可能還想打開Console.app
並查看是否有任何消息在其崩潰的位置被記錄到控制檯。
謝謝,這對我工作! – muffel 2014-11-23 22:33:19