5

我的代码中有(在我看来)一个非常困难的问题。它在代码中的不同位置随机崩溃。该项目是一个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 上找到了以下内容:如何在 Xcode 4 中设置 NSZombieEnabled?Xcode malloc 错误

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

好的,这就是我所做的:

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

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

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

4)仪器开始记录一些东西(我不知道它做了什么)。

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

最终应用程序崩溃,这是应用程序崩溃后仪器的屏幕截图: 在此处输入图像描述

我的问题:

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

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

4

1 回答 1

6

从您对问题的描述来看,您的崩溃是由访问僵尸对象之外的其他原因引起的。如果您的应用程序访问一个已释放的(僵尸)对象,则 Instruments 在使用 Zombies 模板时会显示如下消息:

在此处输入图像描述

于 2012-03-06T20:31:18.997 回答