iOS崩溃日志ips文件解析
一 简介
测试组的同事在进行稳定性测试时,通常会遇到一些崩溃,然后他们会将这些崩溃日志(一般是ips格式的文件)反馈给开发进行分析,但是这些ips文件中的内容通常是如下图这样的,都是一些十六进制的堆栈地址,如果仅仅根据这些堆栈地址,我们基本无法做任何事情,连最基本的崩溃定位都做不到。那么,在iOS开发中,还有一些其他的方法可以帮助我们将这些堆栈信息转化为可视化的日志文件,在转化后的可视化日志文件中,我们可以清晰定位到我们的应用崩溃的位置,如下图2所示。
这个转化的过程有一个专业术语,叫符号化,就是讲这些堆栈地址转化为我们可识别的一些类名、方法名等符号信息。


二 解析步骤
所以,如何实现这样的转化是一个很重要的问题。网上查了很多资料,现在网上一般说是有两种方法:
- 命令行解析ips
- 使用Xcode解析ips/crash
2.1 准备工作,获取.xcarchive文件
我主要采用的是第一种方法利用命令行解析ips,在这种方法中,有一个前提准备工作要做,就是要获得我们打包时的.xcarchive文件,具体获取方法是打开xcode,点击 【window】 --> 【Organizer】,进入到我们打包Archives的管理界面,这个界面有我们之前打的包的所有记录,选择测试App对应的App以及打包的版本,单击选中的Archive选择 show in Finder,然后将对应的.xcarchive文件拷贝出来,放在桌面或其他自己方便查看的地方。如果不是你负责打包,那么你需要找到打包负责人拿到对应的.xcarchive文件。


2.2 解析具体步骤
- 新建一个文件夹,名字叫Acrash。
- 拷贝.ips文件放到Acrash中,并将.ips文件后缀名该为.crash。
- 前往文件夹路径:【/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash】,找到symbolicatecrash。拷贝symbolicatecrash工具拷贝到Acrash中。具体步骤是打开Finder,【前往】-->【 前往文件夹】,在弹出的对话框中输入上述地址/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash,点击【前往】即可定位到对应的symbolicatecrash工具,然后选择拷贝即可。
- 从xcarchive文件里,右键点击【显示包内容】,从Products/Applications里面拷贝.app文件,放到Acrash中。
- 从xcarchive文件里,右键点击【显示包内容】,拷贝dSYMs文件下的.dSYM文件,放到Acrash中。

至此,Acrash文件中总共有4个文件:.crash文件、symbolicatecrash工具、app文件、.dSYM文件。

6. 打开终端,cd到Acrash文件夹中
7. 输入命令 ./symbolicatecrash crash文件的绝对路径 dSYM的绝对路径 > log.crash ,回车。
【注意1】:log.crash是符号化后的文件名。可以自定义文件名(后缀一定是.crash哈)。
【注意2】:7步骤之后,终端有可能会报错Error: Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.. 这时候在终端中再输入
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer
然后再次运行 7 的命令。应该就能看到Acrash文件夹下,可以发现多了一个文件:log.crash。


OK,整个过程基本就是这样了,得到最后的log.crash之后,我们就比较方便定位问题所在了。
iOS崩溃日志ips文件解析的更多相关文章
- 详解没有dSYM文件 如何解析iOS崩溃日志
Xcode支持崩溃日志自动符号化,前提是本地有当时Build/Archive生成的dSYM文件,iOS崩溃日志符号化后,可以帮助开发者更好的定位问题,但如果dSYM文件丢失或拿到的崩溃日志不是标准的c ...
- iOS 崩溃日志分析(个人总结,最实用)
iOS 崩溃日志分析(个人总结,最实用) 要分析奔溃日志需要三个文件:crash日志,symbolicatecrash分析工具,.dSYM符号集 0. 在桌面创建一个crash文件夹 1. 需要Xco ...
- 常用获取Android崩溃日志和IOS崩溃日志的几种方法
一:前言 在日常测试app时,经常会遇到崩溃问题,测试快速抓取到崩溃日志可以有效方便开发进行定位,快速解决问题所在测试做到测试分析,定位是非常重要的,这也是判断一个测试能力指标的一大维度. 二:And ...
- iOS崩溃日志
今天看crash report ,有这样两个crash: 调用 stopUpdatingLocation 函数的是一个CLLocationManager 类型的对象,为什么报错的时候会把这个对象转成N ...
- iOS 崩溃日志 Backtrace的符号化
iOS的崩溃日志配合dsym文件可以找到崩溃时的backtrace,这是解决崩溃的最重要的信息. 如果是在同一台mac上打包, 导入crash log时候会自动将backtrace符号化,可以看到方法 ...
- 如何看iOS崩溃日志
重点:Triggered by Thread这句话后边的线程号,快速定位问题出现在那个线程,是否是你的锅:Triggered by Thread所指的线程表示导致异常.崩溃的线程 下边内容转自简书 简 ...
- iOS崩溃日志 如何看
日志主要分为六个部分:进程信息.基本信息.异常信息.线程回溯.线程状态和二进制映像. 我们在进行iPhone应用测试时必然会在"隐私"中找到不少应用的崩溃日志,但是不会阅读对于很多 ...
- iOS崩溃日志分析-b
1名词解释 1.1. UUID 一个字符串,在iOS上每个可执行文件或库文件都包含至少一个UUID,目的是为了唯一识别这个文件. 1.2. dwarfdump 苹果提供的命令行工具,其中一些功能就是查 ...
- [转]IOS 崩溃日志分析
以下是一个crash log示例: // 1: Process Information Incident Identifier: 30E46451-53FD--896A-457FC11AD05F Cr ...
随机推荐
- Vue 2.6 中部分引入 TypeScript 的方法
在 Vue 与 Cesium 联合开发的过程中,我发现很多 Cesium 代码不宜直接写在 .vue 文件中.同时由于 Cesium 库较为复杂,不借助 TypeScript 的静态类型会导致代码难维 ...
- 迁移hive,不同集群。
step1: 设置默认需要导出的hive数据库为defaultDatabase 在原集群中的任意节点上,新建“.hiverc”文件,加入如下内容: vi ~/.hiverc use defaultDa ...
- 蓝桥杯 卡片换位(bfs)
卡片换位 你玩过华容道的游戏吗?这是个类似的,但更简单的游戏.看下面 3 x 2 的格子 在其中放5张牌,其中A代表关羽,B代表张飞,* 代表士兵.还有一个格子是空着的. 你可以把一张牌移动到相邻的空 ...
- 做IT,必备的安全知识!
以前的认知 以前刚接触IT行业,而我身为运维,我以为我所需要做的安全就是修改服务器密码为复杂的,ssh端口改为非22,还有就是不让人登录服务器就可以保证我维护的东西安全. 现在的认知 工作也好几年了, ...
- Linux-网络基础
1.如何将俩台不同网络中的电脑通信,见下图
- 1.3 正则表达式和python语言-1.3.8 创建字符集([ ])
1.3.8 创建字符集([ ]) (2018-05-0815:24:00) 下面的示例将说明对于 r2d2|c3po 的限制将比[cr][23][dp][o2]更为严格 import re # 下面的 ...
- PBRT笔记(14)——光线传播2:体积渲染
传输公式 传输方程是控制光线在吸收.发射和散射辐射的介质中的行为的基本方程.它解释了第11章中描述的所有体积散射过程--吸收.发射和内.外散射.并给出了一个描述环境中辐射分布的方程.光传输方程实际上是 ...
- python 基础知识整理
列表推导式 类似 data=[x+1 for x in range(10)]执行结果就是 [1,2,3,4,5,6,7,8,9,10] 还有 even_numbers=[x for x in rang ...
- oracle行转列、列转行、连续日期数字实现方式及mybatis下实现方式
转载请注明出处:https://www.cnblogs.com/funnyzpc/p/9977591.html 九月份复习,十月份考试,十月底一直没法收心,赶在十一初 由于不可抗拒的原因又不得不重新找 ...
- redis在windows和Linux系统下的下载、安装、配置
1.下载redis安装包 在redis的官网只有Linux系统下的安装包,微软的GitHub上有提供windows版本的redis安装包 redis中文网:http://www.redis.cn/ 微 ...