使用Xcode 5.1.1启用和调试iOS中的僵尸对象

11
我有一个iOS(7.1)应用程序,由于EXC_BAD_ACCESS而崩溃。如果我没错的话,这是因为使用了已经被释放的对象。经过一番搜索,我发现启用Zombie对象可以帮助确定错误所在的行。由于我正在使用xcode 5.1.1,因此我已经执行了以下操作来启用Zombie对象

Product -> Scheme -> Edit Scheme


然后,勾选Enable Zombie Objects复选框,

Checking <code>Enable Zombie Objects</code>


然后我去了Instruments面板,选择了Zombies,单击Profile,得到了这个,

iOS simulator and Instruments panel


现在模拟器(在左背景中)中的buttontextfield都是空白的,而且我无法理解Instruments面板上的任何内容。

下一步该怎么做?我的意思是如何找出导致bad access的行?我被这个问题困扰了几个小时,但仍然找不到解决办法。

任何帮助都将不胜感激。

1个回答

6

访问已释放的对象并不是导致EXC_BAD_ACCESS错误的唯一原因。其他导致bad access错误的原因包括访问nil指针和越过数组边界。

从您的屏幕截图来看,您没有使用已释放的对象。如果您正在使用已释放的对象,则Instruments中的Zombies模板会让您知道。Instruments会显示类似以下内容的消息:

enter image description here

您的下一步应该是在Xcode中设置异常断点。当您的应用程序崩溃时,Xcode将在崩溃发生的地方暂停您的应用程序。要设置异常断点,请选择View > Navigators > Show Breakpoint Navigator来打开断点导航器。单击导航器底部的+按钮,然后选择Add Exception Breakpoint。


2
是的,我确实这样做了,现在正试图弄清楚为什么一些简单的语句会产生异常!! - Sibir
没有收到任何Zoobie消息,但仍然崩溃了应用程序并得到了BADD访问消息。 https://stackoverflow.com/questions/50665149/thread-1-exc-bad-access-code-1-address-0x20-when-subview?noredirect=1#comment88342905_50665149 - Vineesh TP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接