iOS 崩溃分析

本文总结了iOS崩溃分析的技巧,包括崩溃报告收集、符号化、逆向工程和故障排除方法。通过理解崩溃报告的各个部分,如Header、Date和Version、异常回溯等,以及设置优先级来解决问题。同时,文章强调了解决崩溃的重要性,如内存诊断、代码解耦和Xcode诊断设置,以提高应用稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在阅读完本书《iOS Crash Dump Analysis》后,我们对崩溃分析技巧进行一定的总结。

准备工作

崩溃报告的收集

线上或者开发环境的崩溃报告都可以利用第三方工具进行崩溃报告收集。让我们的应用程序能够尽可能的处理发生的所有可能的信号和异常,一旦应用程序将无法实现,从而导致底层操作系统触发崩溃。通过三方工具,对记录的崩溃信息进行收集,并且上传到服务器上。

自己基于 plcrashreporter 开发并继集成到服务器的成本需要用户自己考量

符号化

符号化 是将机器地址映射成对拥有源代码的程序员有意义的符号地址的过程。在使用三方的崩溃分析工具或者自建崩溃分析服务时,无论是构建Debug 版本还是构建 Release 版本,我们都应该在Xcode 中设置 DWARF with dSYM File,以便我们能针对我们的每次构建都有一个匹配的 DSYM 文件。然后针对我们获取的崩溃报告进行符号化。保存好我们的ipa 文件和与之匹配的 DSYM 文件,为了后续使用的方便。

崩溃报告工具基本上就是使用 atos命令来符号化崩溃报告,以及提供其他与系统相关的信息。

逆向工程

有时在我们的项目中,包含了第三方的二进制框架,我们并没有源代码。我们使用 Hopper 处理我们的ipa 文件,然后 rebase 反汇编程序,获取崩溃时地址与程序的地址相同。找到崩溃的堆栈。

分析故障排除法

分析故障排除法 提供了一个分析的方法来发现问题,便于问题的复现。在实际情况下,对于不同客户进行优先级筛选,并且针对不同的产品和产品变形,来自不同客户的崩溃报告也很多。科学的分析和找到问题。

确定问题的优先级

对于不崩溃或者是问题,优先级是不一样的。我们将从三个方法来思考问题:严重性、紧迫性和成长性。

  • 根据影响确定优先级

    崩溃将导致客户无法在我们的应用程序上执行任何操作。对我们来说,最迫切需要解决的崩溃问题,是影响我们收入的问题。社交类软件的聊天功能不容有失,电商类软件的购买支付流程十分重要等等。在应用程序中记录日志 来确定客户执行了什么操作。将最多最广泛的崩溃用例确定为最需要修复的崩溃问题。

    一个软件的核心功能就是该软件最经常使用的功能

  • 根据截止日期确定优先级

    为了判断错误修复的紧迫性,我们需要评估与该错误相关的 截止日期

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值