| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> iOS dSYM详解和分析crash,ips文件 -> 正文阅读 |
|
[移动开发]iOS dSYM详解和分析crash,ips文件 |
1.什么是dSYM文件 dSYM 文件是Xcode编译后,我们会看到一个同名的 dSYM 文件,dSYM 是保存 16 进制函数地址映射信息的中转文件,存储应用程序的调试 symbols。每次编译项目或者打包的时候都会生成一个新的 dSYM 文件,当我们软件release模式打包或上线后,不会像我们在Xcode中那样直观的看到用崩溃的错误,所以对于每一个发布版本我们都很有必要保存对应的 Archives 文件。不管你集没集成类似Buyly的三方,要符号化分析crash日志还是得要用到对应的dSYM文件,如果没有生成dSYM文件,可以看一下TARGETS下Build Settings里面有没有设置,如下图 2.什么时候会用到dSYM文件 1、APP提交审核,有闪退bug被拒,审核人员基本会上传crash文件给你,这时候就要自己符号化分析了。 注:ips文件和crash文件不一样,Xcode13,iOS15以前设备ips文件改后缀成crash好像可以,但是之后 Apple 对符号化文件格式进行了 JSON 支持, 所以针对 iOS 15 以上产生的崩溃文件, 写入方式应该是做了调整, 所以在对 iOS 15 以上崩溃文件进行符号化时, ips改后缀会出现符号化失败, 报错 No crash report version in file 的问题,改为直接使用 CrashSymbolicator.py下面会讲到。 注:如果是发布Testflight版本,有些公司APP更新前会先提交Testflight版本公测一下,然后很多crash的日志可以通过Apple Store Connect里面对应的应用,Testflight下的反馈崩溃里面看到,可以直接Xcode打开,直接到Window->Organize->Crashes下直观看到崩溃错误 3.dSYM,ips,crash文件怎么拿到 1、dSYM 4.具体怎么利用dSYM符号化分析 注:dSYM文件要和crash,ips等文件一一对应,否则符号化会失败,比如你1.0.1产生的crash,ips文件要和1.0.1编译的dSYM文件匹配,注意每次编译都会生成新的dSYM文件 1、怎么查看dSYM和ips,crash文件是否一一对应
例子如下,终端显示的是符号 - 拼接的,crash和ips文件都是连起来的。 ? ? 2、利用symbolicatecrash符号化分析crash文件 注:创建文件夹和文件夹放在哪都能自己看着办只要用到对应文件路径的时候,路径能对应就可以了,以下是笔者自己创建的方式。 首先在桌面创建一个dsym文件夹,里面再创建一个crash文件夹,dYSM文件和.crash文件拖入进去,symbolicatecrash复制进去(如果不复制工具出来,可以把文件复制到工具文件夹下执行命令),Result.crash是符号化分析后的产物,Makefile是一个用AppleScript写的一个脚本,打开执行就能得到Result.crash(前提里面写的一些路径得一一对应),还可以保存成一个应用程序双击打开执行,具体更多好玩的得自己去了解一下。symbolicatecrash工具存放在该路径下:
如果不一样可能是Xcode名字不一样?可以利用下面的命令去查找,如过你的Xcode就叫Xcode话,不然改成自己Xcode路径:
当三个文件都在同一个文件夹下后,我们可以通过命令来得到符号化分析后的crash文件,依次执行,命令如下:注:如果不执行第二条命令会有意想不到的结果
我们可以先来看看Test.crash日志符号化前后最后异常回溯长什么样子: ?
如果不一样可能是Xcode名字不一样?可以利用下面的命令去查找,如过你的Xcode就叫Xcode话,不然改成自己Xcode路径:
但是这回不能像复制symbolicatecrash工具一样复制出来了,因为这个脚本import其它文件也在同一个目录下,我们可以终端命令进入到这个文件夹下把 dSYM 文件和 ips 文件放入到该文件夹下执行符号化解析命令。 下面先看两个文件的对比。 ? image.png image.png ? CrashSymbolicator.py 操作稍微和 symbolicatecrash 会有些不同,因为是用 python 写的脚本,所以要使用 python3 来进行调用,否则会报错。(肯定有一大波人默默的在终端输入python查看版本号发现还是2.7左右的版本,内心一顿XXX,其实python3早已经安装了,不信你们终端直接输入python3试试,如果没有那得自己安装了……)
-d '符号表路径' -o '输出符号化路径' -p '苹果给的崩溃日志' 如果是在 CrashSymbolicator.py 文件夹下操作,dSYM 和 ips 文件需要复制到该脚本文件夹下,命令如下:
5.利用AppleScript脚本快速进行符号化分析 上述在文件夹里面执行命令虽然可以完成,但是比较麻烦,笔者做了个脚本执行,下面就看看脚本里面的代码(其实就是封装了几条命令) image.png ?
|
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 5:39:55- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |