• Xcode自带工具symbolicatecrash解析Crash文件


    项目中遇到一台手机运行测试包闪退的现象,而且是一个设备闪退其他设备没有再现的情况

    可以看到Crash信息,但是指定的问题给出的是16进制内存地址,根本无法定位问题发生在哪个类的哪个函数中

    所以需要解析这个Crash文件,好了,废话就说这么多,以下是干货~~~

    文章讲述如下5个问题:

    一、如何获取手机的Crash文件

    二、使用symbolicatecrash解析Crash文件具备的条件

    三、如何获取以上三个文件

    四、如何找到symbolicatecrash

    五、如何使用symbolicatecrash

    ==============================我是分割线=============================================

    一、如何获取手机的Crash文件

    1. 打开Xcode,连接上手机

    2. 菜单中,Window->Devices,打开Devices窗口

    3. 左侧选中连接的手机,右侧即可看到Crash信息,View Device Logs

    Log类似这样的:

    二、使用symbolicatecrash解析Crash文件具备的条件

    1. xxx.crash后缀名的文件

    2. xxx.app.dSYM后缀名的文件

    3. xxx.app文件

    注:xxx为项目名称

    三、如何获取以上三个文件

    1. crash文件在第一步中已经说明,将内容保存在以【项目名.crash】为文件名的文件即可

    2.后两个文件一起获得,可以通过Xcode获取,也可以通过终端输入命令行获得:

      通过Xcode获取:

      ①Xcode->Window->Organizer,打开Archive窗口,找到App,点击显示菜单显示Show In Finder 

    ②打开Archive文件夹,找到Archive文件->显示包内容

       在dSYMs文件夹中找到.app.dSYM文件

       在Products->Applications文件夹中找到app文件

       然后将这三个文件放在一个文件夹下,以供后面使用

      通过终端命令行找:

      ①打开终端,输入cd ~先到根目录

      ②然后输入cd Library/Developer/Xcode/Archives/

      ③然后输入open. 打开Archive文件夹,后面就和通过Xcode的步骤②是一样的了

    四、如何找到symbolicatecrash

     1. 终端中输入如下命令行进行查找:

    find /Applications/Xcode.app -name symbolicatecrash -type f

     2. 根据查找结果,带有iPhone路径的,即可找到 symbolicatecrash

     3. symbolicatecrash所在的文件夹,复制symbolicatecrash文件到之前放那三个文件的文件夹中

    cd 复制查找的路径到此处
    open .

    ============以上所有工作逐步就绪,以下如何使用symbolicatecrash命令===========

    五、如何使用symbolicatecrash

      1. 必须保证app文件,.app.dSYM及.crash文件的uuid一致才可解析成功

      2. 终端输入命令进入存放文件的文件夹,执行如下命令

    dwarfdump --uuid xxx.app/YouXiIOSClient
    dwarfdump --uuid xxx.app.dSYM

     3. 通过以上命令查看uuid,然后对比.crash文件第一行的Incident Identifier,看他们是否一致

        (我的情况是前两个文件一致,肯定的,但是和.crash文件不一致,我的做法是把.crash文件的改成和他俩一致)

     4. 执行命令

    ./symbolicatecrash xxx.crash xxx.app.dSYM > xxx.log

    此时会出现报错:

    Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.

    再执行如下命令即可

    export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"

    // 再次执行,即可完成crash文件解析
    ./symbolicatecrash xxx.crash xxx.app.dSYM > xxx.log
     

     5. 此时打开xxx.log文件即可获得如下结果,之前是16进制地址的地方,现在全部具体化了,哪个类文件的多少行代码,哪个方法一目了然

         然后就可以根据项目的情况解析推断闪退发生的原因了^_^

    =======================最后来一张对比照片,看的更清晰==============================

      

  • 相关阅读:
    JavaScript 中继承的一些示例
    测试ASP_NET 生命周期
    Web 设计师的 50 个超便利工具[下]
    关于ASP.NET 中站点地图sitemap 的使用
    早该知道的 7 个JavaScript 技巧[转]
    C# 浅拷贝与深拷贝区别
    HTML 中表格table 的相关知识
    理解值与引用[学习]
    关于CSS 3 及浏览器兼容性问题
    SQL Server 的存储过程[转]
  • 原文地址:https://www.cnblogs.com/china-fanny/p/7610487.html
Copyright © 2020-2023  润新知