一直在用友盟做崩潰統(tǒng)計,崩潰數(shù)據(jù)收集一直沒有問題扇调,很突然的某天它提供的解析工具解析不出對應的崩潰數(shù)據(jù)了捡絮。就自己找了下相關(guān)的崩潰解析方法福稳,做一下筆記,方便后面自己翻閱。
通過dSYM文件分析crash日志
從iOS8開始,系統(tǒng)可以開始幫助我們收集應用的崩潰日志瓤檐,但前提是用戶同意“與應用開發(fā)者分享”肄满,可以在“設置-》隱私-》診斷與用量-應用開發(fā)者共享”中進行打開或關(guān)閉掰担。
Xcode 自帶的崩潰分析工具:Symbolicatecrash
1>.首先找到?symbolicatecrash所在目錄路徑
xcode6.0以前的位置:/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources
xcode6.0以后的位置:?/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources
2>.找到app對應的.dSYM 文件
在“Xcode-》Window-》Organizer”中可以找到響應的dsym和crash文件。
首先找到最后一次打包提交appstore的archive文件,顯示包內(nèi)容,app對應的.dSYM文件就在dSYMs文件夾中?
3>.將 projectName.app.dSYM 文件 和 crash 日志文件放在同一個目錄中
4>.打開Terminal因妇,并且定位到.dSYM文件和.crash文件所在的文件夾
5>.在終端中輸入 export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
6>.繼續(xù)輸入? symbolicatecrash?路徑/symbolicatecrash crashFile.crash projectName.app.dSYM > crash.txt
7>.打開目錄中的crash.txt文件址芯,迅速定位錯誤代碼
這是友盟收集到的崩潰信息旬陡,怎么處理呢砰左?
根據(jù)錯誤堆棧定位到錯誤位置
這是未標記錯誤位置僻造,無基地址的情況憋他。這條調(diào)用棧包括下面四部分:
模塊號: 這里是4
二進制庫名: 這里是 TalentService
調(diào)用方法的地址: 這里是 0x1002c28f4
第四部分為偏移地址,偏移地址為 710956髓削。
將0x1002c28f4
轉(zhuǎn)為10進制是4297861364举瑰,4297861364-710956 = 4297150408
再轉(zhuǎn)為16進制為 0想00214fc8,這個就是基地址了蔬螟。
找到xcarchive文件打開此迅,顯示包內(nèi)容,將里面的“Products->Applications->文件”和”dSYMs->文件“保存到一個新的文件夾中。
打開終端耸序,進入這個新文件夾下忍些,輸入如下命令就可以得到崩潰信息
atos -arch arm64 -o TalentService.app/TalentService -l 0x100214fc8 0x1002c28f4
如圖所示:
參考網(wǎng)址:iOS 錯誤堆棧查找崩潰原因的方法?