巧妙地追踪Obj-C中的错误

时间:2009-08-24 20:31:35

标签: objective-c debugging exc-bad-access

我的Objective C程序中有一个错误导致机器在某些库方法中崩溃,而且堆栈中的所有库方法都是main(我没有触及一个XCode给我的)。所以,我有点神秘。

我得到的错误是:

Program received signal:  “EXC_BAD_ACCESS”.

现在,我确信这意味着某个地方我发布的东西太多次了,或类似的东西。这是seg-fault的客观C版本,对吧?

我的问题是:由于它不是在我自己的代码中发生的,是否有一些聪明的方法来追踪我发布的双重内容?或者代码检查是最好的选择吗?

感谢。

1 个答案:

答案 0 :(得分:2)

EXC_BAD_ACCESS本质上意味着您试图以意想不到的方式访问或使用特定的内存块。例如,如果您尝试将消息发送到不再表示有效对象的内存引用。它与分段错误不同,但相关。

有关调试过度释放对象的建议,请参阅this related SO question。 NSZombie将为您创造奇迹。一旦你掌握了Snow Leopard(你将在本周五获得它,对吧?)使用Zombies工具简化流程,并使用Xcode静态分析器帮助你在编译时找到这样的错误。

另请访问:http://www.cocoadev.com/index.pl?DebuggingTechniquesthis Apple Tech Note