启用僵尸后,EXC_BAD_ACCESS消失

时间:2011-09-24 22:07:13

标签: objective-c macos cocoa exc-bad-access

我在启动时遇到EXC_BAD_ACCESS崩溃,Xcode表示崩溃发生在main.m文件的NSApplicationMain行。崩溃发生在99%的时间,当我使用僵尸启动它时,崩溃永远不会发生。谁看过这个吗?我怎么可能调试这个?

2 个答案:

答案 0 :(得分:1)

如果您正在运行Xcode4,则默认情况下显示的调用堆栈非常少,请将滑块向下移动到右侧。您可能找不到任何代码,但您应该能够很好地了解正在发生的事情。如果它是延迟后的通知或选择器,您将看到Runloop调度,这也将为您提供线索。

最后,去旧学校,我们在编码论坛,打卡和每天只有几个编译的那天做的方式:学习你的代码。知道每行代码的作用以及代码的作用。

正如@Danra所说,请运行Xcode Analyzer并修复所有投诉。

答案 1 :(得分:1)

运行僵尸启用解决错误访问的原因可能是:a)在此模式下,当保留计数达到零时,对象实际上不会被释放,并且b)原始崩溃是由于访问已经解除分配的对象

然而,在启用僵尸的情况下,我认为您应该在调试控制台中看到对已解除分配的对象的访问权限,而不是崩溃。

我还建议使用静态分析器(XCode菜单中的“Analyze”),希望它找到罪魁祸首。