Clang with -faddress-sanitizer on Windows

做~自己de王妃 提交于 2019-11-29 17:44:36

问题


My intent is to use Clang as a replacement for Valgrind on Windows to find buffer overflows, dynamic memory misuse etc. in C/C++ programs that I've written. I have successfully built Clang following the instructions provided here.

I attempted to compile a simple C program with the -faddress-sanitizer option (as specified here) and the following the error is thrown -

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)

Why is clang (as I understand it) invoking GCC? Of course GCC does not support the -faddress-sanitizer option.

I am really excited at the possibility of using this as I've been trying to find a good (free) substitute for Valgrind for a while. Can someone please help?


回答1:


AddressSanitizer works much better on Windows these days (but it's still a bit of a work-in-progress). There's some documentation at https://github.com/google/sanitizers/wiki/AddressSanitizerWindowsPort




回答2:


Googling brought me to this page.

To quote,

AddressSanitizer is supported on

  • Linux x86_64 (tested on Ubuntu 10.04).
  • MacOS 10.6 and 10.7 (i386/x86_64).

Support for Linux i386/ARM is in progress (it may work, but is not guaranteed too).


On the topic of replacement, have you looked at Dr. Memory?



来源:https://stackoverflow.com/questions/11806469/clang-with-faddress-sanitizer-on-windows

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!