我在我的C程序中遇到了一个段错误,我认为我会使用Clangs来帮助弄清楚原因,因为Valgrind还不支持(还)。
我尝试使用-fsanitize = undefined编译我的程序,以激活对未定义行为的运行时检查。所有我得到的是一条错误消息,其内容如下:“fsanitize不支持选项'undefined'”。我也尝试使用-fsanitize = address,结果相同:/
任何人都知道这是为什么?
答案 0 :(得分:1)
苹果公司的CLang似乎不支持-fsanitize
。
如果你去http://llvm.org/releases/download.html#3.4,你可以获得clang的prebuild二进制文件,它确实能识别这个选项。
然而这更难,因为那时你必须使用Makefile, 如果您偶然使用cmake,那么您可以轻松地使用makefile。
OR 替换Xcode.app/Contents/Developer/Toolchains/.../bin中的二进制文件 但我不知道如果您更换Apples二进制文件会发生什么,请先进行备份才能恢复。
老实说,我对替换苹果的二进制文件并不是很自负,因为它们可能会在clang中添加一些东西以使其与Xcode很好地协同工作。 同样,海湾合作委员会的GPL政策具有苹果无法修改的优势。
- >另一种解决方案是在linux上开发,
CLang的窗口正在运行,但尚未准备好,可能是3.5。
最佳