如何在Xcode中启用NSZombie ?

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

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

167802 次浏览

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

要了解更多信息,请查看CocoaDev页面:http://www.cocoadev.com/index.pl?NSZombieEnabled

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

从Xcode 3.2.5和Snow Leopard (Mac OS X 10.6)开始,你可以通过Zombies工具:Run > Run with Performance Tool > Zombies运行你的代码。这允许你在时间轴上看到特定的对象及其保留计数。

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

环境变量现在是“方案”的一部分。

编辑方案并打开僵尸模式:

  • 在“产品”菜单中选择“编辑方案”。

  • 去“Run Foo”。app”阶段在左边面板,而“Arguments”选项卡在右边。

  • NSZombieEnabled添加到“环境变量”部分,并将值设置为YES,就像你在Xcode 3中所做的那样。


在Xcode 4.1及以上版本中,在“运行”阶段的“诊断”选项卡上还有一个复选框,以“启用僵尸对象”。


Xcode 6.4:

截图

Product > Profile将弹出Instruments。从面板中选择僵尸,然后发疯。

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

要启用僵尸日志,双击Xcode项目可执行文件组中的可执行文件。此时,单击Arguments选项卡,在Variables to be set in the environment:部分,创建一个名为NSZombieEnabled的变量,并将其值设置为YES

产品>配置文件将启动仪器,然后你应该有一个名为“僵尸”的“跟踪模板”。但是,此跟踪模板仅在当前构建目标是模拟器时可用——如果将目标设置为iOS设备,则不可用。

另一件需要注意的事情是,在乐器库中没有真正的僵尸乐器。僵尸跟踪模板实际上由分配工具和“启用NSZombie检测”启动配置集组成。

在XCode 4.0:在仪器中检测NSZombie,选择模拟器作为你的目标(设备上不能检测NSZomboe)。运行Instruments (CMD+I)并选择“Zombies”跟踪模板。享受。

在xcode 4.2中

去,产品->编辑方案->单击运行你的appname。app -> diagostics ->启用僵尸对象。

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

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

简而言之

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

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

选择:编辑方案

系统弹出方案管理窗口

单击Arguments选项卡

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

在(2-环境变量)的位置 名称:NSZombieEnabled < br > 取值范围:YES

这就完成了....

在Xcode 4.5.2 goto Product -> Edit Scheme ->和在Diagnostics选项卡下选中Objective C和Enable Zombie Objects之间的复选框,然后单击OK

NSZombieEnabled用于调试BAD_ACCESS,

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

Click on Product⇒Edit Scheme to open the sheet and set the Enable Zombie Objects check box

这个视频将帮助你看到我想说什么。

产品-方案-编辑方案-参数-环境变量设置NSZombieEnabled = YES

enter image description here

enter image description here