【问题标题】:EXC_BAD_ACCESS in main.m after converting to ARC转换为 ARC 后 main.m 中的 EXC_BAD_ACCESS
【发布时间】:2012-05-25 03:42:14
【问题描述】:

我有一个简单的 UITableView 应用程序,我刚刚转换为 ARC。转换应该很顺利,应用程序现在启动,但如果我导航到 DetailView,然后尝试跳回 RootView,我在 main.m 中收到 BAD_EXC_ACCESS 错误,然后崩溃。我尝试打开 Zombie 对象,这停止了崩溃,但我也没有在控制台中得到任何东西告诉我发生了什么。我关闭了 ARC,再一次,没有崩溃,但也没有更多关于首先导致它的原因的信息。

任何关于如何调试它的想法将不胜感激。

【问题讨论】:

  • 您能否展示一些给我们带来问题的代码或完整项目?
  • @Jojas 我不知道问题出在哪里。 EXC_BAD_ACCESS 显示在main.m 中,但我无法获得有关正在发生的事情的任何其他信息。这个应用在应用商店里已经有一年了,这个问题是在我转换为 ARC 时开始的
  • 如果没有更多信息,我们几乎不可能跳过你。但是,设置一个异常断点(如此答案所示:stackoverflow.com/a/10770681/937822,它将显示您的代码的哪一部分导致了问题。
  • @lnafziger:谢谢。我能够在 lldb 中使用线程回溯来获取更多信息。这有助于我将范围缩小到导致错误的类。仍然需要找出 actual 错误,但这是朝着正确方向迈出的一步。如果您发布答案,我将很乐意奖励您。

标签: cocoa-touch debugging automatic-ref-counting


【解决方案1】:

BAD_EXC_ACCESS 有点棘手,主要是因为它们不会出现在导致错误的违规行。使用 lldb,您可以使用 thread backtrace 了解导致它的原因。 This answer 包含一个很好的答案,其中包含一些关于如何解决类似问题的想法。

【讨论】:

  • BAD_EXC_ACCESS 是一个信号,而不是一个例外。信号不会“回溯”——但它们可以由信号处理程序处理。您无法设置异常断点来捕获信号。
  • 异常断点无法捕获任何东西,但使用thread backtrace 至少让我找到了有问题的类。再次感谢。
猜你喜欢
  • 2011-09-15
  • 2013-11-17
  • 2012-04-08
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多