在Xcode4中找到EXC_BAD_ACCESS的原因

时间:2011-03-29 18:21:39

标签: xcode4 memory-leaks instruments exc-bad-access

我在与根本原因无关的地方遇到EXC_BAD_ACCESS错误。我幸运的是找到了一个对于以下语句[data getBytes:&tcpBuffer length:i];来说太小的数组的原因。

现在我的问题:我尝试了所有这些方法 - 但没有成功:

  1. 使用NSZombiesEnabled并未在调试窗口打印输出中更改任何内容
  2. 当我将方案设置为调试并使用Leaks仪器时,它会启动泄漏仪器但我看不到调试器。
  3. 当我在iPhone模拟器中运行应用程序并单独启动仪器时,选择正在运行的应用程序作为目标(在仪器的弹出菜单中),它会停止并显示“无法找到目标“。
  4. 在这种情况下如何找到根本原因?请记住,最后,它甚至不是Zombie错误!这个错误信息真的比帮助更令人困惑!

    (幸运的是,我只想到了我的阵列,但当然,下次这会困扰我的其他地方)

1 个答案:

答案 0 :(得分:2)

您获得EXC_BAD_ACCESS的地方很可能与根本原因无关。它可以相关,因此可以提供线索。但这不确定。

回答你的观点:

  1. NSZombiesEnabled只有在已取消分配的对象上调用方法时才会生效。这可能不是您EXC_BAD_ACCESS

  2. 的原因
  3. 使用Instruments与调试器是分开的。如果您在Instruments中进行配置,则调试器不会处于活动状态。基本上,它是一个不同的工具。

  4. 这应该没问题。检查您的Build Configuration是否设置为“Debug”而不是“Release”。

  5. 以下是导致EXC_BAD_ACCESS的原因和如何追踪根问题的绝佳链接:

    Lou Franco's Understanding EXC_BAD_ACCESS