美文网首页
友盟统计错误解析

友盟统计错误解析

作者: DreamMakerSky | 来源:发表于2017-07-04 09:16 被阅读0次

错误信息:

Application received signal SIGSEGV

错误详情:

错误详情.png

错误分析:

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

错误定位:

单条错误详情.png

XingYunGlobalMeeting -- 应用名称

0x10020d274 -- 崩溃时的调用方法的16进制函数地址

XingYunGlobalMeeting + 2151028 -- 文件的地址以及方法所在的行的位置

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

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

通过Organizer找到.xcarchive文件.png

在Finder中显示.xcarchive文件.png

在Finder里所要的.xcarchive文件.png

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

xcarchive显示包内容.png

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

根据UUID确定对应的.dSYM文件.png

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

方法一:使用xcrun atos命令

【说明:最靠谱!推荐使用该方法,特别是该项目的该版本重复Archive的话(即上一步骤有多个.dSYM文件)的话,下面的两种方法可能不能使用】

1、选中上一步骤确定的对应.dSYM文件,点击右键显示包文件,按照路径->Contents->Resources->DWARF,找到以项目名命名的文件。

显示.dSYM文件中的包文件.png

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

完整命令:

XingYundeMac-mini:~ xingyun$ atos -o /Users/xingyun/Library/Developer/Xcode/Archives/2017-03-20/XingYunGlobalMeeting\ 2017-3-20\ 下午7.20.xcarchive/dSYMs/D29F668F-D4A2-353E-97DC-CD9BFC78695E.dSYM/Contents/Resources/DWARF/XingYunGlobalMeeting 0x100037da4

3、终端返回我们看得懂得的“明文”错误信息:

__41-[MSSBrowseCollectionViewCell createCell]_block_invoke (in XingYunGlobalMeeting) (MSSBrowseCollectionViewCell.m:37)

发生崩溃的方法:-[MSSBrowseCollectionViewCell createCell]_block_invoke

崩溃所在源码文件:MSSBrowseCollectionViewCell.m

发生崩溃的方法在源文件中的行号:37

方法一atos命令解析错误.png

方法二:使用dwarfdump命令

1、可先将.app.dSYM文件拷贝到一目录下备用,如和崩溃日志放在一个目录下。

2、打开终端,cd到该目录下,执行命令:

$ dwarfdump --arch=arm64 --lookup=[崩溃日志上项目对应的某崩溃地址] [dSYM文件的绝对路径]

方法三:可视化工具dSYMTools

下载链接(源码):https://github.com/answer-huang/dSYMTools

下载后在Xcode中运行,然后按照以下使用步骤进行:

1、将打包发布软件时的xcarchive文件拖入软件窗口内的任意位置(支持多个文件同时拖入,注意:文件名不要包含空格)

2、选中任意一个版本的xcarchive文件,右边会列出该xcarchive文件支持的CPU类型,选中错误对应的CPU类型。

3、对比错误给出的UUID和工具界面中给出的UUID是否一致。

4、将错误地址以及 Slide Address 输入工具的文本框中,点击分析。

dSYMTools.png

方法四:友盟错误分析工具

1、下载错误分析工具

,并解压zip得到umcrashtool文件,可将umcrashtool与已下载的xxx.csv文件放入同一目录下。

2、第二步 在terminal中运行umcrashtool命令,参数为错误分析的.csv文件绝对路径,如下:sanzhang$ ./umcrashtool [absolutely_path_of_csv_file] 将umcrashtool与错误分析.csv文件放入同一目录下

csv文件和umcrashtool放在同一目录下.png

3、在terminal中运行umcrashtool,提示如下: Usage: umcrashtool [export-file-path],定位后的代码及行数会写入错误分析-symbol.csv文件,与原文件在同一目录下。用工具打开新生成的xxx-symbol.csv文件,便可查看错误发生的源码文件及行数。

注:如果错误分析没有成功,请先确保对应的 xxx.dSYM 文件在 ~/Library/Developer/Xcode/ 或该路径的子目录下。(对于每一个产品发布时archive操作会将dsym文件存放到~/Library/Developer/Xcode/Archives路径下,因此建议保留该路径下的文件,以便后续用工具分析错误。)

相关文章

  • 9错误统计分析

    一、前言本文介绍友盟错误统计分析和Bugly错误统计分析 二、友盟错误统计分析进入友盟后台,会看到类似以下错误详情...

  • 友盟统计错误解析

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

  • 安利一个非常好用的根据内存地址找出错误位置的可视化工具

    项目里面用了友盟统计,收集一些崩溃信息,用友盟工具解析错误的时候经常解析不出来,还要手动自己按照老方法找。。。最近...

  • iOS开发-根据友盟统计错误分析查找线上BUG

    参考博客 根据友盟统计错误分析查找线上BUG(工具篇)Xcode如何快速的根据错误日志定位到相应的代码根据友盟统计...

  • 友盟错误统计

    1、从友盟官网下载错误日志 xxxx.csv(http://www.umeng.com )2、从上线的包中找到ds...

  • [转载]友盟统计时出的错误

    今天试友盟统计时出现的错误:加入友盟的静态库之后运行出现如下错误 "_compress2", referenced...

  • 友盟bug日志分析

    友盟bug日志分析 一、友盟工具分析 1、去友盟后台,我的产品->移动统计->错误分析,找到有哪些bug日志,并把...

  • IOS-友盟统计错误定位

    加入友盟统计功能后,友盟后台会有一个错误分析的统计项,点进去之后可以查看项目的错误报告: 这份报告所包含的主要信息...

  • 友盟错误分析

    加入友盟统计功能后,友盟后台会有一个错误分析的统计项,点进去之后可以查看项目的错误报告。对于开发人员来说,查看报告...

  • 友盟统计错误分析,定位到项目具体位置

    加入友盟统计功能后,友盟后台会有一个错误分析的统计项,点进去之后可以查看项目的错误报告。对于开发人员来说,查看报告...

网友评论

      本文标题:友盟统计错误解析

      本文链接:https://www.haomeiwen.com/subject/lgethxtx.html