【审核篇】iOS 使用 symbolicatecrash解析crash log

如何使用symbolicatecrash来解析crash日志,找出应用程序崩溃的问题所在。

最近频繁的在向Appstore提交新版本,在连续同样的问题被拒了3次了,而根据苹果给出的crash log,当你点开iTuenes Center的解决方法中心也许看到的就是这样
image

大致意思的就是:

嘿~,小哥,你的App里面存在着闪退,crash log已经在下面了,你自己看着办吧,如果有技术上的难题,可以来找我们沟通哦~

然后给了你几个.crash的文件。于是,你鸡冻的点开了crash log去查看
image2

卧槽,卧槽,卧槽!!!!

这特么什么鬼!!!!
完全看不明白,这时候boss又来催了,为什么iOS APP还没上线?你顿时心里的就方了,自己测试的时候根本不知道闪退在哪,看这个东西又找不到具体的问题所在,继续提交肯定是还是会被拒,怎么办,怎么办.......


如果这时候你已经在看这篇文章了,那么恭喜你,淡定一点,不要着急,听我慢慢道来。

首先

你要知道这个crash log本来就不是人可以看懂的东西,那么怎么让自己能看懂呢?【符号化】 使用【symbolicatecrash】这个工具来符号化,这是一个Xcode内置的工具

打开终端输入以下命令查找symbolicatecrash的位置:

find /Applications/Xcode.app -name symbolicatecrash -type f

image3
这个时候会得到一个文件路径,将这个路径中的symbolicatecrash 复制到你的桌面的crashtemp文件夹中



cp /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash /Users/你的电脑用户名字/Desktop/crashtemp

然后

把iTuenes Center的解决方案中心.crash文件下载下来,复制到crashtemp文件夹中。
image21

再然后

找到dSYM文件,第一步:Xcode中window-->Organizer
image4
第二步:选择对应的包,右键显示包内容
image5
第三步:进入dSYMs文件夹,将.dSYM文件同样复制到桌面的crashtemp文件夹中
image6

dSYM文件
image7

困惑:

如果这个时候进来发现这个文件夹里面是空的,那么,恭喜你,请点击上面的叉叉吧/(ㄒoㄒ)/~~(开完笑),如果这个文件夹里面是空的话,那么你在上传AppStore的时候,应该是用的Application Loader这个工具上传的,这个东西虽然在网络比较不稳定的情况下比在Xcode中上传要好一些,但是,它并不能为你生成sYSM文件,所以,现在你必须找到提交Appstore时候的版本(论版本控制的重要性),用同一台电脑然后重新打包一个版本,使用Xcode重新上传到Appstore,如下图操作,再UpLoad to App Store。

1)修改一下配置:Build Settings-->搜dsym 选项改为DWARF with dSYM file

2)再进行打包:
image8

这样,如果还没有dSYM文件的话,旁边还有个download dSYMs文件的按钮,点击,可以下载一个dSYM文件,有了所有的文件后,准备工作就算做好了。现在看看桌面的crashtemp文件夹,三个文件已经就位

image9

重点来了:

这时候,打开终端,进入crashtemp文件夹,输入命令:


export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer​

然后在输入:


./symbolicatecrash /Users/你的电脑用户名/Desktop/crashtemp/temp.crash /Users/你电脑的用户名/Desktop/dSYMs/xxxx(dSYM文件名字).dSYM > Control_symbol.txt

这个时候crashtemp文件夹中就会多出一个.txt的文本文件

image10

打开查看:
image11
这个时候可以看到,里面的信息至少是我们可以看得懂的了,这样就能准确的找到App crash的问题所在了

总结

1、找到 symbolicatecrash
2、下载iTunes centercrash log文件
3、获取到dSYM文件
4、三个文件放一个文件夹里面,输入命令进行crash log符号化,得到符号化后的文件
5、查看符号化的后crash log文件,找到准确的问题所在

注意:

版本,版本,版本,Archive的包,如果是上传到Appstore了的,一定要记得备份,如果被误删掉了,或者使用Application Loader上传的Appstore ,那么记得拿到上传这个版本时的源码更改一下版本重新打包,使用Xcode重新上传一次,还有必须得在同一台电脑上面。

最后,还是祝愿大家能够顺利通过审核,最好不要有用到这个东西的时候,毕竟每一次上线,都是一个漫长的等待过程,能在上线前,多测测,把这个概率降到最低是最好不过的了。(而我,根本就没有测试。。。)

END