我的Objective C程序中有一个错误导致机器在某些库方法中崩溃,而且堆栈中的所有库方法都是main(我没有触及一个XCode给我的)。所以,我有点神秘。
我得到的错误是:
Program received signal: “EXC_BAD_ACCESS”.
现在,我确信这意味着某个地方我发布的东西太多次了,或类似的东西。这是seg-fault的客观C版本,对吧?
我的问题是:由于它不是在我自己的代码中发生的,是否有一些聪明的方法来追踪我发布的双重内容?或者代码检查是最好的选择吗?
感谢。
答案 0 :(得分:2)
EXC_BAD_ACCESS
本质上意味着您试图以意想不到的方式访问或使用特定的内存块。例如,如果您尝试将消息发送到不再表示有效对象的内存引用。它与分段错误不同,但相关。
有关调试过度释放对象的建议,请参阅this related SO question。 NSZombie将为您创造奇迹。一旦你掌握了Snow Leopard(你将在本周五获得它,对吧?)使用Zombies工具简化流程,并使用Xcode静态分析器帮助你在编译时找到这样的错误。
另请访问:http://www.cocoadev.com/index.pl?DebuggingTechniques和this Apple Tech Note。