如何在 ARC 下的 Instruments 中激活 Cycles 报告?

Posted

技术标签:

【中文标题】如何在 ARC 下的 Instruments 中激活 Cycles 报告?【英文标题】:How to activate Cycles reporting in Instruments under ARC? 【发布时间】:2012-02-09 18:25:08 【问题描述】:

仪器可以以有趣的图形方式可视化 ARC 下的保留周期。我还记得几天前我偶然发现了 Instruments 中的“Cycles”视图。

现在我开始使用 ARC,突然间我再也找不到它了。 Allocations 和 VM Tracker 工具不提供它,Leaks 工具也不提供。

我必须做什么才能看到保留周期?

找到一张截图作为证据:

【问题讨论】:

【参考方案1】:

使用 Xcode 4.2.1,我在“Leaks”中的“Cycles & Roots”下找到了它。但是,我发现它在使用 ARC 时用处不大。它确实检测到 CF 泄漏,显然我正在泄漏一个递归块,对此我无能为力,但我不得不根除泄漏从未发现的几个保留周期。为了找到保留周期,我建议使用“分配”并在执行您怀疑“泄漏”的操作之间运行几个堆镜头。然后,您可以查看临时堆镜头以找到罪魁祸首。

【讨论】:

所以只出现在 Xcode > 4.2 中?我没有 Lion,只有 4.2,但我绝对确定我已经在 Xcode 中发现了“Cycles”。就是不能再激活了。它消失了。 老实说,我不确定它是否在低于 4.2.1 的版本中可用,但它没有用。我有一个巨大的保留周期,其中两个视图控制器保留自己(忘记使用 __weak),并且它们有很多图像。泄漏从未检测到它。很烦人,所以现在我更多地使用 Allocations。 @MikhaloIvanokov - 它位于 Xcode 4.2 中,位于 Leaks 工具的下方。您必须单击上图中“Leak Cycles”字样左侧下方面板中的下拉菜单,然后将值从“Leaks”更改为“Cycles & Roots”。 @AaronHayman - 如果您可以为此组装一个测试用例,请提交一份关于该用例行为的错误报告。这是一项相当新的技术,我知道 Leaks 仪器的设计是保守的,所以他们很可能会遗漏一些东西。他们最近似乎很快改进了 ARC 和相关工具,所以这可能有助于他们解决这个问题。 周期报告仅在使用 ARC 的项目中受支持,这可以解释为什么您会看到它来来去去(如果您在不同的项目中)。

以上是关于如何在 ARC 下的 Instruments 中激活 Cycles 报告?的主要内容,如果未能解决你的问题,请参考以下文章

转使用Xcode和Instruments调试解决iOS内存泄露

如何在 Lion 下的 Xcode 4.1 Instruments 中启用 NSZombie?

(转载)IOS- Instruments使用之使用Leaks检测内存泄漏

使用 ARC 查找对象的保留位置

解决iOS内存泄露

Apple Instruments - 参考计数