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进制地址的地方,现在全部具体化了,哪个类文件的多少行代码,哪个方法一目了然

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

 

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

 

  

posted @ 2017-09-29 18:42  XA_Fanny  阅读(673)  评论(0编辑  收藏  举报