308

我有一个应用程序崩溃,没有错误跟踪。如果我调试,我可以看到正在发生的部分情况,但无法确定哪个对象是“僵尸”。

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

4

15 回答 15

443

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

要编辑方案并打开僵尸:

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

  • 转到左侧面板中的“运行 Foo.app”阶段,以及右侧的“参数”选项卡。

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


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


使用 Xcode 6.4:

截屏

于 2011-03-22T04:57:39.023 回答
146

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

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

简而言之

Product->Edit Scheme->Diagnostics-> Click Enable Zombie Objects
于 2011-11-16T12:28:32.823 回答
43

Product > Profile 将启动 Instruments,然后您应该有一个名为“Zombies”的“Trace Template”。但是,此跟踪模板仅在当前构建目标是模拟器时可用 - 如果您将目标设置为 iOS 设备,它将不可用。

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

于 2011-05-05T01:19:23.590 回答
25

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

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

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

于 2009-07-31T15:16:29.540 回答
22

Product > Profile 会弹出 Instruments。从面板中选择僵尸并发疯。

于 2011-04-04T13:56:23.027 回答
17

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

在此处输入图像描述

在此处输入图像描述

于 2013-12-11T09:48:19.150 回答
12

在 xcode 4.2

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

于 2011-11-08T12:56:54.980 回答
11

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

于 2011-01-31T03:19:08.267 回答
6

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

于 2010-12-08T23:40:25.160 回答
4

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

于 2012-12-07T14:37:51.043 回答
3

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

于 2011-04-30T10:12:17.093 回答
3

在 XCode 4.0 中:要在 Instruments 中检测 NSZombie,请选择 Simulator 作为目标(无法在设备上检测 NSZomboe)。运行 Instruments (CMD+I) 并选择“Zombies”跟踪模板。享受。

于 2011-10-06T12:22:33.457 回答
2

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

于 2011-04-30T10:11:30.037 回答
2

在你的 XCODE (4.3) 旁边的播放按钮:) (运行)

选择:编辑方案

计划管理窗口将打开

单击“参数”选项卡

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

在(2-环境变量)地方名称:NSZombieEnabled
值:YES

它完成了......

于 2012-05-17T09:41:00.620 回答
1

NSZombieEnabled 用于调试 BAD_ACCESS,

从 Xcode 的方案表中启用 NSZombiesEnabled 环境变量。

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

视频将帮助您了解我要说的内容。

于 2013-10-22T08:21:16.133 回答