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

可以看到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 .

再执行如下命令即可

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

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

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

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

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

Xcode自带工具symbolicatecrash解析Crash文件的更多相关文章

  1. symbolicatecrash解析crash文件

    导出crash文件 Xcode -> Window -> Devices and Simulators -> View Device Logs ,然后选中导出. 找到.app文件和. ...

  2. 命令行工具解析Crash文件,dSYM文件进行符号化

    备份   文/爱掏蜂窝的熊(简书作者)原文链接:http://www.jianshu.com/p/0b6f5148dab8著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”. 序 在日常开发 ...

  3. 命令行解析Crash文件

    做了快两年的开发了,没有写过博客,最近公司app上架,程序崩溃被拒绝了,可是给的crash文件,又看不出哪里的问题,网上各种搜,终于找到了解决的办法,想想还是写个博客吧,希望给哪些也遇到这类问题的朋友 ...

  4. iOS- 全方位解析.crash文件崩溃报告

    1.前言 想来每个iOS攻城狮,都免不了要接触.crash文件 那么什么是.crash文件? iOS app的所有崩溃记录都会记录在设备上,所以对于和我一样没有集成让用户发送崩溃报告功能的iOS开发者 ...

  5. 使用symbolicatecrash分析crash文件

    对于我们iOS开发者来说,最心碎的事莫过于苹果审核一个星期后上架app store,而第二天就报出闪退bug.一周前我刚经历过,而且最坑的是由于第一次做个人开发,经验不足,没有集成友盟的分析SDK,还 ...

  6. [iOS]使用symbolicatecrash分析crash文件

    对于我们iOS开发者来说,最心碎的事莫过于苹果审核一个星期后上架app store,而第二天就报出闪退bug.一周前我刚经历过,而且最坑的是由于第一次做个人开发,经验不足,没有集成友盟的分析SDK,还 ...

  7. 提效工具-python解析xmind文件及xmind用例统计

    现状 每个公司都有一个维护测试case的系统,有自研的也有买的,比如QC, 禅道等等,QA往往习惯使用xmind等思维导图工具来编写测试用例,因为思路清晰,编写方便,那么这就有一个问题,大多公司要求所 ...

  8. 系统自带的NSJSONSerialization解析json文件

    #import "ViewController.h" #import "Student.h" #import "GDataXMLNode.h" ...

  9. iOS如何解析crash文件中的地址

    1.目录中存放app文件 2.打开文件 3.执行命令otool -arch arm64 -l ./QQStock  | grep -B 1 -A 10 "LC_SEGM" | gr ...

随机推荐

  1. CSS3 图片旋转

    .nav_all { position:relative; z-index:; width:172px; display:inline; ; } .nav_all b { display:block; ...

  2. Java连接postgresql数据库

    1.下载驱动jar下载地址:https://jdbc.postgresql.org/download.html 2.导入jar包新建lib文件夹,将下载的jar驱动包拖到文件夹中.将jar驱动包添加到 ...

  3. glibc中malloc()的空间overhead

    在linux下调用malloc()分配内存的时候,实际占用的内存与请求的内存尺寸的关系是什么呢,这个需要研究一下glibc中malloc()的实现.现在常见linux发行版中带的glibc中采用的都是 ...

  4. Handler实例

    Handler使用例1这个例子是最简单的介绍handler使用的,是将handler绑定到它所建立的线程中.本次实验完成的功能是:单击Start按钮,程序会开始启动线程,并且线程程序完成后延时1s会继 ...

  5. Python解析xml文件遇到的编码解析的问题

    使用python对xml文件进行解析的时候,假设xml文件的头文件是utf-8格式的编码,那么解析是ok的,但假设是其它格式将会出现例如以下异常: xml.parsers.expat.ExpatErr ...

  6. C语言 · 图形输出

    算法提高 图形输出   时间限制:1.0s   内存限制:512.0MB      编写一程序,在屏幕上输出如下内容: X | X | X ---+---+--- | | ---+---+--- O ...

  7. C语言 · 排列数

    算法提高 排列数   时间限制:1.0s   内存限制:256.0MB      问题描述 0.1.2三个数字的全排列有六种,按照字母序排列如下: 012.021.102.120.201.210 输入 ...

  8. PHP uxf framework 在模版中加入url标签

    1. 确保不修改discuz代码: 2. 继承discuz template类,重载parse_template 方法:由于discuz在模版引擎这一块没有考虑扩展性,对标签的解析全部写在一个方法中, ...

  9. SpringBoot配置使用jsp页面技术

    SpringBoot配置使用jsp页面技术 1.pom配置 package配置必须为war类型 添加依赖 <packaging>war</packaging> <depe ...

  10. SAN和NAS的区别: 层次不一样

    SAN : STORAGE AREA NETWORK   存储区域网络 NAS : NETWORK ATTACHED STORAGE 网络附加存储 NAS不一定是盘阵,一台普通的主机就可以做出NAS, ...