iOS Crash收集与分析详解(基础篇)

如题所述

第1个回答  2022-07-13

最近测试妹子老是抱怨我偶现的Bug不好复现,我这边出于偷懒(其实是工作很忙)一直再说不能复现Bug的妹子不是好测试,最近闲下来了,正好谈谈Crash的收集和分析。

噔噔噔噔~万能的官方文档又出现了,先上地址
Understanding and Analyzing Application Crash Reports

如果你把你的手机连接到Mac,并选择Xcode->Windows->Device and Simulator,然后点击View Device Logs,你会看到手机上会有好多Log,其中Type为Crash的就是崩溃的Log,如下图:

1)打开设置->隐私->分析->分析数据,在其中找到你想要的应用程序的日志,日志将使用以下格式命名:<应用名称> _ <崩溃时间> _ <设备名>
2)选择所需的日志,复制文本或点击右上角的分享按钮分享出去,并且把分享得到的.ips.synced或者复制文本而来的.txt文件的后缀名改为.crash,因为Xcode不接受没有.crash扩展名的崩溃日志。

What the fuck??面对一大串的16进制数字你可能会感到一脸懵逼,莫惊慌,如果你仔细的看了看官方文档,你就会发现收集Crash的Log是一件很轻松的事情,然而分析Crash却并不是那么容易的事情(看完这篇文章后你会发现也很容易!!!!)
我们能把16进制数字转换成能看懂的东西么?当然可以,这个时候就需要理解dSYM符号集,细心的小伙伴在看第一张Crash流程图中可能已经发现.xcarchive文件中包含了.dSYM文件。

看到这里你可能已经知道,通过dSYM中存储的信息可以把crash日志中的16进制数字一一对应成我们看得懂的文件名、函数名和行号,这个过程就叫做符号化,那么如何做呢?

获取.crash的UUID

获取.dSYM的UUID

获取.app的的UUID

比如上图能看到三者的UUID都是一致的,可以安心去符号化文件啦。

1)如果本地存在.crash对应的.dSYM文件,则直接到上文中(1、使用Xcode从设备获取崩溃日志:)到 View Device Logs 这步,把文件拖入右边的logs列表,Xcode会自动去符号化文件,如果满眼都是16进制数字的化,点击 Re-Symbolicate Log 即可

如果你不想用Xcode去符号化,你也可以通过 symbolicatecrash 来手动符号化crash日志, symbolicatecrash 是Xcode下的一个工具。
1)首先先找到这个工具,我们通过Spotlight搜索找到 symbolicatecrash 并复制到桌面的CrashSignifying文件夹中,在这个文件夹下同样放入.crash、.dSYM文件。
2)打开终端,进入你刚才创建的CrashSignifying文件夹中,输入命令行

然后在输入

如果报No such file or directory : at ./symbolicatecrash line 909.错误,尝试执行

以上图为例,大部分字段都是不言而喻的,下面列举一些有用处的。(在官方文档都有解释,这里做归纳与翻译)

接着是最重要的堆栈信息,由下到上为最后调用的顺序:

文章写了一半开始忙了起来,第三第四节的内容现在才补上来(已经三天过去啦),如果能给小伙伴带来一点帮助,那我就很开心了,咱们下周再见。

相似回答