美文网首页iOS开发技术
IOS-友盟统计错误定位

IOS-友盟统计错误定位

作者: Typeco | 来源:发表于2017-10-12 19:08 被阅读244次

    加入友盟统计功能后,友盟后台会有一个错误分析的统计项,点进去之后可以查看项目的错误报告:

    友盟错误信息

    这份报告所包含的主要信息有:

    1、首行是错误的原因。
    2、淡绿色的地址,这就是错误代码的位置。
    3、 dSYM UUID,这个是dSYM文件的唯一标识。dSYM 是保存 16 进制函数地址映射信息的中转文件,我们调试的 symbols 都会包含在这个文件中,并且每次编译项目的时候都会生成一个新的 dSYM 文件。
    4、CPU Type. 定位错误的时候,我们也需要用到这个参数。

    了解了这些内容,下面我们要做的就是找出问题所在。
    第一种方式:
    找到当前工程的archivers文件,将其拖到下图的路径下,任意红色框的文件夹下即可,如图:

    路径

    然后打开终端,跳到指定的版本目录下,如上图的1.0.5

    终端

    然后我们回到第一步的界面,点开顶部(默认顶部会是最终的错误根源)的地址,我们会发现

    内存地址详细信息
    将此段代码粘贴到终端中回车即可。
    第二种方式:dSYMTools
    https://github.com/answer-huang/dSYMTools
    这是一个开源的项目,下载进行运行会得到如下页面 dSYMTools界面

    选择相应版本,勾选cpu类型,同友盟那个图表,然后将内存地址拷贝到错误信息内存地址处就可以看到错误信息:

    结果

    这样就可以很容易的看到错误的信息并修正。

    如果我们不知道我们的错误是哪个分支哪个版本,可以通过以下方法进行:
    Dwarfdump,可以简便地检测出app和相应的dSYM是否匹配使用起来很简单。分三步即可。
    1> 根据crash log,得到App的UUID。UUID是个字符串,由32个字符组成。得到了UUID,你才能知道是你的哪个版本在用户的iPhone上出了问题。
    1.1> 使用xcode连接崩溃设备,打开window->organizer,左侧应用列表选中你的app,顶部tab切换到crash,找到你的crash,右键菜单show in finder->显示包内容->/DistributionInfos/all/Logs,即可看到当前类型的所有闪退列表。
    1.2> 在终端执行以下命令。 Binary Images: 0xb6000 - 0xb7fff +Example armv7 <270a9b9d7a333a4a9f1aaf8186f81394> /var/mobile/Applications/28D4F177-D312-4D3B-A76C-C2ACB4CB7DAD/Example.app/Example 0x2feb5000 - 0x2fed6fff dyld armv7 <4a817f3e0def30d5ae2032157d889c1d> /usr/lib/dyld 这里,构建UUID是270a9b9d7a333a4a9f1aaf8186f81394,和路径应用程序的可执行文件是Example.app/Example。
    2> 使用dwarfdump检查app,看哪个app是上面那个UUID。命令行格式:dwarfdump —uuid YourApp.app/YourApp
    3> 用dwarfdump检查dSYM文件是否是上面的UUID。命令行格式:dwarfdump —uuid YourApp.app.dSYM如果三者的UUID都是一致的,那么恭喜你,该crash log可以被正确解析出来,stack traces信息可以被正确地拿到。

    相关文章

      网友评论

        本文标题:IOS-友盟统计错误定位

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