iOS應用崩潰日誌.crash報告符號化/.dYSM符號表手動解析(Objective-C)

weixin_34402408發表於2018-04-22

2018.4.22

自動解析

藉助第三方平臺,我選擇的是鵝廠出品的Bugly,老老實實地按照文件去配置好你的工程,特別是符號表的配置,那就一切OK了,發生Crash的時候,去後臺看,對應的crash資訊都是已經自動符號化完成了的。Bugly iOS 符號表配置

手動解析
1.崩潰日誌.crash匯出

方式一,開啟Xcode > Window > Devices and Simulators > 選擇相應的裝置 > View Device Logs > 找到相應的crash log > Export Log 儲存到桌面
方式二,開啟Xcode > Window > Organizer > Crashes > 找到相應的log,點選Show in Finder,開啟多層資料夾,然後找到相應的.crash檔案,複製到桌面. (一般情況下,此處的資訊是已經被符號化過的,可以直接檢視到具體崩潰資訊的,無需額外手動解析了)
方式三,應用稽核時發生的Crash,像我悲催的遇到了,AdHoc版本沒問題,AppStore版本就是會崩潰,真是簡直了;將稽核反饋資訊中附帶的.txt下載到桌面,改變字尾為.crash

2.符號表檔案.dYSM匯出

注:.dSYM檔案是iOS編譯後儲存16進位制函式地址對映資訊的檔案,每次應用程式build後,都會生成對應的xxx.appxxx.app.dSYM檔案,不過前提是,你沒有亂搞你的工程配置;在工程配置中設定生成.dSYM檔案 ,Build Settings -> Debug information format -> 選DWARF with dSYM File ,打包時就會生成dSYM檔案
方式一,獲取.archive檔案,前往資料夾 /使用者/使用者名稱/資源庫/Developer/Xcode/Archives -> 找到目標build版本對應的.archive檔案 > 顯示包內容,找到其中的xxx.app.dSYM檔案,複製到桌面
方式二,如果已經成功上架商店了,那麼可以選擇,開啟Xcode > Window > Organizer > Archives > 選擇正確的Build版本,右邊資訊欄點選Download dYSMs...下載檔案到桌面
方式三,從iTunes Connect網站下載dSYM檔案,1. 開啟App Details頁面。2. 點選活動。3. 從所有版本列表中選擇一個版本。4. 點選**下載dSYM**連結。 Technical Note TN2151 反正我到現在也沒找著那個所謂的下載連結了,ok,我承認我很笨 = = 。

3.指令碼檔案symbolicatecrash匯出

Xcode 7及之前的版本應該是,前往資料夾 使用者/使用者名稱/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources
Xcode 7之後的版本是,使用者/使用者名稱/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources
當然,也可以直接在應用資料夾中找到Xcode.app顯示包內容,手動進到Resources資料夾了
複製symbolicatecrash指令碼檔案到桌面

4.手動解析.

現在我們有了.crash日誌檔案,.dYSM符號表檔案,以及symbolicatecrash指令碼檔案,新建一個資料夾,隨意命名為crashAnalysis,將3個檔案都拖入其中;
command+空格開啟spotlight,輸入ter開啟終端,終端中輸入cd + 空格,將crashAnalysis拖入終端以自動補充檔案路徑,點選回車;即,進入到桌面crash資料夾中
終端中繼續輸入命令:進行crash日誌解析

./symbolicatecrash xxx.crash的檔案路徑 xxx.app.dSYM的檔案路徑 > log.crash

如果終端報錯:

Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69. 

輸入:

export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"

然後再輸入:進行crash日誌解析

./symbolicatecrash xxx.crash的檔案路徑 xxx.app.dSYM的檔案路徑 > log.crash

現在,crashAnalysis資料夾中會新增檔案log.crash,這個就是已經符號化完成了的日誌檔案了。那麼,江湖再見咯~

參考連結:我怎麼可能那麼聰明,沒有參考連結就能搞的定呢~
1.iOS crash報告符號化,.ips檔案分析
2.Bugly,手動生成符號表的步驟
3.iOS通過dSYM檔案分析crash
4.Where is located symbolicatecrash in Xcode 8?

相關文章