【问题标题】:Why is "Enable Address Sanitizer" disabled in Xcode 7?为什么在 Xcode 7 中禁用了“启用地址清理程序”?
【发布时间】:2015-09-17 14:10:44
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: clang xcode7 address-sanitizer


    【解决方案1】:

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

    【讨论】:

    • 我已经选择了Enable Guard Malloc,并没有考虑取消选择它。谢谢!
    • 启用以下选项之一会阻止使用 Address Sanitizer:启用 Malloc Scribble、启用 Malloc 保护边缘、启用保护 Malloc 和 Malloc 堆栈。应取消选中所有这些选项,以便可以激活 Address Sanitizer。
    • 为什么会这样?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-03-28
      • 1970-01-01
      • 1970-01-01
      • 2012-08-26
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多