这仅适用于专门在Lion上运行的新Xcode 4.1。你如何在仪器中启用NSZombie?它不再位于启动配置下的(i)图标中的分配中,如Xcode 4.0中所示。也没有名为Zombies的图书馆条目。
当然问题是我不能回到Xcode 4.0,因为它拒绝在Lion下运行,所以我在腌菜!使用Lion的任何其他前沿开发人员,比我更有经验,可以帮助挖掘出来吗?谢谢。 -Ric
答案 0 :(得分:8)
我从Apple那里得到了关于我自己的问题的非常有用的答案。这是逐字的 -
ME:是否有关于如何使用Xcode 4.1.1和/或仪器在设备上进行测试,找到那些难以解除分配的对象的更新?
APPLE:首先,上面[苹果论坛]中显示的黑客已经被操作系统的内部更改废弃,即僵尸设置现在由CF完成。您可以使用下面显示的代码强制启用僵尸:
extern void _CFEnableZombies(void);
int main(int argc,char ** argv) { _CFEnableZombies();
... rest of your main ...
}
重要提示:_CFEnableZombies函数是私有的,因此您甚至不考虑将此代码放入生产应用程序中。但是,这不是秘密;你可以通过查看Lion的Darwin开源来了解它是如何实现的。
http://www.opensource.apple.com/source/CF/CF-635/CFRuntime.c
如果这样做,当您向僵尸发送消息时,无论您如何运行它,您的应用都将停止(带有断点异常)。因此,您可以使用Allocations仪器在Instruments中运行它,并获得僵尸检测和分配跟踪。
请注意,当收到僵尸消息时,系统会输出如下内容:
*** - []:发送给已解除分配的实例的消息“
这不会出现在仪器控制台区域;你必须使用Xcode Organizer(或iPCU)来查看它。
分享并享受
奎因“爱斯基摩人!” Apple开发人员关系,开发人员技术支持,核心操作系统/硬件
我:希望在这种情况下,对于你们中的一些人来说这是有用的信息。
答案 1 :(得分:3)
这是一个独特的工具:
答案 2 :(得分:2)
还有另一种方法可以在设备上运行NSZombie,但这是通过XCode 4而非仪器完成的。
要在设备上运行NSZombie,请打开XCode项目,然后单击顶部菜单项“Product”,然后按住alt并单击“Run”,这将打开一个单独的窗口,您将在其中看到底部的“Environment Variables”的窗口。点击“+”并输入“NSZombieEnabled”作为名称,输入“YES”作为值。