iOS 崩溃分析

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

准备工作

崩溃报告的收集

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

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

符号化

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

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

逆向工程

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

分析故障排除法

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

确定问题的优先级

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

  • 根据影响确定优先级

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

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

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iOS上调试Flutter页面崩溃的主要目标是定位并解决潜在的错误或异常,以下是一些常见的调试技巧和方法: 1. Flutter DevTools:Flutter DevTools是一个用于调试和分析Flutter应用程序的强大工具。它提供了一系列的性能分析、错误日志和UI层级检查等功能,帮助我们更轻松地定位和解决问题。 2. 日志输出:通过在代码中添加日志输出,可以追踪应用程序的执行过程。可以使用print语句或调试工具中的日志输出功能来记录Flutter页面运行时的关键信息。这样可以帮助我们找到崩溃的位置,并确定可能的原因。 3. 断点调试:在Xcode中使用断点调试功能可以帮助我们逐步执行代码,查看每一步的变化情况。通过在可能引发崩溃的位置设置断点,可以在崩溃发生时捕获并定位问题。 4. 异常捕获:在适当的地方使用try-catch块来捕获Flutter页面中可能引发的异常。通过捕获异常可以避免整个页面崩溃,而是执行后续的异常处理逻辑。 5. 错误处理:在代码中实现恰当的错误处理机制,例如校验输入、空值检查等,可以减少应用程序崩溃的可能性。 6. 内存管理:管理好Flutter页面的内存使用是避免崩溃的关键。对于资源密集的页面,可以优化内存管理策略,及时释放不再需要的对象,避免内存溢出导致的崩溃。 总之,调试Flutter页面崩溃的关键在于全面了解Flutter的调试工具,通过日志输出、断点调试、异常捕获等多种手段来定位和解决问题。同时,良好的错误处理和内存管理也能有效地减少页面崩溃的可能性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值