【发布时间】: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