2010-03-07 128 views
4

从时间到时间,在调试应用程序,我看到的Xcode这个错误:iPhone - 调试EXC_BAD_ACCESS崩溃

程序接收到的信号:“EXC_BAD_ACCESS”。

并且调试器不停止在有问题的行上。事实上,调试器只是向我展示了一大堆汇编语言代码,就是这样。

我必须有超自然的力量才能找出确切的问题在哪里。

有没有办法迫使Xcode给我更多的“营养”错误信息 - 可以详细解释问题 - 并在出现这种错误时停止违规行?

感谢您的任何帮助。

回答

2

您可以启用NSZombies see here,我发现了一个很好的方法来查看实际问题,在打开调试器的情况下运行和调试程序。

这种方式当程序停止更频繁地执行时,会显示程序崩溃时正在执行的行。

+0

谢谢。我已启用此功能,但我没有看到任何公开执行。错误消息从EXC_BAD_ACCESS变为...- [CALayer retain]:发送到释放实例0x182200的消息...但我不明白这有什么帮助,因为我的代码中没有关于此对象的线索......我有许多CALayers ...这是控制台上唯一打印的行。 – SpaceDog 2010-03-07 02:25:50

+0

如果你打开调试器,你应该能够看到堆栈跟踪,它应该提供更多的信息 – 2010-03-07 11:29:36

6

发生崩溃时,在Xcode中打开调试器(运行 - >调试器)。应该有3至4个窗格这样的:

http://developer.apple.com/mac/library/documentation/DeveloperTools/Conceptual/XcodeDebugging/art/debugger_disassembly.jpg

在左上窗格(“堆栈跟踪”),选择其不是灰色的最顶行。

(注意:有时,堆栈跟踪只能找到,因为坏的内存管理的内部功能的运行循环触发尝试建立 - >建立与分析,首先消除所有潜在的内存管理错误)

+0

谢谢!!!!!!!!! – SpaceDog 2010-03-07 06:47:46