(在我看来)我的代码中遇到了一个非常困难的问题。它在代码中的不同位置随机崩溃。该项目是一个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? https://stackoverflow.com/questions/2190227/how-do-i-setup-nszombieenabled-in-xcode-4/8863063#8863063 and Xcode malloc 错误 https://stackoverflow.com/questions/7214175/xcode-malloc-error.
因此,第一个链接描述了如何通过单击 xcode 中的运行按钮并选择“配置文件”来从 xcode 本身启动僵尸检测。我遇到的问题是,在我的 xcode 版本(4.2)中选择跟踪文档模板时找不到“Zombies”。但是如果我在 xcode 之外启动 Instruments(例如从 finder),我可以选择僵尸。
好的,这就是我所做的:
1) 从 Finder 中启动 Instruments 并选择配置文件“Zombies”。
2)在iPhone模拟器中从xcode启动iPhone应用程序(正常运行(不是配置文件或调试))。
3)在仪器中“选择目标”->“附加到进程”->“iPhone模拟器(57529)”。
4)仪器开始记录一些东西(我不知道它做了什么)。
5) 开始尝试该应用程序,直到它崩溃。
Eventually the app crashes and here is a screenshot of instruments after crashing the app:
我的问题:
1) Zombies 足以解决我的问题吗?还是我应该使用其他分析工具?
2)崩溃后,什么告诉我它的输出中的仪器?