15

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

我尝试使用 -faddress-sanitizer 选项(如此指定)编译一个简单的 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 不支持 -faddress-sanitizer 选项。

我对使用它的可能性感到非常兴奋,因为一段时间以来我一直在努力寻找一个好的(免费)替代 Valgrind。有人可以帮忙吗?

4

2 回答 2

9

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

于 2015-01-23T21:09:20.413 回答
8

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

去引用,

支持 AddressSanitizer

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

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


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

于 2012-08-04T06:38:06.143 回答