做爲一名iOS移動應用開發者,爲了確保你的應用程序正確無誤,在將應用程序提交到應用商店以前,你一定會進行大量的測試工做;並且在你測試的過程當中應用程序運行的很好,可是在應用商店上線以後,仍是有用戶抱怨應用程序會「閃退」!如今做爲應用程序的開發人員你確定會準備打開代碼準備修復「閃退」的問題,可是就在這個時候你會發現,到底那段代碼?那個地方的問題呢......;這個時候iOS崩潰日誌就派上用場了,那麼如今咱們就來研究怎麼獲取應用崩潰的日誌,以及從日誌追蹤到代碼。html
(一)什麼是崩潰日誌,從哪裏能獲得它:iphone
iOS設備上的應用閃退時,操做系統會生成一個崩潰報告,也叫崩潰日誌,保存在設備上,崩潰日誌上有不少有用的信息,包括應用是什麼狀況下閃退的。一般,上面有每一個正在執行線程的完整堆棧跟蹤信息,因此你能從中瞭解到閃退發生時各線程都在作什麼,並分辨出閃退發生在哪一個線程上。工具
(二)獲取崩潰日誌的幾種方法:測試
一、當用戶抱怨閃退時,你能夠要求他讓設備與iTunes同步,設備與電腦上的iTunes Store同步後,會將崩潰日誌保存在電腦上(路徑:Mac OS X:~/Library/Logs/CrashReporter/MobileDevice/)到上述位置把崩潰日誌下載下來,而後經過電子郵件發送給你;用這個方法獲取崩潰日誌時,你必需儘可能獲取用戶設備生成的全部崩潰日誌。由於崩潰日誌越多,就越容易診斷問題所在。spa
二、若是你裝了Xcode,也能很容易經過Xcode從你的設備上得到崩潰日誌;將iOS設備鏈接到電腦上,而後打開Xcode;從菜單欄上選擇 Window菜單, 而後選擇 Organizer (快捷方式是 Shift-CMD-2)在Organizer 窗口上, 選中 Devices 標籤欄,在左側的導航面板上,選中Device Logs;LIBRARY下面的Device Logs是你全部設備(曾經鏈接到Xcode的)的日誌;每一個設備下面的Device Logs是對應設備的日誌。操作系統
三、應用提交到App Store後,你也能從 iTunes Connect 獲取到用戶的崩潰日誌,登陸到 iTunes Connect 上,選擇 Manage Your Applications, 點擊相應的應用,點擊應用圖標下面的View Details按鈕, 而後點擊右欄Links部分的 Crash Reports;若是沒有崩潰日誌,試試點擊Refresh按鈕刷新一下。若是你的應用用戶量還很少,或者剛上架不久,iTunes Connect帳號上也可能尚未任何崩潰日誌;若是有的話你就會看到不一樣iOS版本用戶下的崩潰信息。線程
四、使用工具來獲取應用程序崩潰日誌,如今小編來推薦一款好用的工具(名稱:Bugly,網址:http://bugly.qq.com/)官網上由詳細的講解,還附有Demo,小編就不一一解說了;日誌
五、iphone崩潰日誌分析工具symbolicatecrash;Symbolicatecrash是Xcode自帶的一個分析工具,能夠經過機器上的崩潰日誌和應用的.dSYM文件定位發生崩潰的位置,把crash日誌中的地址替換成代碼相應位置(詳情見:http://www.cnblogs.com/ydhliphonedev/archive/2012/12/07/2806866.html);code
(三)什麼狀況下會產生崩潰日誌:移動應用開發
1.用戶違反操做系統規則:
違反iOS規則包括在啓動、恢復、掛起、退出時watchdog超時、用戶強制退出和低內存終止。
2.應用中有Bug:
這時候你們會想,有Bug的應用程序還會上傳應用商店成功嗎?小編的理解是應用程序中一些潛在的Bug也許是iOS系統更新以後產生的Bug,就想iOS8 -> iOS9以後蘋果默默的就把http改爲了https。