窗户上的时尚消毒液叮当作响

Clang with -faddress-sanitizer on Windows

本文关键字:消毒液 叮当作响 时尚 窗户      更新时间:2023-10-16

我的意图是在Windows上使用Clang来代替Valgrind,以查找我编写的C/C++程序中的缓冲区溢出、动态内存滥用等。我已经按照这里提供的说明成功地构建了Clang。

我试图用-faddress-splizer选项编译一个简单的C程序(如这里所指定的),然后抛出以下错误-

gcc.exe: error: unrecognized command line option '-faddress-sanitizer'
Using built-in specs.
COLLECT_GCC=C:/MinGW/bin/gcc.exe
Target: mingw32
Configured with: ../gcc-4.7.0/configure --enable-languages=c,c++,ada,fortran,objc,obj-      c++ --disable-sjlj-exceptions --with-dwarf2 --enable-shared --enable-libgomp --disable-win32-registry --enable-libstdcxx-debug --disable-build-poststage1-with-cxx --enable-version-specific-runtime-libs --build=mingw32 --prefix=/mingw
Thread model: win32
gcc version 4.7.0 (GCC)
clang: error: assembler (via gcc) command failed with exit code 1 (use -v to see invocation)

为什么clang(据我所知)会调用GCC?当然GCC不支持-时尚消毒液选项。

我真的很兴奋有可能使用这个,因为我一直在努力寻找一个好的(免费的)替代品来代替瓦尔格里德一段时间了。有人能帮忙吗?

AddressSanitizer如今在Windows上的工作效果要好得多(但仍有一些工作在进行中)。上有一些文档https://github.com/google/sanitizers/wiki/AddressSanitizerWindowsPort

谷歌搜索把我带到了这个页面。

引用

支持AddressSanitizer

  • Linux x86_64(在Ubuntu 10.04上测试)
  • MacOS 10.6和10.7(i386/x86_64)

对Linux i386/ARM的支持正在进行中(它可能工作,但不能保证)。


关于替代的话题,你看过记忆博士吗?