2012-03-02 151 views
5

我在我的代码中遇到了(在我看来)一个非常困难的问题。它在代码中的不同位置随机崩溃。该项目是一个ARC项目。ios僵尸检测

所以我的程序与此消息occaisonally崩溃:

malloc: *** error for object 0xd2dd8b0: incorrect checksum for freed object - object was probably modified after being freed. 
*** set a breakpoint in malloc_error_break to debug 

我已经设置断点为malloc_error_break,但我没有得到任何信息出来。当代码崩溃时,XCode向我显示代码发生的位置。但正如我所说的,崩溃是随机的,并不总是发生。但似乎崩溃集中在代码中的特定行上。

现在,我想使用xcode附带的工具进行调试。经过一番谷歌搜索,我发现以下东西在计算器上:How do I set up NSZombieEnabled in Xcode 4?Xcode malloc error

因此,第一个链接描述了如何通过点击xcode中的运行按钮并选择“配置文件”来从xcode本身启动僵尸检测。我遇到的问题是,在我的xcode版本(4.2)中为跟踪文档选择模板时找不到“僵尸”。但是,如果我在xcode之外启动乐器(例如,来自finder),我可以选择僵尸。

好了,这是我做过什么:

1)从取景器开始仪器和选择配置文件“植物大战僵尸”。

2)在iphone模拟器(正常运行(不是简档或调试))中从xcode启动iphone应用程序。

3)在乐器“选择目标” - >“附加到进程” - >“iPhone模拟器(57529)”。

4)仪器开始recod的东西(我不明白它是什么)。

5)开始与应用程序一起玩,直到它崩溃。

最终应用程序崩溃,这里是仪器崩溃的应用程序后的截图: enter image description here

我的问题:

1)是僵尸足够我的问题,或者我应该使用其他analyizes工具?

2)什么告诉我仪器崩溃后输出?

回答

6

根据您对问题的描述来判断,您的崩溃是由除访问僵尸对象之外的东西引起的。如果您的应用程序访问解除分配(僵尸)对象,仪器显示像使用僵尸模板时,下面的消息:

enter image description here