要分析崩潰日志,首先需要保留釋出時的編譯出來的.xcarchive檔案。這個檔案包含了.DSYM檔案。
我一般的做法是,釋出成功後,把這個檔案.xcarchive直接送出到代碼版本庫對應的版本分支裡,這樣就不會搞丢了。
這個檔案在哪呢?打開XCode->菜單Window->Organizer,在編譯成功的檔案上右鍵,就能打開了。
兩種比較麻煩的方法。
第一種方法:
使用dwarfdump指令
dwarfdump --uuid xx.app.dSYM 用來得到app的UUID。
dwarfdump --lookup 0x12b45d -arch armv7 xx.app.dSYM 使錯誤的日志能看懂,把相應的記憶體位址對應到正确的地方。
如果一開始dwarfdump指令不能用的話,要先裝Command Line Tools,這個在設定裡面能下載下傳(cmd+“,”打開設定)。另外還必須在進入.DSYM所在檔案夾。
使用dwarfdump需要安裝Command Line Tools,XCode裡設定下載下傳。而且需要進入.DSYM所在檔案夾裡進行操作。
第二種方法:
使用xcrun atos指令
atos -o YourApp.app.dSYM/Contents/Resources/DWARF/YourApp 0x00062867
下面重點推薦下這個方法,友善快捷
第三方法:可視化工具
下面這是我的項目裡通過友盟統計到的崩潰日志,如果光看這些日志報告的話,是不會知道是哪行代碼引起的。
使用方法是把對應版本的.xcarchive檔案拖到工具。對比UUID和友盟裡日志是否一緻,一緻就把錯誤的位址資訊拷貝到箭頭處。點選分析。
即可得出具體代碼崩潰位置。很簡單吧。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICdzFWRoRXdvN1LclHdpZXYyd2LcBzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX90TQNhXQq1kdkJjYwkzRkZXUYpVd1kmYr50MZV3YyI2cKJDT29GRjBjUIF2LcRHelR3LcJzLctmch1mclRXY39DNzITNzMTM0EDOwATM0EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
dSYM 檔案分析工具 http://answerhuang.duapp.com/index.php/2014/07/06/dsym_tool/
這是這位部落客answer-huang開發了一個工具,專門用來快速定位崩潰日志的代碼。感謝這位仁兄的提供這麼友善的工具。
工具代碼還是開源的:https://github.com/answer-huang/dSYMTools
工具下載下傳位址:http://pan.baidu.com/s/1bnkxPvT
百度網盤的下載下傳位址容易失效,我上傳csdn下載下傳裡,當然是免積分下載下傳了。
位址:http://download.csdn.net/detail/totogo2010/8012367