iPhone - 调试 EXC_BAD_ACCESS 崩溃问题

5

有时在调试应用程序时,我在Xcode上看到以下错误:

Program received signal: “EXC_BAD_ACCESS”。

但调试器没有停在有问题的那一行。实际上,调试器只显示了一堆汇编语言代码。

我需要超能力才能找出确切的问题所在。

是否有一种方法可以强制Xcode提供更多详细的错误消息,并在出现此类错误时停在有问题的那一行?

感谢任何帮助。

3个回答

6
当崩溃发生时,在Xcode中打开调试器(运行 -> 调试器)。应该会有3到4个面板,如下所示:

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

在左上方的面板(堆栈跟踪),选择最上面不是灰色的行。
(注:有时候堆栈跟踪只能找到内部函数,因为运行循环中触发了不良的内存管理。请先尝试构建->构建和分析以消除所有潜在的内存管理错误。)

2
你可以启用NSZombies,在这里查看,我发现一种好的方法是使用打开调试器运行和调试程序,这样当程序停止执行时,往往会显示程序崩溃时正在执行的代码行。

谢谢。我已经启用了它,但是我没有看到任何开放执行。错误消息从EXC_BAD_ACCESS更改为...-[CALayer retain]: message sent to deallocated instance 0x182200...,但我不知道这如何帮助,因为我的代码中没有关于这个对象的线索...我有很多CALayers...这是控制台上唯一打印的一行。 - Duck
如果你打开了调试器,你应该能够看到堆栈跟踪,这将提供更多信息。 - James

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接