【问题标题】:ios Zombie detectionios僵尸检测
【发布时间】:2012-03-20 23:27:03
【问题描述】:

(在我看来)我的代码中有一个非常棘手的问题。它在代码中的不同位置随机崩溃。该项目是一个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 本身开始僵尸检测。我遇到的问题是,在我的 xcode(4.2)版本中为跟踪文档选择模板时找不到“僵尸”。但是如果我在 xcode 之外启动 Instruments(例如从 finder),我可以选择僵尸。

好的,这就是我所做的:

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

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

3) 在 Instruments 中“Choose Target”->“Attach to process”->“iPhone Simulator (57529)”。

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

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

最终应用程序崩溃了,下面是应用程序崩溃后仪器的屏幕截图:

我的问题:

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

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

【问题讨论】:

    标签: xcode instruments nszombie


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-07
      • 2011-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      相关资源
      最近更新 更多