为什么"启用地址消毒剂"在Xcode 7中被禁用?

时间:2015-09-17 14:10:45

标签: clang xcode7 address-sanitizer

我在新Xcode 7中的Apple docs中读到了运行时清理,所以我找了它,发现它被禁用了。我正在使用Xcode 7 GM种子。

当我进入该计划的Run行动时>诊断选项卡,Enable Address Sanitizer选项已禁用:

enter image description here

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

  

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

查看Clang 3.8 documentation for Addresssanitizer,看起来也可以通过添加标记-fsanitize=address来启用它。但是在构建设置中应该使用这个标志是一个谜,并且有问题,因为它也作为方案中的复选框选项存在。

同样发现了这个SO answer,但它相当复杂,而且可能已经过时,因为它早在2013年。

2 个答案:

答案 0 :(得分:13)

您目前无法同时使用Guard Malloc和Address Sanitizer。选中Enable Guard Malloc复选框将禁用Enable Address Sanitizer复选框。如果要使用Address Sanitizer,请取消选中Enable Guard Malloc复选框。

答案 1 :(得分:0)

您还需要确保选择了Mac / iOS / TV模拟器,而不是设备。不支持监视模拟器。 (截至Xcode 9)