一般来说,产品上线后或多或少都会一些在测试过程中极难发现的bug存在,而引起程序的崩溃,影响用户的体验。

除了苹果自身收集crash信息外,基本上用的最多的就是友盟了。

然而友盟的崩溃信息我们如果不借助工具,是很难定位到具体的类和行的。

今天就要说说如何定位到具体的类,类中的哪一行出现了crash,并结合友盟的提示,快速的解决bug。

1、Xcode设置确定打包的同时生成dSYM文件

Build Setting->Build Options ->Debug infomation Format 中设置DWARF,如果选为DWARF则不生成dSYM文件,必须选择DWARF with dSYMFile才会生成符号文件。

如下图:

android 崩溃友盟 友盟没有崩溃数据_文件复制


2、在打包完成后,在Finder中前往文件夹输入:

/用户/你的用户名/资源库/Developer/Xcode,就进入到如下图的文件夹内,就能看到后缀为xcarchive的文件。

android 崩溃友盟 友盟没有崩溃数据_android 崩溃友盟_02


3、选择文件,右击显示包内容:

android 崩溃友盟 友盟没有崩溃数据_错误信息_03

就能看到如下内容,选择dSYMs文件,就能看到后缀为dSYM的文件。将此文件复制出来放到桌面上。

android 崩溃友盟 友盟没有崩溃数据_崩溃信息定位 crash dSYM_04

4、右击name.app.dSYM,查看包内容,就内看到如下路径中的内容,最后的文件名为你app的名称:

也可以将此文件复制出来放在桌面上,查找更便利,最后会进行验证。

android 崩溃友盟 友盟没有崩溃数据_崩溃信息定位 crash dSYM_05

android 崩溃友盟 友盟没有崩溃数据_后缀_06

5、找到文件之后,打开友盟,选择你的产品->错误分析->错误趋势 ->点击错误的点 ->进入错误详情页面,选择一个你要查看的crash信息:

在错误详情中你就会看到错误信息的描述,具体发生错误的地址。

如下为添加了空对象到字典中。

android 崩溃友盟 友盟没有崩溃数据_后缀_07

6、打开终端:

cd DeskTop

打开桌面

输入:

atos -o YourApp.app.dSYM/Contents/Resources/DWARF/YourApp +友盟详情中的错误地址

或直接

atos -o appname +友盟详情中的错误地址

android 崩溃友盟 友盟没有崩溃数据_后缀_08


终端上显示的结果:类的名称,发生错误的行号。这样就定位到的crash的地方。

此处发生错误的地方在TestMainViewController.m中的149行。

快速定位到crash的地方,再结合友盟错误信息的提示,你就大概知道crash的原因了。

修复bug后,再通过热更新修复线上的版本。