锵在Windows -faddress,消毒(Clang with -faddress-saniti

2019-06-26 17:50发布

我的目的是使用Clang作为替代Valgrind Windows上找到缓冲区溢出,在C / C ++程序的动态内存滥用等,我已经写了。 我已经成功地构建锵按照指示在这里 。

我试图编译一个简单的C程序与-faddress-消毒剂选项(如指定位置 )及以下的错误被抛出-

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)

为什么铛(据我所知)调用GCC? 当然,GCC不支持-faddress-消毒剂的选择。

我在用这个,因为我一直在试图找到一个Valgrind的好(免费),替代了一段时间的可能性非常兴奋。 是否有人可以帮助?

Answer 1:

AddressSanitizer这些天的效果要好得多(在Windows,但它仍然是一个有点工作正在进行中)。 还有一些文档在https://github.com/google/sanitizers/wiki/AddressSanitizerWindowsPort



Answer 2:

谷歌搜索给我带来了这个网页 。

报价,

AddressSanitizer上支持

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

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


在更换的话题,你看记忆博士 ?



文章来源: Clang with -faddress-sanitizer on Windows