2012-08-04 14 views
11

私が書いたC/C++プログラムでは、バッファオーバーフロー、動的メモリの誤使用などを見つけるために、Valgrindの代わりにClangを使用します。私は、hereの指示に従ってClangを構築しました。Windowsで-faddress-sanitizerを使用したClang

私は(指定hereなど)-faddress-消毒オプションで簡単な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) 

なぜGCCを呼び出す(私はそれを理解したように)打ち鳴らすされます?もちろん、GCCは-faddress-sanitizerオプションをサポートしていません。

私はValgrindの良い(無料の)代用品をしばらく見つけようとしているので、これを使用する可能性に本当に興奮しています。誰かが助けてくれますか?

答えて

6

グーグルが私にthis pageをもたらしました。引用する

AddressSanitizerは(Ubuntuの10.04でテスト)

  • のLinux x86_64版でサポートされています。
  • MacOS 10.6および10.7(i386/x86_64)。

Linuxのサポートi386/ARMは現在進行中です(動作する可能性がありますが、保証はありません)。交換のトピックに関する


、あなたがDr. Memoryで見たことがありますか?

+0

ありがとうございますが、Address Sanitizerは[this](http://code.google.com/p/address-sanitizer/wiki/WindowsPort)に従ってWindowsで動作するはずです。 私はDr. Memoryに最近の試みをしましたが、バッファオーバーフローを捕捉しませんでしたが、メモリ内の初期化されていない読み取りをキャッチしました。私が後にしている最も重要な機能は、バッファオーバーフローの検出です。 – thegreendroid

+0

あなたはその指示に完全に従いましたか? – oldrinb

+0

私はMSVCを使用してアドレスサニタイザをコンパイルするので、私はしようとしましたが、短く停止しました。私はMinGW32を使用しています。 – thegreendroid

関連する問題