这里每天分享一个 iOS 的新知识,快来关注我吧
前言
当你收到不可读的崩溃信息时,你可以在 Xcode 的帮助下对崩溃日志进行符号化。作为开发者,识别符号并确保能够修复这个崩溃至关重要。
我们很多开发者常用一些在线平台来统计和解决崩溃,比如 Firebase 和 Bugly 平台,它们将上报我们的线上崩溃信息日志。但是,在某些情况下,我们可以从控制台提取对应的崩溃文件,比如 IPS 文件,在读取这些日志之前,需要对符号进行符号化。今天就来讲讲相关的内容。
什么是 IPS文件?
IPS 文件是由应用程序生成的崩溃报告,这些应用程序将数据以 JSON 形式存储在 .ips
扩展名的文件中。这种文件格式最初是在 iOS 15 和 macOS 12 中引入的。JSON 包含两个主要对象:
-
在更高级别上描述崩溃的 IPS 元数据
-
崩溃报告,详细描述崩溃的数据以及线程信息
关于 IPS 文件,官方有解释崩溃报告的 JSON 格式文档可以查看。
崩溃报告数据由与操作系统版本、Bundle 相关、存储、异常、终止、线程、帧和二进制映像相关的其他对象组成。
什么是 dSYM文件?
dSYM 文件是由 Xcode 生成的调试符号文件,包含符号化崩溃日志所需的所有调试信息。换句话说,你可以使用 dSYM 文件来把不可读的崩溃日志转换为对应的可读格式。
dSYM 文件可以在你打包的时候生成并导出。
如何从 Xcode 导出崩溃报告?
安装了 Xcode 的同学可以按照以下步骤导出崩溃报告:
-
打开 Xcode
-
转到菜单栏,然后选择 Window -> Devices and Simulators
- 单击 Open Recent Logs
然后将打开一个 Finder 窗口,显示与设备相关的崩溃日志的所有 ips
文件。你可以右键单击你应用的最新崩溃文件,然后选择“在 Finder 中显示”,然后就可以找到这个文件了。
导出 Mac App 崩溃报告
如果你的 App 是 Mac 平台的,可以使用控制台应用导出崩溃报告:
-
打开控制台应用
-
在边栏中选择崩溃报告
-
鼠标右键选择“在访达中打开”导出以应用命名的崩溃
如何手动符号化
有一个开源的 Mac 软件可以用来解析崩溃报告,名叫 MacSymbolicator,打开之后长这样:
它支持解析旧版本的 .crash
文件,以及新的 .ips
和 .txt
格式,将崩溃报告拖入左侧的框内,它会自动扫描电脑上的 dSYM 文件,如果找不到也可以手动拖入。
然后点击 Symbolicate
按钮,他就会自动帮我们解析这个崩溃了:
利用 Xcode Organizer 查找崩溃
Xcode Organizer 中也会显示崩溃的相关信息,这是 iOS 系统帮我们统计上来的,可以打开 Xcode Organizer 来查看有多少崩溃,选择 Xcode -> Windows -> Organizer
,然后在弹出的窗口侧边栏中选择 Crashes,然后就可以看到对应的崩溃列表了:
使用这个工具的好处是:
-
它是被符号化后的,能看到具体崩溃的堆栈
-
它能看到具体的崩溃数量、设备等相关信息,可以以此分析影响范围
-
可以直接点击右上角的 Open in Porject 按钮来打开源码中对应的代码
但这个工具也有不好的地方,它统计上来的数据是不全的,不愿意跟 Apple 分享数据的设备无法被统计在内,我查了一下,大概只有 40% 不到的用户会被统计进来。
另外你还可以在右下角的 Notes 栏中针对这个 Crash 写一些备注,方便下次出现重复问题时解决,底部还有个按钮可以标记这个 Crash 已经被解决。
参考资料
[1]
解释崩溃报告的 JSON 格式: developer.apple.com/documentati…
[2]
MacSymbolicator: github.com/inket/MacSy…
这里每天分享一个 iOS 的新知识,快来关注我吧
本文同步自微信公众号 “iOS新知”,每天准时分享一个新知识,这里只是同步,想要及时学到就来关注我吧!