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>