我有一个没有错误跟踪就崩溃的应用程序。如果我调试,我可以看到正在发生的事情的一部分,但不能找出哪个对象正在“僵尸化”。

有人知道如何在Xcode 4中启用NSZombie吗?


当前回答

下面是一个视频,解释了如何使用Instruments和NSZombie来查找和修复iOS上的内存崩溃: http://www.markj.net/iphone-memory-debug-nszombie/

其他回答

NSZombieEnabled用于调试BAD_ACCESS,

在Xcode的scheme表中启用NSZombiesEnabled环境变量。

单击“产品”⇒编辑方案以打开工作表并设置“启用僵尸对象”复选框

这个视频将帮助你理解我想说的。

这是一个简单的问题,在你的可执行文件(NSZombieEnabled = YES)上设置一个环境变量,然后正常运行/调试你的应用。如果你给一个僵尸发送消息,你的应用程序将崩溃/中断到调试器和NSLog消息给你。

欲了解更多信息,请访问CocoaDev页面:http://www.cocoadev.com/index.pl?NSZombieEnabled

而且,随着10.6的发布以及Xcode和Instruments的下一个版本,这个过程将变得更加容易。只是说”。=)

在XCODE(4.3)下一个播放按钮:)(运行)

选择:编辑方案

系统弹出方案管理窗口

单击Arguments选项卡

你应该看到:1-启动时传递的参数 2-环境变量

在(2-环境变量)的位置 名称:NSZombieEnabled 价值:是的

这就完成了....

在可执行文件的首选项中添加环境变量NSZombieEnabled,并将其值设置为YES。

我在排除EXC_BAD_ACCESS故障时遇到了同样的问题,并且很难找到Xcode 4.2 (iOS5 SDK的最新版本)的设置。苹果一直在移动东西,设置也不再是以前的样子了。

幸运的是,我找到了它,它适用于设备,而不仅仅是模拟器。你需要在Xcode中打开Product菜单,选择Edit scheme,然后选择Diagnostics选项卡。这里有“启用僵尸对象”。一旦选择和运行调试器将指向你的双释放对象!享受吧!

简而言之

Product->Edit Scheme->Diagnostics-> Click Enable Zombie Objects