通过我们得到的.crash文件,通过symbolicatecrash工具可以转化成定位项目crash的原因,这种转化方式也叫符号化,直接上我的解决办法,有更好的,或者我的地方有错误的欢迎指正,有问题可以留言,或者加我QQ :838090008 备注哦~~~
1.首先找到你项目打包对应版本的xcarchive文件,右键显示包文件,找到dSYMs文件下的**.app.dSYM文件,和application文件夹中的图1.1中的文件
2.讲第一步的**.app.dSYM文件和.app文件放入桌面新建的crash文件中(你可以叫任何名字),接下来是导入symbolicatecrash工具到crash文件中的命令
-----1)打开终端输入以下命令:
find /Applications/Xcode.app -name symbolicatecrash -type f
你会找到:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/./symbolicatecrash
-----2)用命令将symbolicatecrash拷贝到桌面的crash文件夹里面,与.app和.app.dSYM放一起
cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash /Users/angel/Desktop/crash
-----3)再导入你的.crash文件,这样一共有四个文件了
3.命令行解析
1.打开终端用命令切换到桌面的crash目录下:
cd /Users/你的电脑名称/Desktop/crash
2.执行命令
./symbolicatecrash /Users/你的电脑名称/Desktop/crash/你的crash文件名字.crash /Users/你的电脑名称/Desktop/crash/你对应的名字.app.dSYM > 解析结果.crash
如果终端报错Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.
那么执行 export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"
继续2的命令即可
3.执行dwarfdump --lookup 0x000cf358 --arch arm-64 appname.app.dSYM/
0x000cf358这个串在上一命令得到的(解析结果.crash)文件中,搜索Thread 0 name: Dispatch queue: com.apple.main-thread这个串会比较快的找到所需要的0x000cf358,如图1.3;
arm-64这个格式在.crash文件的最上面,如图1.4
终端输入结果如下:
crash的问题看下面的输出
剩下的就自己定位喽