1.什么是symbolicatecrash?
symbolicatecrash是Xcode自帶的一個分析工具,可以通過機器上的崩潰日志和應用的.dSYM文件定位發生崩潰的位置,把crash日志中的一堆地址替換成代碼相應位置。
2.crash現象
1.當項目上線之后,捕捉線上crash方法之一。
當拿到手機后看到的device log 是這樣的 ,只有crash的函數的地址,沒有辦法定位到具體問題再哪里。
我們需要准備:
1.應用的.dSYM文件(路徑:/Users/用戶名/Library/Developer/Xcode/Archives)
2.工具symbolicatecrash:(終端:find /Applications/Xcode.app -name symbolicatecrash -type f 會把symbolicatecrash的路徑打印出來,把他復制一個新建文件夾中(例如:CrashReport))
3.手機中.crash 文件:(Window --> Devices and Simulators --> View Device Logs --- > 右鍵 export Log)
把這三個放到新建的文件夾中CrashReport
終端今天此文件路徑:
cd /Users/wangyan/Desktop/CrashReport
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
./symbolicatecrash ./*.crash ./*.app.dSYM > symbol.crash(例如: ./symbolicatecrash ./M.crash ./Example.app.dSYM/ > symbol.crash )
此時文件夾中會出現 symbol.crash我們認識的crash文件。
注:
確定dSYM、app以及crash文件的關系
每一個xx.app, xxx.app.dSYM文件都擁有相應的uuid,crash文件也有uuid,只有三者uuid一至才表明之三者可以解析出正確的日志文件。
查看xx.app文件的uuid的方法,在terminal中輸入命令:
dwarfdump --uuid xxx.app/xxx (xxx工程名)
查看xx.app.dSYM文件的uuid的方法,在terminal中輸入命令:
dwarfdump --uuid xxx.app.dSYM (xxx工程名)
而.crash的uuid位於,crash日志中的Binary Images:中的第一行尖括號內。如:
armv7 <8bdeaf1a0b233ac199728c2a0ebb4165>