xcode 调试查找 EXC_BAD_ACCESS 问题根源
这几天在调试当初的一个demo的程序的时候,一运行就报错,本来就对 xcode 不熟悉,这下更是手忙脚乱的。貌似这里面的断点调试也不怎么好用,放了几个断点,然后逐步执行。
运行到最后,出错的时候是停留在表格的显示的方法里,但是感觉不对。很是郁闷,这个和vs 比起来要弱爆了。看了下异常信息,提示的是 EXC_BAD_ACCESS 错误。在网上搜索了下,还很多人都有这个错误呢。
总计了下大家的建议,说的是 90% 的EXC_BAD_ACCESS 异常都是因为释放了已经释放的变量导致。安装网上的说法要打开 NSZombieEnabled 来显示更多的信息。
我这里说一个简单的方式:Product->Edit Scheme,然后选择 Diagnostics 选项卡,勾选 Enable Zombie Objects ,然后再重新调试,就可以显示一些更有用的信息了。再 Output 里显示了 UIAlertView 的字符串,我的项目里用到了这个,但是不太多,一搜索果然发现和定位了错误。
我在一处声明了 UIAlertView 并且使用了 autorelease 关键字,但是在后面,我又 release 了一遍,导致出错了。最开始学习的时候,我是从网上照葫芦画瓢地写的这样的代码。
修正了错误后,重新编译就没有问题了。心里的石头算是放下来了。网上的文章还有继续讲解如何来来进行定位操作的,我看了下还需要执行命令,这对我来说复杂了,问题本来也解决了,就没有继续跟了。有兴趣的同学可以搜索网上相关的文章看看。
最后需要提醒大家的,再找到了错误原因后,需要重新取消勾选 Enable Zobie Objects 复选框。