ios 崩溃无法定位到具体代码_四个技巧快速定位和解决 iOS crashes and bugs

本文介绍了在iOS应用出现崩溃时如何快速定位问题的四种方法:使用崩溃报告工具,结合分析功能;与用户沟通获取详细信息;允许用户分享诊断报告;以及针对特定用户追踪崩溃。通过这些策略,开发者可以更有效地修复bug,提高应用稳定性。
摘要由CSDN通过智能技术生成

每个 app 都有性能问题,都有要修复的错误,都会 crash。 尽管我们已经非常小心了,即使我们的 app 在设备上运行一切正常,即使所有测试也都通过了我们还是不免会遇到各种无法预料的问题。

因此,我们可以使用一些技巧,通过收集正确的信息,快速定位和修复大多数 bugs 和 crashes。

1. Crash reporting tools

修复崩溃需要深入了解 app 中发生崩溃的情况。最简单的方法是进入Xcode➞Organizer➞Crashes 查看崩溃信息:

f34ed9dd12b86f6da73c3084d5b651c6.png


Xcode 一个很酷的地方是允许我们通过单击右上角的蓝色按钮 “Open in Project...” 直接跳转到导致崩溃的代码。

我们修复崩溃后,还可以在 Xcode 中为崩溃添加注释,然后使用右下角的“标记为已解决(Mark as Resolved)” 按钮将其标记为已解决。

将崩溃报告工具与分析相结合

Xcode 内置的崩溃报告工具已经很好用了,但是,使用 Firebase 或 Instabug 之类的第三方工具会有更多好处。

这些工具使用报告的分析功能,通过显示崩溃之前的执行事件的跟踪轨迹,使我们深入了解 crash 情况。

想了解更多,可以看这里: Fixing crashes with Firebase Crashlytics.

2. 与用户联系

修复常见错误的最有效方法之一就是与客户建立联系。用户使用 app,最清楚crash 情况。

我们可以通过创建 TestFlight 来测试 app 的新版本。

TestFlight 具有内置的报告工具,供用户报告所有发现的错误。用户可以通过截屏,点击“Done”按钮并点击“共享Beta反馈”按钮,添加注释并共享屏幕截图以提供给我们反馈:

b21551b5a057bae72960ed9ed8ad6e2e.png

该反馈将最终显示在 App Store Connect 中的 TestFlight 页面,其中包含各种有用的信息,例如电池信息,磁盘空间,应用程序版本和系统版本等:

b43f21d400dab4e5b93baa11fb351f09.png


以上是一种方式,除此,还有以下方法:

  • 创建 Twitter 或者微博帐户,和用户互动讨论
  • 添加应用内聊天功能
  • 开发带有反馈表的支持页面

3. 允许用户共享诊断报告

某些情况下,您与用户联系,但仍无法解决所报告的问题。您收到了崩溃的信息,但是不知道哪些崩溃与该特定用户报告的问题有关。

所以,我们最好在 app 中提供一个选项,让用户共享 app 的诊断信息。

Collect by WeTransfer ,允许用户在其中报告问题以及诊断报告。

我们可以很轻松地将WeTransfer Diagnostics 这个开源框架添加到我们的 app 中。 它可以创建包含以下内容的报告:

  • 设备信息
  • 系统信息
  • 系统日志
  • 用户默认键

最重要的是,我们还可以轻松地添加自定义见注释,以帮助开发者解决问题。

075ee600ac5b3d640f49ae5b2c0ca0b6.png

该框架的优点在于,我们还可以轻松地自定义将最终出现在报告中的错误:

/// Support logging simple `String` messages.
DiagnosticsLogger.log(message: "Application started")

/// Support logging `Error` types.
DiagnosticsLogger.log(error: ExampleError.missingData)

这样可以更轻松地解决特定问题。

显然,我们应该考虑敏感数据和《通用数据保护条例》( GDPR),仅共享能解决问题的信息,避免共享私有数据。

4. 与用户相关的崩溃

大多数崩溃报告工具都允许设置特定用户标识符。这使得我们可以过滤特定用户的崩溃。我们甚至可以将其作为超链接添加到自定义“诊断HTML”报告中:

static var firebaseCrashesURL: String {
    guard let identifier = Tracker.userIdentifier else { return "Unknown" }
    return "<a href="https://console.firebase.google.com/u/0/project/your-project-name/crashlytics/app/ios:your.bundle.identifier/search?time=last-seven-days&type=crash&q=(identifier)" target="_blank">(identifier)</a>"
}

本示例创建了一个链接,在 Firebase 中直接打开该链接,可以查看特定用户遇到的问题。

注意,请确保对标识符进行哈希处理,使其符合 GDPR 要求,而不是公开获取用户的任何隐私数据。

总结

以上 4 条小技巧,可以帮助我们快速定位错误所在,从而节省开发时间,让我们可以一心用在开发项目功能上去。

2020.10.24 夜
上海 二联家园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值