iOS版友盟错误`Application received signal SIGSEGV` 找出野指针对象定位

iOS版友盟错误Application received signal SIGSEGV 找出野指针对象定位

友盟相关日志

错误信息:
Application received signal SIGSEGV
错误详情:

iOS版友盟错误`Application received signal SIGSEGV` 找出野指针对象定位_第1张图片
错误详情

错误分析:
SIGSEGV和SIGBUS一般是由于访问已被释放的内存或者调用不存在的方法所致。

错误定位:

单条错误详情

vBell -- 应用名称
0x100475b80 -- 崩溃时的调用方法的16进制函数地址
_ZNK6andjoy7RefBase9incStrongEPKv + 28 -- 文件的地址以及方法所在的行的位置

找出xcode 打的包路径

接下来就是本文的重点,将这条“密文”解析成“明文”了。

首先,要找到该项目发布时Archive编译出来的.xcarchive文件。这个文件包含了.DSYM文件,可以通过XCode->菜单栏中的Window->Organizer,打开Archives列表,找到对应的文件,点击右键Show in Finder。

iOS版友盟错误`Application received signal SIGSEGV` 找出野指针对象定位_第2张图片
通过Organizer找到.xcarchive文件
iOS版友盟错误`Application received signal SIGSEGV` 找出野指针对象定位_第3张图片
在Finder里所要的.xcarchive文件

打开该文件,选中该文件,点击右键 -> 显示包内容。

iOS版友盟错误`Application received signal SIGSEGV` 找出野指针对象定位_第4张图片
xcarchive显示包内容
iOS版友盟错误`Application received signal SIGSEGV` 找出野指针对象定位_第5张图片
xcarchive显示包内容
iOS版友盟错误`Application received signal SIGSEGV` 找出野指针对象定位_第6张图片
最终文件

说明:正常的话(该版本只Archive一次的话),包里面dSYMs文件夹里只有一个以项目名称命名的.app.dSYM文件(如上图中的XingYunGlobalMeeting.app.dSYM文件)。如果同一版本重新Archive(即多次Archive)的话,会有多个.dSYM文件,此时我们就要根据友盟错误分析错误详情里的倒数第五行的dSYM UUID确定对应的.dSYM文件。

iOS版友盟错误`Application received signal SIGSEGV` 找出野指针对象定位_第7张图片
根据UUID确定对应的.dSYM文件.png

然后就要通过这个文件定位错误信息了,共有三种方法:

只介绍方法一(使用电脑原生终端, 而且方法通用)
方法一:使用xcrun atos命令
【说明:最靠谱!推荐使用该方法,特别是该项目的该版本重复Archive的话(即上一步骤有多个.dSYM文件)的话,其他两种方法可能不能使用】
1、选中上一步骤确定的对应.dSYM文件,点击右键显示包文件,按照路径->Contents->Resources->DWARF,找到以项目名命名的文件。


iOS版友盟错误`Application received signal SIGSEGV` 找出野指针对象定位_第8张图片
Snip20170612_10.png

2、打开终端Terminal,输入 atos -o ,然后把上一步中定位的文件拖入终端,补入文件路径,空格,输入友盟错误详情中单条错误信息里的16进制函数地址(如:0x100037da4)
完整命令:

sunlindeMac-mini:~ sunlin$ atos -o /Users/sunlin/Library/Developer/Xcode/Archives/2017-06-12/vBell\ 2017-6-12\ 上午11.45.xcarchive/dSYMs/vBell.app.dSYM/Contents/Resources/DWARF/vBell 0x100475b80

3、终端返回我们看得懂得的“明文”错误信息:
__41-[MSSBrowseCollectionViewCell createCell]_block_invoke (in XingYunGlobalMeeting) (MSSBrowseCollectionViewCell.m:37)

发生崩溃的方法:andjoy:
崩溃所在源码文件::RefBase::incStrong(void const*) const (in vBell)
发生崩溃的方法在源文件中的行号: 28

iOS版友盟错误`Application received signal SIGSEGV` 找出野指针对象定位_第9张图片
方法一atos命令解析错误

你可能感兴趣的:(iOS版友盟错误`Application received signal SIGSEGV` 找出野指针对象定位)