如何在Xcode中启用NSZombie?

jas*_*son 299 xcode nszombie

我有一个崩溃的应用程序没有错误跟踪.如果我调试,我可以看到正在发生的一部分,但无法弄清楚哪个对象是"僵尸".

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

一二三*_*一二三 436

环境变量现在是"方案"的一部分.

要编辑方案并打开僵尸:

  • 在"产品"菜单中,选择"编辑方案".

  • 转到左侧面板中的"Run Foo.app"阶段和右侧的"Arguments"选项卡.

  • 添加NSZombieEnabled到"环境变量"部分并将值设置为YES,就像在Xcode 3中一样.


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


使用Xcode 6.4:

截图

  • 它在4.2中再次改变,请参阅下面的答案.转到产品 - >编辑方案 - >诊断 (95认同)
  • 在Xcode 5中,"诊断"选项卡中还有一个复选框. (6认同)
  • 什么方法可以解决对设备上解除分配的对象的调用? (5认同)
  • 对于之后的新手,在Xcode 6.1中,您可以进入菜单Product> Scheme-Edit Scheme> Diagnostics选项卡> Checkbox Enable Zombie Objects (2认同)

Mos*_*hik 144

我在排除EXC_BAD_ACCESS问题时遇到了同样的问题,并且很难找到Xcode 4.2(iOS5 SDK附带的最新版本)的设置.Apple继续推动移动设备,设置不再像过去那样.

幸运的是,我找到了它,它适用于设备,而不仅仅是模拟器.您需要打开Xcode中的"产品"菜单,选择"编辑方案",然后选择"诊断"选项卡.你有"启用僵尸对象".一旦选中并在调试器中运行,将指向双重释放的对象!请享用!

简而言之

Product->Edit Scheme->Diagnostics-> Click Enable Zombie Objects
Run Code Online (Sandbox Code Playgroud)

  • 在Xcode中,在顶部的"帮助"菜单中(右侧的最后一个)搜索"编辑方案",它将在任何版本中每次指向正确的方向. (2认同)

Sha*_*bon 43

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

另外需要注意的是仪器库中没有实际的Zombies仪器.僵尸跟踪模板实际上由具有"启用NSZombie检测"启动配置集的分配工具组成.

  • "但是,只有当前构建目标是模拟器时,此跟踪模板才可用".谢谢! (13认同)

Dav*_*ong 25

在您的可执行文件上设置环境变量(NSZombieEnabled = YES),然后正常运行/调试您的应用程序是一件简单的事情.如果您向僵尸发送消息,您的应用程序将崩溃/中断调试器并NSLog为您发送消息.

有关更多信息,请查看此CocoaDev页面:http://www.cocoadev.com/index.pl? NSZombieEnabled

此外,随着10.6版和Xcode和Instruments的下一版本的发布,这个过程将变得更加容易.只是说'.=)


gar*_*ois 22

产品> Profile将弹出仪器.从面板中选择僵尸并疯狂.

  • @jluebbert我会说更努力,因为我肯定看到它,运行Xcode 4.02 (5认同)

PJR*_*PJR 16

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

在此输入图像描述

在此输入图像描述


Dax*_*Dax 12

在xcode 4.2中

转到,产品 - >编辑方案 - >单击运行yourappname.app - > Diagonostics - >启用Zombie对象.


小智 11

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


Dov*_*Dov 6

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