如何通过消息“可选的概述副本”来调试崩溃?

时间:2018-10-17 16:00:56

标签: ios swift

我有一个Swift 4应用程序,突然之间,我开始收到记录着消息Requestable的许多崩溃信息。堆栈跟踪中引用了几个不同的文件,尽管该文件最常发生在应用程序的入口点。

我无法重现该错误。崩溃的每个实例都发生在iOS 10.3.3中,Apple无法通过模拟器下载该崩溃的实例。除了一个Twitter线程外,我也找不到任何提及此错误消息的内容,结尾是“我忘记了如何解决此问题”。

有人看到过并且能够修复它吗?这是一些堆栈跟踪。对于上下文,tableView(_:cellForRowAt:)是一个枚举,并且在Account代码中引用了一个实例,而Crashed: com.apple.main-thread 0 libswiftCore.dylib 0x30ad78c swift_unknownRetain + 9 1 App Name 0x3e970d outlined copy of Account? + 3913485 2 App Name 0x4d4297 outlined copy of Requestable + 4874903 3 App Name 0x6071d1 TableViewController.tableView(_:cellForRowAt:) (TableViewController.swift:404) 4 App Name 0x622d49 @objc TableViewController.tableView(_:cellForRowAt:) (<compiler-generated>) 在其中也引用了一个结构。根据一些用户的说法,他们进入了此处引用的屏幕,先查看tableView,然后应用程序崩溃了。

{{1}}

1 个答案:

答案 0 :(得分:1)

经过反复试验,我能够解决自己的问题。

事实证明,我使用的这个应用程序(继承的代码)具有用于对业务中使用的主要对象之一进行建模的Struct,并且出于某种原因,后端团队正在发送整个对象(未过滤以满足客户要求)需求),最后一位iOS开发人员正在解析和存储每个属性,包括许多(很多)无关的属性。我能够确定仅用于初始化这些Structs之一的内存分配量是如此之大,以至于在A6芯片设备上使用该应用程序时会导致其崩溃。我注意到,所有崩溃均发生在iOS 10.3.3上,但更大的线索是,所有崩溃均发生在iPhone 5和5c上。

通过一次删除1个未使用/不必要的属性,我能够找到开始发生溢出的确切点。因此,我只是审核了对象(以及应用程序中的其他类似情况),并从Structs中删除了所有未使用的变量,最终开始与后端团队合作,继续从发送到应用程序的JSON有效负载中删除这些属性,以减小数据四处传播。

如果这可以帮助甚至一个人避免进行故障排除,我相信我将在来世获得一个幸福的家。