ios Zombie检测

时间:2012-03-02 12:53:41

标签: xcode instruments nszombie

我(我认为)在我的代码中遇到了一个非常棘手的问题。它在代码中的不同位置随机崩溃。该项目是一个ARC项目。

所以我的程序偶尔崩溃了这条消息:

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附带的乐器进行调试。经过一段谷歌搜索后,我在stackoverflow上找到了以下内容:How do I set up NSZombieEnabled in Xcode 4?Xcode malloc error

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

好的,这就是我做的:

1)从finder启动Instruments并选择Profile“Zombies”。

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

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

4)乐器开始重演(我无法弄清楚它的作用)。

5)开始玩应用程序直到它崩溃。

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

我的问题:

1)Zombies是否足以解决我的问题,还是应该使用其他分析工具?

2)什么告诉我撞击后输出的乐器?

1 个答案:

答案 0 :(得分:6)

根据您对问题的描述来判断,您的崩溃是由访问僵尸对象之外的事情引起的。如果您的应用访问了已取消分配的(僵尸)对象,则在使用Zombies模板时,Instruments会显示如下消息:

enter image description here