2011-10-19 27 views
0

失敗的assert語句會生成崩潰報告(帶有堆棧跟蹤),這些報告將在iTunes Connect中流行嗎?斷言和未捕獲的異常是否生成崩潰報告?

我想知道NSAssert以及未捕獲的C++/Obj-C異常。

請注意,我使用斷言的內部一致性和邏輯錯誤,而不是像文件錯誤的東西。

如果他們不生成錯誤報告,有沒有辦法讓他們(與自定義宏,異常處理程序等)?能夠獲得堆棧跟蹤很重要。

回答

0

是的,未捕獲的異常將生成崩潰報告 - 我正在查看來自iTunes Connect崩潰記者的一個!基本上,幾乎所有導致應用程序崩潰並保存日誌的內容都會將報告發送回Apple。

這就是說,如果你擔心它,你可能想要實現自己的處理程序崩潰報告,因爲a)只有選擇與Apple共享診斷信息的用戶纔會將崩潰報告發送回iTunes Connct,和b)即使這樣,一份崩潰報告也不能保證讓你回顧。

您可以使用未捕獲的異常處理程序,通過現有的分析包(Flurry支持此操作)或使用質量可變的開放源代碼庫(here's one I've found online - 我爲自己的報告實現自己的代碼,您的里程可能會有所不同!)

+0

我嘗試了斷言和C++/Obj-C異常,並查看了XCode Organizer中的「設備日誌」。我可以確認它們確實生成了堆棧軌跡,可以讓您找出故障的根源。但是,不會記錄異常類型和消息。 –

+0

我可能沒有時間來實現或使用崩潰處理程序。但很高興知道我至少可以獲取適用於所有類型的未捕獲異常的iTunes Connect崩潰報告,而無需任何額外的編程工作。 –

1

如果您使用的是標準Xcode模板之一,則Xcode默認情況下會禁用NSAssert()版本的宏。或者,您可以通過在「生成設置」中爲其他C++標誌添加NS_BLOCK_ASSERTIONS標誌來自行禁用它們。

+0

很高興知道。我不得不編輯發佈模式構建配置,以便斷言不被禁用。 –

相關問題