一般来说,产品上线后或多或少都会一些在测试过程中极难发现的bug存在,而引起程序的崩溃,影响用户的体验。
除了苹果自身收集crash信息外,基本上用的最多的就是友盟了。
然而友盟的崩溃信息我们如果不借助工具,是很难定位到具体的类和行的。
今天就要说说如何定位到具体的类,类中的哪一行出现了crash,并结合友盟的提示,快速的解决bug。
1、Xcode设置确定打包的同时生成dSYM文件
Build Setting->Build Options ->Debug infomation Format 中设置DWARF,如果选为DWARF则不生成dSYM文件,必须选择DWARF with dSYMFile才会生成符号文件。
如下图:
2、在打包完成后,在Finder中前往文件夹输入:
/用户/你的用户名/资源库/Developer/Xcode,就进入到如下图的文件夹内,就能看到后缀为xcarchive的文件。
3、选择文件,右击显示包内容:
就能看到如下内容,选择dSYMs文件,就能看到后缀为dSYM的文件。将此文件复制出来放到桌面上。
4、右击name.app.dSYM,查看包内容,就内看到如下路径中的内容,最后的文件名为你app的名称:
也可以将此文件复制出来放在桌面上,查找更便利,最后会进行验证。
5、找到文件之后,打开友盟,选择你的产品->错误分析->错误趋势 ->点击错误的点 ->进入错误详情页面,选择一个你要查看的crash信息:
在错误详情中你就会看到错误信息的描述,具体发生错误的地址。
如下为添加了空对象到字典中。
6、打开终端:
cd DeskTop
打开桌面
输入:
atos -o YourApp.app.dSYM/Contents/Resources/DWARF/YourApp +友盟详情中的错误地址
或直接
atos -o appname +友盟详情中的错误地址
终端上显示的结果:类的名称,发生错误的行号。这样就定位到的crash的地方。
此处发生错误的地方在TestMainViewController.m中的149行。
快速定位到crash的地方,再结合友盟错误信息的提示,你就大概知道crash的原因了。
修复bug后,再通过热更新修复线上的版本。