2016-06-14 35 views
12

我将一个项目从以前版本的Xcode迁移到Xcode 8.我想要的是使用新的可视化内存调试器。它在新项目中可用,但在我的导入项目中完全没有。为什么是这样?如何在Xcode 8中启用Visual Memory Debugger?

+0

我想你应该更新你的项目推荐Xcode 8设置。 –

+0

您是否看到任何黄色三角形(警告)要求您更新? –

+0

我只是单击了这些,但问题仍然存在。 – PopKernel

回答

12

似乎夫特3所需的视觉记忆调试工作。

我的应用程序迁移到Swift 2.3没有工作,当我试图将其迁移到Swift 3.0时它立即工作。

可视化内存调试器不需要运行时清理复选框,但其禁用的原因是相同的。

+5

在[Xcode 8.0 beta版本说明](http://adcdownload.apple.com/WWDC_2016/Xcode_8_beta/Release_Notes_for_Xcode_8_beta.pdf)中证实:“请注意,在Xcode 8几项新功能不支持使用雨燕2.3的项目,其中包括: •内存图形调试 •地址消毒剂 •螺纹消毒 •核心数据建立时代码生成 为了能够使用这些功能,你必须将您的Swift代码迁移到Swift 3.(26003920)“ – zpasternack

+0

我的项目使用swift 2.3似乎可以正常工作.. – Brynjar

0

我刚刚在Xcode 8中运行了用Xcode 7制作的Objective-C iOS 7项目(无需迁移),并且在Debug View Hierarchy按钮旁边的调试区域中的Xcode底部出现Visual Memory Debugger图标。

Visual memory Debugger

这是与三个圆圈按钮。

从其他评论看来,Swift 3可能需要使用此功能。

+0

进行运行时问题检测。它不在那里。也许这与我的项目是一个mac应用程序有关? – PopKernel

+0

嗯,也许吧。您之前定位的是什么版本的OS X,以及该项目创建的Xcode版本是什么? – JAL

+1

等一下,“运行时卫生”怎么样?它在新项目的计划中被切换,但不在我的项目中。它变灰了,说“需要重新编译” – PopKernel

7

看起来项目需要Swift 3来启用地址&线程清理程序(这是内存调试器)。

address sanitizer thread sanitizer

对我来说,这适用于iOS的& OS X/MacOS的应用程序。都写在Swift 2.2 &转换为2.3。

注:我只在OS X El Capitan 10.11.5上测试过。

@gabriellanata确认它的工作原理,当代码被转换为夫特3.

+1

内存调试程序与线程清理程序不兼容。你不能同时运行两个。 – tzm41

+0

知道它仅适用于swift 3 ... –

0
Argument '-sanitize=address' is not supported on the Swift 2.3 toolchain. 
You will need to migrate your project to Swift 3 to use this feature. 

的Xcode 8 GM建立错误

P.S. Objective-C支持的视觉内存调试器

0

如果您单击内存,源编辑器窗格将更改为显示一些内存信息,包括其被禁用的原因。就我而言,这是因为我在计划中启用了僵尸物件。 (Xcode 8.3.2)