工具篇

工具篇 iOS Crash收集

2018-10-26  本文已影响18人  下页天

在iOS程序的崩溃中,主要有两种异常引起的。一个是Mach异常,一个是Object-C异常(NSException,OC层的异常)

平台

一条龙Crash统计产品

成熟的开源项目

Crash的收集方式

1、使用Xcode从设备获取崩溃日志:

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

2、通过设备直接获取崩溃日志

dSYM符号集:

符号集的生成与获取:

通过dSYM中存储的信息可以把crash日志中的16进制数字一一对应成我们看得懂的文件名、函数名和行号,这个过程就叫做符号化

校验文件

在符号化Crash文件之前,你需要准备好.crash和.dSYM并校验是否匹配

为什么要校验

如何判断.crash、.dSYM与.app(是否匹配你的代码)是否匹配?

通过UUID来匹配,UUID是Xcode在编译时自动为每个版本生成的唯一标识,即使功能相同的可执行文件是使用相同的编译器设置从相同的源代码重建的,它也将具有不同的构建UUID,总之UUID是唯一的。

如何通过命令行获取UUID?

grep "'Your AppName' arm64" t.crash

获取.dSYM的UUID

dwarfdump --uuid 'Your AppName'.app.dSYM

获取.app的的UUID

dwarfdump --uuid 'Your AppName'.app/'Your AppName'

符号化文件

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

如果此时本地的Archive文件已经被你删除,需要把上述两个文件放入同一目录下(全英文目录),如果.dSYM你并没有备份,则需要回到crash日志对应的版本重新打包(论版本控制的重要性!),重复1)的步骤也可以得到符号化的日志。

参考

漫谈iOS Crash收集框架

Crash收集与分析详解

iOS异常捕获

上一篇 下一篇

猜你喜欢

热点阅读