热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

每个app都有性能问题,都有要修复的错误,都会crash。尽管我们已经非常小心了,即使我们的app在设备上运行一切正常,即使

每个 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 "(identifier)"
}

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

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

总结

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

2020.10.24 夜
上海 二联家园



推荐阅读
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
  • 探索Web 2.0新概念:Widget
    尽管你可能尚未注意到Widget,但正如几年前对RSS的陌生一样,这一概念正逐渐走入大众视野。据美国某权威杂志预测,2007年将是Widget年。本文将详细介绍Widget的定义、功能及其未来发展趋势。 ... [详细]
  • 多线程基础概览
    本文探讨了多线程的起源及其在现代编程中的重要性。线程的引入是为了增强进程的稳定性,确保一个进程的崩溃不会影响其他进程。而进程的存在则是为了保障操作系统的稳定运行,防止单一应用程序的错误导致整个系统的崩溃。线程作为进程的逻辑单元,多个线程共享同一CPU,需要合理调度以避免资源竞争。 ... [详细]
  • 检查在所有可能的“?”替换中,给定的二进制字符串中是否出现子字符串“10”带 1 或 0 ... [详细]
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • 本文总结了Java初学者需要掌握的六大核心知识点,帮助你更好地理解和应用Java编程。无论你是刚刚入门还是希望巩固基础,这些知识点都是必不可少的。 ... [详细]
  • LDAP服务器配置与管理
    本文介绍如何通过安装和配置SSSD服务来统一管理用户账户信息,并实现其他系统的登录调用。通过图形化交互界面配置LDAP服务器,确保用户账户信息的集中管理和安全访问。 ... [详细]
  • 本文介绍了如何在 Spring 3.0.5 中使用 JdbcTemplate 插入数据并获取 MySQL 表中的自增主键。 ... [详细]
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • 使用ArcGIS for Java和Flex浏览自定义ArcGIS Server 9.3地图
    本文介绍了如何在Flex应用程序中实现浏览自定义ArcGIS Server 9.3发布的地图。这是一个基本的入门示例,适用于初学者。 ... [详细]
  • 解决Only fullscreen opaque activities can request orientation错误的方法
    本文介绍了在使用PictureSelectorLight第三方框架时遇到的Only fullscreen opaque activities can request orientation错误,并提供了一种有效的解决方案。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 开发日志:高效图片压缩与上传技术解析 ... [详细]
author-avatar
疯务情堂
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有