2011-09-16 105 views
5

我在Objective-C應用程序中使用信號處理程序來捕獲致命錯誤,如SIGSEGV,SIGBUS等。Xcode:GDB和信號處理程序

當發出這樣的信號時,我正在寫一個日誌文件,回溯和詳細的錯誤信息(我知道我可能有重入問題,但這不是重點)。

通過這種方式,我可以在下次啓動時知道應用程序崩潰了,並且我可以詢問用戶是否要填寫錯誤報告。

當我手動啓動應用程序時,它工作正常。

但是當我從Xcode(使用GDB)運行它時,信號處理程序不會被調用。

我試着用signalsigaction來設置它們,但沒有區別。

我也檢查了info signals這些信號設置爲pass,這意味着它們應該被傳遞給應用程序。

這沒有什麼大不了的,因爲我在調試我的應用程序時只遇到了這個問題,但是與GDB一起工作也是非常好的。

有沒有人經歷過並解決過這樣的問題?

+0

您可能想要嘗試將這些信號設置爲在gdb中停止,因此它由您的應用程序管理。 – steve

+0

在提出問題之前,我曾嘗試過,但是我想我犯了一個錯誤,因爲它不起作用。我今天再試一次,它的功能就像一個魅力。你可能想填寫一個答案,所以我可以接受它。謝謝 : ) – Macmade

回答

1

您可能想要嘗試將這些信號設置爲在gdb中停止,因此它由您的應用程序管理。