swift - 如何调试我不能经常重新创建的东西?

标签 swift debugging ios9 xcode7

所以我已经有这个错误很长时间了,但我一直无法追踪。问题是我无法经常重新创建它。

到目前为止,我已经将该错误追踪到一个特定的流程,基本上是这样的。

它们是三个同时进行的过程,需要不同的时间长度。每个过程完成后,它将 bool “键”设置为 true,然后触发一个函数来检查所有“键”是否就位。基本上一旦最后一个“ key ”进入,它就会真正开始做事情。

在 key 设置过程中的某个位置,或者更早,甚至可能在崩溃之后。不幸的是,它留下了一条非常神秘的错误消息,当它在 Xcode 中崩溃时,它是“EXEC BAD ACESS”,因此只是在应用程序委托(delegate)声明中放置了一个断点。

我确信我可以轻松修复此错误,但我只是不太了解如何修复此问题。值得庆幸的是,我有可以打印到文本文件的结构,当用户崩溃时我可以看到该文件。每次更新时我都会向其中添加新数据(以一点点延迟为代价),以便更好地了解它是如何发生的。每一次新的崩溃都让我更接近。不幸的是,尽管我对新版本的采用率很慢,而且崩溃情况仍在不断增加!我还是不知道为什么。

不幸的是,因为这种崩溃在我的设备上只发生一次(至少在我的设备上)。由于新版本更新较少,我必须自己收集数据。这真的很难!

我尝试过很多方法来试图让事情出错,或者让导致错误的过程 swift 发生,甚至自动按下按钮。但我还是不能让它再次崩溃!当它完成后,我所能做的就是添加更多 println 调用来追踪错误,这样我就可以看到发生了什么。

据我所知,奇怪的是我本来可以修复它,因为我通常会尝试新的调整等。但我不知道,因为它不会一直崩溃。老实说,我相当确定我已经修复了它(或者至少降低了它发生的可能性)。

遇到这样的情况你会怎么做?

最佳答案

这听起来像 race condition

我会使用NSOperationQueue确保所有任务都按顺序完成,并且在最后一项任务执行之前所有任务都已实际完成。

关于swift - 如何调试我不能经常重新创建的东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34549755/

相关文章:

ios - 验证来自另一个 Controller 的文本字段后启用来自主 Controller 的按钮

ios - 如何修改SWIFT_MODULE_NAME?

swift - 是否可以在 firebase 数据库和存储中保存相同的 autoID?

linux - 如何设置gdb运行在/bin/sh

python - R 和 Python 的输出值不同?

html - Mobile Safari 中的背景颜色和橡皮筋滚动

ios - 无法弄清楚如何使用 CLPlacemark 将我的当前位置正确地嵌入到消息正文中

ios - 将旧的 firebase 代码转换为最新版本的问题

TMDB 包装器 API 中的 Swift 函数不清楚

python - 如何在 python 调试器中加载模块