現在、Windows 上の Ubuntu Bash で llvm、clang、clang-format、clang-modernize を実行しています。アドレス、メモリ、スレッド サニタイズなど、Google がリリースしたサニタイズ ツール セットを使用したいと考えています。fsanitize オプションはどれも機能していないようです。
ASAN のコード サンプルは次のとおりです。
#include <stdlib.h>
int main() {
char *x = (char *)malloc(10 * sizeof(char *));
free(x);
return x[5];// purposely accessing deallocated memory
}
Windows 上の bash での clang 呼び出しは次のとおりです。
$clang++-3.5 -fsanitize=address -o1 -fno-omit-frame-pointer -g main.cpp -o main
$./main
結果
==70==Sanitizer CHECK failed: build/buildd/llvm-toolchain-snapshot-3.5/projects/compiler-rt/lib/sanitizer_common/sanitizer_procmaps_linux.cc:211 ((IsOneOf(*current_, 's', 'p'))) != (0)(0,0)
それを機能させる方法、またはツールチェーンの一部が欠けているかどうかについての提案が欲しいです。
Windows用のclangにはstd:outサポートなどの単純な機能がないため、UbuntuまたはDebianをデュアルブートすると思いますが、理想的にはWindowsターゲットとLinuxターゲットの両方でコンパイルできるようにしたいと思います。UbuntuはWindowsストレージスペースをマウントできないため、デュアルブートは避けたいと思いますが、Windows上のUbuntu bashにはうまく提供されているようです。