iOS .Crash檔案分析處理辦法 (利用symbolicatecrash工具處理),
崩潰分析方式:命令列解析Crash檔案
通過Mac內建的命令列工具解析Crash檔案需要具備三個檔案
- symbolicatecrash,Xcode內建的崩潰分析工具,使用這個工具可以更精確的定位崩潰所在的位置,將0x開頭的地址替換為響應的代碼和具體行數。
- 我們打包時產生的dSYM檔案。
- 崩潰時產生的Crash檔案。
1、擷取.crash檔案
擷取崩潰資訊方式:
- 使用友盟、蒲公英等第三方崩潰統計工具。->iOS 友盟第三方崩潰統計的解析-dSYM
- 自己實現應用內崩潰收集,並上傳伺服器。
- Xcode-Devices中直接查看某個裝置的崩潰資訊。
- 使用蘋果提供的Crash崩潰收集服務。
這篇文章先只用第四個方式-審核被拒給我的.crash檔案,其他方式以後討論。
2、擷取 .app 和 .app.dSYM 檔案2.1、步驟:
1、Xcode-Window-Organize找到要檢查的對應Archives找到App-右擊-Show in Finder
2、右擊 .xcarchive 檔案-顯示包內容
3、分別複製dSYMs檔案夾下的 **.app.dSYM 檔案和 Products->Applications檔案夾下的 app檔案放入 .crash 檔案所在的crash檔案夾中(檔案夾自己建的)。
2.2、dSYM 符號集介紹:
- 符號集是我們對ipa檔案進行打包之後,和.app檔案同級的尾碼名為.dSYM的檔案,這個檔案必須使用Xcode進行打包才有。
- 每一個.dSYM檔案都有一個UUID,和.app檔案中的UUID對應,代表著是一個應用。而.dSYM檔案中每一條崩潰資訊也有一個單獨的UUID,用來和程式的UUID進行校對。
- 我們如果不使用.dSYM檔案擷取到的崩潰資訊都是不準確的。
- 符號集中儲存著檔案名稱、方法名、行號的資訊,是和可執行檔的16進位函數地址對應的,通過分析崩潰的.Crash檔案可以準確知道具體的崩潰資訊。
當程式崩潰的時候,我們可以獲得到崩潰的錯誤堆棧,但是這個錯誤堆棧都是0x開頭的16進位地址,需要我們使用Xcode內建的symbolicatecrash工具來將.Crash和.dSYM檔案進行符號化,就可以得到詳細崩潰的資訊。
3、擷取symbolicatecrash工具
1、開啟終端輸入以下命令:
find /Applications/Xcode.app -name symbolicatecrash -type f我找到的是:/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
2、用命令將symbolicatecrash拷貝到案頭的crash檔案夾裡面,與.app和.app.dSYM放一起
cp /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash /Users/***/Desktop/crash
4、開始命令列解析Crash檔案
1、開啟終端用命令切換到案頭的crash目錄下:
cd /Users/***/Desktop/crash
2、執行命令
./symbolicatecrash /Users/***/Desktop/crash/*.crash /Users/***/Desktop/crash/*.app.dSYM > jieguo.crash2.1、 如果上面命令不成功,需要使用下面命令設定一下匯出的環境變數,然後重複上面解析的操作。export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer
3、解析完成後會產生一個新的.Crash檔案,這個檔案中就是崩潰詳細資料。
解析前 解析後
使用友盟、蒲公英等第三方崩潰統計工具擷取的資訊可以用如下方式解析iOS 友盟第三方崩潰統計的解析-dSYM