欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

怎么调试exc_bad_access

更新时间: 2014-01-05 02:25:27 责任编辑: Author_N1

 

如何调试EXC_BAD_ACCESS
原文地址:http://www.codza.com/how-to-debug-exc_bad_access-on-iphone

当程序出现“EXC_BAD_ACCESS”时,就像不解风情的妻子对你说:“亲爱的,今晚不行”。这两种情况都是非常不幸的。

让我们先看看EXC_BAD_ACCESS到底是什么。

向已经释放的对象发送消息时会出现EXC_BAD_ACCESS。当出现错误时,通常会调用堆栈信息,特别是在多线程的情况下。

怎样提供一个dummy,当释放一个对象导致程序终止时,在堆栈上告诉我们错误信息,好,下面我们将告诉你怎么去做。

如果你设置了NSZombiEnabled环境变量,当销毁一个对象时,objective的运行时环境会在这个对象后边设置一个dummy,当调用这个对象的方法时,程序会终止,并在堆栈上显示错误信息,下边教你怎么设置NSZombiEnabled

首先,在Xcode中打开executables


查看其中内容的信息。
然后,打开信息面板中的Arguments面板


点击左下角的加号,添加变量NSZombiEnabled,并将变量的值设置为YES。
重新运行程序,当过度释放对象时,会在控制台上出现如下信息:
2009-03-30 02:30:36.172 ninjaJumper[3997:20b] *** -[GameLayer retain]: message sent
to deallocated instance 0x59bf670

说明想GameLayer的一个对象发送了retain消息

查看堆栈信息:


如何查看:http://lovebirdegg.iteye.com/blog/550489

当问题解决后,要将NSZombieEnabled设置为无效,不需要删除变量,将变量前的对号去掉就可以了:


第一次翻译,很烂...
多谢大家指正


上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:25:27
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/9616/
本文WWW.DOC100.NET DOC100.NET版权所有。