符号化二进制崩溃问题
1、首先拿到项目中的dSYM符号化文件,新建一个文件夹吧dSYM放里面,并且双击打开这个文件,然后执行下面命令:
dwarfdump --uuid dSYM文件查看uuid
例子如下:
2、然后和crash文件中的UUID对比是相同,不一样的话说明不是一个包里面的。
3、拿到包的UUID如下命令,注意如果你拿到的是ipa的话先直接用直接使用归档工具归档,当然也可以使用先压缩后解压查看包的形式:
dwarfdump --uuid YourApp.app/YourApp
例子:
4、如果四个的UUID一样说明没问题,这个项目包的crash,UUID是软件的一个唯一标识,不一样说明不是一个包,不要在解析了。当然你也要看仔细是64的还是arm7上的标识。
5、关于Jenkins打包,它会把以前的build文件覆盖掉,结果以前的dSYM文件和ipa包没法获取(亲自测试)。
6、如果是自己手动打包archive后,xcode自己会保存一个当前打包完的记录,这样每次可以拿到dYSM文件和ipa文件。
7、Xcode工具symbolicatecrash解析iOS Crash文件,在找symbolicatecrash的时候需要注意,先执行下面命令在所有的安装包里面找到这个文件,命令如下:
find /Applications/Xcode.app -name symbolicatecrash -type f
找到之后cd到这个文件夹下,copy出来就可以。
8、在桌面新建一个文件夹crash(自己随意就可以),然后把dSYM文件,symbolicatecrash工具,crash文件文件拷贝到这个文件夹下面,执行下面命令:
./symbolicatecrash ./*.crash ./*.app.dSYM > symbol.crash
其中symbol.crash文件就是解析后的crash文件,在这行这个命令的时候可能会出现下面错误:
Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.
解决办法:一定在上面一个命令之前执行就可以了
export DEVELOPER_DIR=/Applications/XCode.app/Contents/Developer
9、经验:在符号化之前先把dYSM中间中的UUID和crash文件的UUID进行对比,如果不一样的话,说明不是这个版本造成的crash直接继续再找吧。