好久沒寫博客了,真的不是忙沒有時間。就是懶!閒話少說,言歸正傳。事件起因,羣裏一個朋友說自己的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就看你的了!
本文內容中部分參考網絡資料,後續會不斷更新完善。歡迎一起學習交流!