對比UUID
對比.crash
和.dSYM文件的UUID是否一致
獲取.dSYM的UUID
xcrun dwarfdump --uuid <dSYM文件路徑>
獲取.crash
的UUID
可以在文件堆棧下面的首行找到
符號化
- 搜索symbolicatecrash工具
find /Applications/Xcode.app -name symbolicatecrash -type f
- Xcode11 的路徑
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
-
找到"symbolicatecrash" 文件, 復(fù)制然后粘貼到剛才創(chuàng)建的 "CrashReport" 文件夾里面
集齊
.crash
休吠、.app.dSYM
、symbolicatecrash
三個文件即可cd到當(dāng)前文件夾
命令行輸入:
export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer
- 命令行輸入
./symbolicatecrash ./*.crash ./*.app.dSYM > symbol.crash
如果是.ips文件业簿,則輸入
./symbolicatecrash ./*.ips ./*.app.dSYM > symbol.crash
- 等待完成
使用atos進行符號化
從中選出一條調(diào)用進行符號化:
4 UnityFramework 0x000000010b86b8d0 0x10a7f8000 + 17250512
使用下面的命令符號化:
atos -arch arm64 -o a6ad066c.dSYM -l 0x10a7f8000 0x000000010b86b8d0
結(jié)果:
+[IronSource initWithAppKey:adUnits:] (in UnityFramework) (IronSource.m:69)
可以看到崩潰的類為 IronSource瘤礁,函數(shù)為 initWithAppKey:adUnits:
,文件名是 IronSource梅尤,行數(shù)是 69 行柜思。
我們返回來看一下atos 用法:
atos -o dysm文件路徑 -l 模塊load地址 -arch cpu指令集種類 調(diào)用方法的地址
dysm 文件路徑:可以在 Xcode Organizer 的 Archives 標(biāo)簽欄下找到所有已歸檔的應(yīng)用文件岩调。它保存了編譯過程的詳細(xì)信息,其中包括符號信息赡盘。
模塊 load 地址:模塊加載的基地址号枕,可以在日志的動態(tài)庫信息中找到對應(yīng)模塊的基地址。這里為 0x66000.
cpu 指令集種類:可以為 armv6 armv7 armv7s arm64亡脑。具體用哪個堕澄,可以參考對應(yīng)模塊的動態(tài)庫信息中確定。如
0x66000 - 0x19cdfff +TestProduct armv7 <43ebe409980f31fd9be165a64b002af5> /var/mobile/Applications/E3B51E77-D44D-4B3E-8767-B7DC2008D138/TestProduct.app/TestProduct
那么 TestProduct 模塊的 cpu 指令集為 armv7
調(diào)用方法的地址:這里是 0x012c03e1