iOS日常Debug之Crash日誌檔案分析
好久沒寫部落格了,真的不是忙沒有時間。就是懶!閒話少說,言歸正傳。事件起因,群裡一個朋友說自己的app被拒了,蘋果給的被拒原因是AppStore稽核指南條例2.1,說是app存在崩潰。還附帶上了Crash日誌檔案。看了一眼Crash日誌檔案,徹底懵了!
What?(此處略過一句髒話)
一、檢視Crash日誌檔案資訊
看到這種東西,我第一反應就是跑去看官方文件!
- Incident Identifier:crash報告的唯一識別符號。
- CrashReporter Key:每臺裝置的匿名識別符號。
- Hardware Model:crash產生的裝置型別
- OS Version:裝置作業系統版本
- Exception Type:crash異常型別
- Exception Codes:crash異常錯誤碼
- Exception Note:crash異常附加資訊
- Triggered by Thread:異常產生的執行緒。
- Last Exception Backtrace:最後的異常回溯
然並卵,有了這些資訊還是看不懂啊!難道是開啟方式不對?
二、開始分析
我們可以用Xcode自帶的symbolicatecrash工具分析.crash檔案
1、找到Xcode自帶的symbolicatecrash工具路徑:
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
2、找到蘋果公司反饋的crash日誌檔案(我這裡只有一個連結,我直接把連結裡面的crash日誌內容儲存成了一個.crash檔案“XX.crash”)
3、找到崩潰app對應的dSYM檔案。(別人直接發了崩潰app的xcarchive檔案給我,.dSYM檔案就在xcarchive檔案的dSYMs資料夾下的“XX.app.dSYM”)
4、在終端執行以下命令:
symbolicatecrash路徑 XX.crash(蘋果公司給的crash日誌檔案路徑) XX.app.dSYM(崩潰app對應的dSYM檔案路徑) > 輸出檔案路徑
如果在執行命令的過程中會出現錯誤資訊:“Error: “DEVELOPER_DIR” is not defined at /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash line 69.”
解決方案:
在終端執行export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
執行完成後,再執行第4步。
第4步執行具體過程如下圖所示:
三、分析結果
經過以上4步之後,我們可以在開啟桌面上生成的crash檔案(我的輸出路徑是”~/desktop/exam.crash”)。
這樣是不是思路就清晰了很多?接下來定位bug就看你的了!
本文內容中部分參考網路資料,後續會不斷更新完善。歡迎一起學習交流!