Clang 为什么是;启用地址消毒剂“;在Xcode 7中禁用?

Clang 为什么是;启用地址消毒剂“;在Xcode 7中禁用?,clang,xcode7,address-sanitizer,Clang,Xcode7,Address Sanitizer,我在新的Xcode 7中阅读了关于运行时清理的文章,所以我查找了它,发现它被禁用了。我使用的是Xcode 7转基因种子 当我进入scheme>Diagnostics选项卡的Run操作时,EnableAddress Sanitizer选项被禁用: 关于其他选项是如何被取消的,有一些解释,但没有提到为什么会禁用消毒选项: 一些诊断工具可以与其他工具结合使用;当选择不同的选项以帮助您选择选项组合时,Diagnostics(诊断)窗格上可用的选项将被启用和禁用。例如,启用地址消毒器和其他不兼容的工具被

我在新的Xcode 7中阅读了关于运行时清理的文章,所以我查找了它,发现它被禁用了。我使用的是Xcode 7转基因种子

当我进入scheme>Diagnostics选项卡的Run操作时,
EnableAddress Sanitizer
选项被禁用:

关于其他选项是如何被取消的,有一些解释,但没有提到为什么会禁用消毒选项:

一些诊断工具可以与其他工具结合使用;当选择不同的选项以帮助您选择选项组合时,Diagnostics(诊断)窗格上可用的选项将被启用和禁用。例如,启用地址消毒器和其他不兼容的工具被禁用,无法选择

查看,似乎还可以通过添加一个标志来启用它:
-fsanize=address
。但在构建设置中应该在何处使用此标志是一个谜,而且值得怀疑,因为它在方案中也作为复选框选项存在


也发现了这一点,但它相当复杂,而且可能已经过时,因为它早在2013年就出现了。

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

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

我已经选择了
Enable-Guard-Malloc
,没有想到取消选择它。谢谢启用以下选项之一可防止使用地址消毒器:启用Malloc Scribble、启用Malloc保护边、启用保护Malloc和Malloc堆栈。所有这些选项都应该取消选中,以便激活地址消毒剂。为什么会这样?