在我們拿到奔潰日志時(shí),里面都是一些看不懂的”亂碼“,此時(shí)我們就需要對(duì)日志進(jìn)行符號(hào)化解析成我們能看懂的類名翩剪,方法名和具體的代碼行數(shù)拨匆。
主要用到3個(gè)文件
1.xx.crash
2.xxx.app..dSYM
3.symbolicatecrash
一.獲取xxx.crash奔潰日志
1).xocde菜單
選擇 Window——>Organizer. 選擇 crashes
2).當(dāng)手機(jī)連接X(jué)code進(jìn)行測(cè)試時(shí),可以直接查看崩潰信息告丢。
具體方法打開 window->Devices & Simulators
然后點(diǎn)擊View Device Logs
3).手機(jī):
設(shè)置——>隱私——>分析——>分析數(shù)據(jù)
可以找到應(yīng)用程序崩潰信息韩玩。是 .ips文件將數(shù)據(jù)可以通過(guò)qq分享 然后將.ips 文件修改為.crash 文件垒玲。(注意 找這個(gè)文件是按照你項(xiàng)目名稱首字母進(jìn)行排序的 不是按時(shí)間)
二.獲取dSYM文件是iOS編譯后保存16進(jìn)制函數(shù)地址映射信息的文件
找到方法:
打開 Xcode -> Window -> Organizer -> CrashDemo -> Archives -> 剛打的包 -> 右鍵 -> Show in Finder, 在 .xcarchive 中找到。
如果你沒(méi)有dSYM文件在工程里設(shè)置一下:
在build settings -> build options -> Debug Information Format 設(shè)置為DWARF with dSYM File即可
三.獲得symbolicatecrash工具
Xcode有自帶的symbolicatecrash工具,可以通過(guò)dSYM文件將crash文件中的16進(jìn)制地址轉(zhuǎn)換成可讀的函數(shù)地址找颓。symbolicatecrash工具位于:
找到位置:
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
將獲取的工具拷貝到一個(gè)自己創(chuàng)建的文件夾內(nèi)合愈。注意 xcode版本不同位置可能不一樣。
四.以上獲取的三個(gè)文件在符號(hào)化前最好先檢查一下xxx.app.dSYM和xxx.crash的uuid是否一致击狮。
查看xxx.app.dSYM文件的uuid的指令:
dwarfdump --uuid xxx.app.dSYM (xxx工程名)
xxx.crash的uuid位于crash日志中的Binary Images:中的第一行尖括號(hào)內(nèi)佛析。如:armv7 <2e6fe8ab6be3336288282c634b76f06d>
把這個(gè)三個(gè)文件放到同一個(gè)文件夾內(nèi)進(jìn)行日志解析
./symbolicatecrash ./*.crash ./*.app.dSYM > log.crash
之后就會(huì)出現(xiàn)一個(gè)log.crash的文件就是我們符號(hào)化的日志文件
可能會(huì)出現(xiàn)以下錯(cuò)誤:
1.Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.
此時(shí)只要告訴終端”DEVELOPER_DIR“的位置
export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"
然后在執(zhí)行解析日志的命令就可以了.
2.如果報(bào)錯(cuò):No symbolic information found
可能是你的xxx.app.dSYM和xxx.crash的uuid不一致