iOS系統app崩潰日誌手動符號化

滴水微瀾發表於2016-11-14

iOS系統app崩潰日誌手動符號化步驟:

方法一、使用symbolicatecrash工具進行符號化

1.在桌面建立一個crash資料夾,將symbolicatecrash工具、.crash檔案、.dSYM檔案放到該資料夾中

a.如何查詢symbolicatecrash路徑位置?

執行命令:find /Applications/Xcode.app -name symbolicatecrash -type f
然後將symbolicatecrash複製一份

例如:Xcode7.3的symbolicatecrash路徑
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

b.crash檔案為崩潰app對應版本的崩潰日誌
c.dSYM檔案為崩潰app對應版本的符號檔案

2.在終端中進入到dsym資料夾下,執行命令:./symbolicatecrash *.crash *.dSYM > crash.log
'*'為app對應的名字
如果報錯:
在當前視窗下執行命令:export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer
然後再次執行命令:./symbolicatecrash *.crash *.dSYM > crash.log

方法二、使用Xcode進行符號化

1.在桌面建立一個crash資料夾,將 *.crash檔案、*.dSYM檔案、*.app檔案(將*.ipa的字尾改為zip,然後解壓縮得到。經過嘗試發現,沒有*.app這個檔案也是可以的) 放到該資料夾中

2.開啟Xcode->Window->Devices頁面,選中一個Device,點選“View Device Logs”按鈕,進入裝置crash日誌展示頁面。
3.將 *.crash檔案拖進入,重新整理即可。

方法三、使用命令列工具atos進行符號化

簡單介紹:
每個crash日誌都包含發生crash應用(app)的UUID以及crash發生的時間;每一個UUID對應工程的每一次build。簡而言之,每個UUID對應一個應用app。
1.在桌面建立一個crash資料夾,將symbolicatecrash工具、.crash檔案、.dSYM檔案放到該資料夾中。
2.查詢crash檔案的UUID。
開啟終端,進入crash資料夾目錄下
執行命令:grep "appName armv" *crash 或者 grep --after-context=2 "Binary Images:" *crash
執行結果:
appName 2017-4-19 下午3-36_log.crash:Binary Images:
appName 2017-4-19 下午3-36_log.crash-0x100008000 - 0x1011b3fff appName arm64 <92c850cb21143c049c255c69af3a3010> /var/containers/Bundle/Application/2C08154B-E0AC-4007-A54C-DF1403BA45CE/appName.app/appName
appName 2017-4-19 下午3-36_log.crash-0x1022d4000 - 0x102307fff dyld arm64 <a63e8b89c75a3115b54b1f2f469f676a> /usr/lib/dyld
--
說明:“0x100008000”為模組載入地址, “0x1011b3fff”將要被符號化的地址
3.查詢app的UUID。
執行命令:xcrun dwarfdump --uuid appName.app/appName
執行結果:UUID: 92C850CB-2114-3C04-9C25-5C69AF3A3010 (arm64) appName.app/appName

4.對比app的UUID 與 crash的UUID是一致,如果一致的話開始進入記憶體地址符號化
有三個命令可以進入使用:
xcrun atos -o appName.dSYM/Contents/Resources/DWARF/appName -l 0x100008000 -arch arm64 註釋:0x100008000為模組載入地址

xcrun atos -o appName.dSYM/Contents/Resources/DWARF/appName -arch arm64
xcrun atos -o appName.app/appName -arch arm64

執行過上面命令後,接著就可以輸入 需要符號化的地址了
abcdeMacBook-Pro:24 zhoufei$ xcrun atos -o appName.dSYM/Contents/Resources/DWARF/appName -l 0x192a28000 -arch arm64
0x0000000192a3b7ec

 

相關文章