iOS Crash - 收集篇

項目崩潰,crashLog但是你的救命稻草,能讓你快速分析出bug的問題所在,不會收集可不行。
固然項目在開發時,能夠經過控制檯log看到調用堆棧,發佈版的crash 收集通常有三種方式可選:服務器

1.蘋果Crash收集服務

經過iTunes Connect(Manage Your Applications - View Details - Crash Reports)獲取用戶的crash日誌。在XCode 中Window->Organizer->Crashes也能夠看到一樣的crash日誌,請看這篇文章:如何查看iOS已上架app崩潰分佈、定位crash發生的行
可是 收集crash功能須要用戶設置->隱私->診斷與用量->診斷與用量數據(iOS8一下在通用中設置) 選擇自動發送,並與開發者共享便可;因此不推薦用。app

2.本身實現應用內崩潰收集,並上傳服務器

在程序啓動時加上一個異常捕獲監聽,用來處理程序崩潰時的回調動做NSSetUncaughtExceptionHandler (&UncaughtExceptionHandler)。UncaughtExceptionHandler是一個函數指針,該函數須要咱們實現,能夠取本身想要的名字。當程序發生異常崩潰時,該函數會獲得調用,這跟C,C++中的回調函數的概念是同樣的。函數


獲取到了崩潰日誌,如何發送給開發者呢,目前通常有如下兩種方式:
將崩潰信息持久化在本地,下次程序啓動時,將崩潰信息做爲日誌發送給開發者。經過郵件發送給開發者。 不過此種方式須要獲得用戶的許可,由於iOS不能後臺發送短信或者郵件,會彈出發送郵件的界面,只有用戶點擊了發送纔可發送。工具

3.第三方收集crash

使用友盟、bugHD、Flurry 等第三方崩潰統計工具,原理都是根據系統產生的crash日誌進行了一次提取或封裝,而後將封裝後的crash文件上傳到對應的服務端進行解析處理。
優勢是快速集成crash收集功能,有完善的後臺管理界面和解析處理(crash文件是要解析後才能看懂的),好用還不要錢。
友盟崩潰統計官方文檔 bugHD統計 Flurryspa

最後 惡意覆蓋問題

崩潰收集統計函數應該只進行一次調用,若是用第三方的話也最好只用一個第三方,這樣咱們獲取崩潰統計信息的途徑也是惟一的。
第三方統計工具並非用的越多越好,使用 多個崩潰收集第三方會致使NSSetUncaughtExceptionHandler()函數指針的惡意覆蓋,如今不少第三方崩潰收集工具爲了確保本身能最大可能的收集到崩潰信息,會對NSSetUncaughtExceptionHandler()函數指針的惡意覆蓋。由於這個函數是將函數地址當作參數傳遞,因此只要重複調用就會被覆蓋,這樣就不能保證崩潰收集的穩定性。指針

相關文章
相關標籤/搜索