关于友盟的错误分析综合方法小谈
app在开发过程中都避免不了或多或少的潜在问题因素,我们一般情况下都会使用一些第三方来收集这些错误信息以供开发人员来及时查漏补缺。完善自己的app代码。
这里我就友盟的错误分析简述一些错误的查询方法。
第一种:使用第三方工具来查询错误根源
1. 登录友盟官网
1. 找到你的APP 2.选择错误列表 3.点击编辑选择你的APP发布版本
就能看到你的崩溃列表:
2. 崩溃日志详情界面
这个界面的几个参数待会会用到 !如果没有这个图,继续往下看
或者是导出来的错误列表:
1标 中的内容就是2-1图中的错误详情,复制到文本编辑就能看到全部,或者你的屏幕足够宽...
3.找到你的编译包
3.2 复制图中'3’的路径 —> 打开终端 —> open + 路径
3.3 找到 projectBase.app.dSYM 文件
4.下载工具
下载 dSYMTools
使用步骤:
1.将打包发布软件时的xcarchive文件(3-2图的文件)拖入软件窗口内的任意位置(支持多个文件同时拖入,注意:文件名不要包含空格)
2.选中要分析版本的xcarchive文件(一定要点选中),右边才会列出该xcarchive文件支持的CPU类型,选中错误对应的CPU类型()。
3. 把对应参数都填进去 (2-1图), 对比错误给出的UUID和工具界面中给出的UUID是否一致。
4.将错误地址输入工具的文本框中,点击分析。
ps: 老版本的dSYM 工具没有 Slide Address 这个选项 这个选项 在崩溃日志详情能找得到
开发过程中,避免不了要对已上线版本的crash,但是有些crash展示文件确实很难让人看明白。例如:(友盟错误统计平台)
估计会有一些小伙伴会跟我一样,突然就懵逼了!
除了帧调用就是内存地址了,着实很难找到自己项目中存在的问题。
还好有友盟的错误分析工具umcrashtool 下载友盟分析工具
在我们每次上传iTunes connect之后会有一个 .xcarchive的文件,这个文件一定不要删除哦~,要确保对应的 xxx.dSYM 文件在 ~/Library/Developer/Xcode/ 或该路径的子目录下。(对于每一个产品发布时archive操作会将dsym文件存放到~/Library/Developer/Xcode/Archives路径下,因此建议保留该路径下的文件,以便后续用工具分析错误。)
然后去友盟错误统计的网页,下载对应的csv文件 例如:
然后把下载好的错误分析工具和csv文件放到同一目录下。(我是把它放在桌面下的一个文件夹里边)
最后打开你的终端,cd到分析工具和csv所在的文件夹目录下 ,输入命令:./umcrashtool 先不要急着敲回车,然后吧csv文件拖入终端,会出现:./umcrashtool /Users/User/Desktop/umcrash/appname错误分析_20160605161846.csv的命令,这时候你就可以放心的敲回车了!(appname就是你在友盟注册的项目名字)
显示结果:
好了,这样问题就好解决了。
第三种:通过dSYMs和终端检查问题的根源
加入友盟统计功能后,友盟后台会有一个错误分析的统计项,点进去之后可以查看项目的错误报告。对于开发人员来说,查看报告不是最终目的,找到错误的原因才是最终目的。如何通过这堆报告定位到错误的代码呢?早上查了好些资料,终于成功了。
我们先看一下错误报告是什么样的:
这份报告所包含的主要信息有:
1、首行是错误的原因。显而易见,以上的错误是由于数组越界了。
2、打红色马赛克的地方是你的工程名字。
3、红色马赛克之间有一个淡绿色的地址,这就是错误代码的位置。
4、 dSYM UUID,这个是dSYM文件的唯一标识。dSYM 是保存 16 进制函数地址映射信息的中转文件,我们调试的 symbols 都会包含在这个文件中,并且每次编译项目的时候都会生成一个新的 dSYM 文件。
5、CPU Type. 定位错误的时候,我们也需要用到这个参数。
定位错误代码,我们需要将 xx.app 和 xx.app.dSYM 文件找出来.
1、在Windows->Organizer->archivers可以看到你的每一次的打包。然后选择你要查看的错误报告所在的版本,这个一定要选对了。
找到对应的包后,点击右键,然后选择Show in Finder的选项,查看这个包中的内容,如图
再右键选择显示包内容,这时我们看到 有dSYMs,Products,SCMBlueprint三个文件夹,我们需要用到的是前两个文件夹
此时,将这俩文件夹中最里层的文件都取出来,放到一个新的文件夹中
2.打开终端,cd到刚才新建的文件夹(错误报告)的目录下
输入命令xcrun atos -arch arm64 -o xxxx.app/xxxx 0x10019bc48
其中 arm64是CPU Type;
xxxx对应的是你的工程名,也就是上文友盟错误报告图片中打红色马赛克的部分;
0x10019bc48 是错误代码的地址,也就是上文友盟错误报告图片中淡绿色的那个内存地址。
其中-[SubscribeViewController isSubcribeSuccess:] (in woshiPM) (SubscribeViewController.m:342)
就是错误代码的位置,在SubscribeViewController.m
中的isSubcribeSuccess
方法中,342是代码所在的行数。
这样就可以在你的工程中找到相应的代码去做修改了。
望各位大神app永无bug!!!!!!!!