10

我在新 Xcode 7 中的Apple 文档中阅读了有关运行时清理的信息,因此我查找了它,发现它已被禁用。我正在使用 Xcode 7 GM 种子。

当我进入方案 > 诊断选项卡的运行操作时,该Enable Address Sanitizer选项被禁用:

在此处输入图像描述

有一些关于如何禁用其他选项的解释,但没有提及为什么禁用清理选项:

一些诊断工具可以与其他工具结合使用;“诊断”窗格上的可用选项被启用和禁用,因为选择了不同的选项来帮助您选择选项组合。例如,启用地址清理程序和其他不兼容的工具被禁用并且无法选择

查看 Addresssanitizer的Clang 3.8 文档,看起来它也可以通过添加标志来启用:-fsanitize=address。但是在构建设置中应该在哪里使用这个标志是一个谜,而且值得怀疑,因为它也作为方案中的复选框选项存在。

也找到了这个SO answer,但它相当复杂,并且可能已经过时,因为它早在 2013 年。

4

2 回答 2

14

您目前不能同时使用 Guard Malloc 和 Address Sanitizer。选择 Enable Guard Malloc 复选框会禁用 Enable Address Sanitizer 复选框。如果要使用 Address Sanitizer,请取消选中 Enable Guard Malloc 复选框。

于 2015-09-17T18:21:00.333 回答
2

您还需要确保选择了 Mac/iOS/TV 模拟器,而不是设备。不支持手表模拟器。(从 Xcode 9 开始)

于 2018-03-15T19:05:11.873 回答