背景
線上app崩潰后毛肋,拿到的crash文件只有地址和偏移地址梗劫,需要將crash文件或者ips文件符號化,才能定位出具體crash的位置嗽冒。
腳本文件
一礁扮、清單1【由測試組提供】
1知举、.crash
或者.ips文件
【必須】
2、*.app.dSYM文件
【必須】
3太伊、ipa
【可選】
4负蠕、dSYMs文件夾
,具體符號在這個(gè)文件夾里【必須】
/dSYMs/Contents/Resources/DWARF/文件倦畅,此文件大小大概為50多M
例如:/dSYMs/Contents/Resources/DWARF/5.0【文件名為5.0】
二遮糖、清單2【開發(fā)】
1、crash_address.sh腳本
【單個(gè)地址腳本】【必須】
2叠赐、crash_symbol.sh腳本
【整個(gè)crash解析腳本】【必須】
三欲账、步驟
1屡江、新建文件夾crash
2、將清單1和清單2 拷貝到crash文件夾
3赛不、確認(rèn)清單
4惩嘉、打開終端cd到crash文件夾
5、校驗(yàn)三個(gè)文件【.app(ipa解壓)踢故、.crash文黎、.dSYM】的uuid,確保三個(gè)uuid一致殿较。
(1)校驗(yàn).app:
dwarfdump --uuid xx.app/xx (xx代表你的項(xiàng)目名)
(2)校驗(yàn).dSYM:
dwarfdump --uuid xx.app.dSYM
(3)校驗(yàn).crash:
crash文件內(nèi) Binary Images: 下面一行中 <> 內(nèi)的地址就是該.crash文件的uuid(已去掉了分隔符“-”)
6耸峭、將原始.crash文件
符號化:
(1) 獲取symbolicatecrash工具
- 打開終端輸入以下命令:
find /Applications/Xcode.app -name symbolicatecrash -type f
- 我找到的路徑是:
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
- 根據(jù)路徑前往文件夾找到
symbolicatecrash
,將其拷貝到crash文件夾
淋纲。
(2) 終端輸入:
sh crash_symbol.sh crash文件 dSYM文件
(3) 若出現(xiàn)"No symbolic information found"
劳闹,檢查一下三個(gè)文件的uuid是否一樣
7、將項(xiàng)目崩潰地址符號化:
經(jīng)過第6步
得到的結(jié)果洽瞬,crashlog.crash
文件本涕,打開后如果發(fā)現(xiàn)系統(tǒng)庫已經(jīng)顯示具體代碼符號,而我們的代碼仍然是地址伙窃。
則需要將具體地址符號化:
(1) 終端輸入:
sh crash_address.sh dSYMs內(nèi)文件夾DWARF下的app 地址1 地址2
例如:
sh crash_address.sh 5.0 0x102e58000 0x00000001036113dc
說明:5.0是dSYMs內(nèi)文件夾DWARF下的app
得到結(jié)果:
-[QLWebViewController webView:shouldStartLoadWithRequest:navigationType:] (in 5.0) (QLWebViewController.m:0)
8菩颖、定位結(jié)束
參考鏈接:
1、對Crash文件,dSYM文件進(jìn)行符號化
2为障、iOS中符號的那些事兒
----------------------------更新xcode13新版本的crash日志-----------------------------------------
新日志符號化腳本文件
新版本的crash日志
拿到的xcode13的crash日志晦闰,與之前的日志有所不同。如圖所示:雜亂無章产场,全選copy,json格式化后舞竿,如圖所示
紅框的地方就是我們app閃退的位置京景。
操作步驟如下:
1、與之前一樣骗奖,將crash文件确徙、dSYM文件、腳本文件放在同一個(gè)文件夾temp里
2执桌、終端cd進(jìn)入temp文件夾
3鄙皇、執(zhí)行腳本文件
sh crash_symbol_13.sh ***.dSYM文件絕對路徑 輸出絕對路徑 crash文件
例如:
sh crash_symbol_13.sh /Users/admin/Desktop/temp/dSYMs/wechat.app.dSYM /Users/admin/Desktop/temp /Users/admin/Desktop/temp/crash.crash