iPhone - 调试EXC_BAD_ACCESS崩溃

时间:2010-03-07 01:55:35

标签: iphone cocoa cocoa-touch xcode

有时候,在调试应用程序时,我在Xcode上看到了这个错误:

编程接收信号:“EXC_BAD_ACCESS”。

并且调试器不会停在有问题的行上。事实上,调试器只是向我展示了一个包含汇编语言代码的页面,就是这样。

我必须拥有超自然力量才能找出确切问题所在。

有没有办法强制Xcode给我更多“营养”错误信息 - 可以详细说明问题 - 并在发生此类错误时停在违规行上?

感谢您的帮助。

3 个答案:

答案 0 :(得分:6)

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

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

在左上方窗格(“堆栈跟踪”)中,选择最上面的非灰色行。

(注意:有时堆栈跟踪只能找到内部函数,因为在运行循环中触发了错误的内存管理。尝试构建 - >构建和分析以首先消除所有潜在的内存管理错误。)

答案 1 :(得分:2)

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

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

答案 2 :(得分:2)

我写了一篇博客,告诉你如何使用一些编译器开关来帮助你找到崩溃,这些崩溃是在完成对象之前释放对象的结果。

http://loufranco.com/blog/files/debugging-memory-iphone.html

构建和分析是可以的,但不如scan-build(它基于它)。安装说明如下:

http://loufranco.com/blog/files/scan-build-better-than-build-analyze.html