iOS 解析.IPS崩溃文件

iOS崩溃日志ips文件解析

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 解析具体步骤

  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中。

    至此,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之后,我们就比较方便定位问题所在了。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
解析 .3dl 文件需要了解其文件格式和结构。.3dl 文件是一个二进制文件,用于存储 3D 模型的几何信息、材质信息、纹理信息等。 一般来说,解析 .3dl 文件需要完成以下步骤: 1. 打开文件,读取文件头信息,检查文件格式是否正确。 2. 读取模型的顶点信息、面信息、材质信息、纹理信息等。 3. 根据读取到的信息,构造出 3D 模型的数据结构,比如使用顶点数组、索引数组等方式存储顶点信息和面信息。 4. 可以使用 OpenGL 等图形库来渲染模型。 以下是一个简单的示例代码,可以解析 .3dl 文件并输出顶点信息: ```c++ #include <iostream> #include <fstream> #include <vector> struct Vertex { float x, y, z; }; int main() { std::ifstream file("model.3dl", std::ios::binary); // 读取文件头信息 int magic_number, version, num_vertices; file.read(reinterpret_cast<char*>(&magic_number), sizeof(magic_number)); file.read(reinterpret_cast<char*>(&version), sizeof(version)); file.read(reinterpret_cast<char*>(&num_vertices), sizeof(num_vertices)); // 读取顶点信息 std::vector<Vertex> vertices(num_vertices); file.read(reinterpret_cast<char*>(vertices.data()), sizeof(Vertex) * num_vertices); // 输出顶点信息 for (int i = 0; i < num_vertices; i++) { std::cout << "Vertex " << i << ": (" << vertices[i].x << ", " << vertices[i].y << ", " << vertices[i].z << ")" << std::endl; } file.close(); return 0; } ``` 需要注意的是,这只是一个简单的示例,实际解析 .3dl 文件的代码需要更加复杂和完整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值