iOS崩溃日志ips文件解析

摘要:
iOS崩溃日志ips文件的分析一简介测试团队的同事在进行稳定性测试时通常会遇到一些崩溃,然后他们会将这些崩溃日志反馈给开发人员进行分析。然而,这些ips文件的内容通常如下图所示。它们都是十六进制堆栈地址。如果我们只使用这些堆栈地址,我们什么都做不了,甚至连最基本的崩溃位置都无法实现。复制。ips文件转换为Acrach并更改。ips文件后缀为.rash。

iOS崩溃日志ips文件解析 

一 简介

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

  这个转化的过程有一个专业术语,叫符号化,就是讲这些堆栈地址转化为我们可识别的一些类名、方法名等符号信息。

iOS崩溃日志ips文件解析第1张

iOS崩溃日志ips文件解析第2张

二 解析步骤

  所以,如何实现这样的转化是一个很重要的问题。网上查了很多资料,现在网上一般说是有两种方法:

  • 命令行解析ips
  • 使用Xcode解析ips/crash

2.1 准备工作,获取.xcarchive文件

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

iOS崩溃日志ips文件解析第3张

iOS崩溃日志ips文件解析第4张

2.2 解析具体步骤

  1. 新建一个文件夹,名字叫Acrash。
  2. 拷贝.ips文件放到Acrash中,并将.ips文件后缀名该为.crash。 
  3. 前往文件夹路径:【/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工具,然后选择拷贝即可。
  4. 从xcarchive文件里,右键点击【显示包内容】,从Products/Applications里面拷贝.app文件,放到Acrash中。
  5. 从xcarchive文件里,右键点击【显示包内容】,拷贝dSYMs文件下的.dSYM文件,放到Acrash中。

iOS崩溃日志ips文件解析第5张

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

iOS崩溃日志ips文件解析第6张

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。

iOS崩溃日志ips文件解析第7张

iOS崩溃日志ips文件解析第8张

  OK,整个过程基本就是这样了,得到最后的log.crash之后,我们就比较方便定位问题所在了。

免责声明:文章转载自《iOS崩溃日志ips文件解析》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇深入剖析PHP输入流 php://inputSwing组件集合的事件处理(六)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

为什么完整备份不能截断事务日志

导言 完整备份不能截断事务日志,这是所有SQL Server DBA的一个常识, 为此,当数据库处于完整恢复模式时(非特别说明,下文所提到都是完整恢复模式下的数据库),DBA们必须频繁地使用事务日志备份的方式来防止日志文件变得过大。 这几乎成为了DBA们的一个定理,但,作为一个DBA,你证明过这个定理吗?你知道为什么完整备份不能截断事务日志吗? 一个错误的...

java开发——Cloneable接口、clone()方法和深浅拷贝

1、实现Cloneable接口表明该类的对象是允许克隆的。 2、允许克隆的意思是:可以调用clone()方法。 3、深拷贝还是浅拷贝,取决于如何重写Object的clone()方法。 4、原对象和克隆对象的关系:      深拷贝:阳关道和独木桥;      浅拷贝:藕断丝连。  上面的第二点解释一下,如果没有实现Cloneable就调用clone()方法...

C++ Primer学习笔记

目录 12.1 动态内存与智能指针 12.1.1 shared_ptr类 12.1.2 直接管理内存 12.1.3 shared_ptr和new结合使用 12.1.4 智能指针和异常 12.1.5 unique_ptr 12.1.6 weak_ptr 12.2 动态数组 12.2.1 new和数组 12.2.2 alllocator类...

没有admin权限如何免安装使用Node和NPM

此教程只针对于在windows系统上没有admin权限和软件安装权限,但是又希望能像安装版一样使用Node和NPM的用户。 步骤一: 下载压缩版node 访问https://nodejs.org/en/download, 根据自己的系统,选择下载32位或者64位的免安装压缩包版node。解压压缩包,将node.exe文件拷贝到自己想要存放node的路径,...

squid 访问日志记录

squid日志记录在squid.conf 也可记录。并且squid日志可以不记录静态项 在squid.conf 加入 (1)access_log /var/log/squid/access.log  squid        #定义日志存放记录 (2)不记录静态加入 acl nolog urlpath_regex -i .css .js .swf .jpg...

nginx 流量拷贝模块 ngx_http_mirror_module 安装试用

1. 下载源码编译 https://nginx.org/download/nginx-1.13.4.tar.gz 2. 下载依赖模块包 这里直接yum 安装 yum -y install openssl openssl-devel yum -y install pcre-devel 3. 安装 可以直接默认 ./configure 我是为了添加htt...