/fsanitize (サニタイザーの有効化)

/fsanitize コンパイラ オプションを使用してサニタイザーを有効にします。

構文

/fsanitize=address
/fsanitize=fuzzer
/fsanitize-address-use-after-return
/fno-sanitize-address-vcasan-lib

解説

/fsanitize=address コンパイラ オプションを使用すると、見つけにくいバグを発見する強力なコンパイラおよびランタイム テクノロジである AddressSanitizer が有効になります。 /fsanitize=address オプションのサポートは、Visual Studio 2019 バージョン 16.9 以降で使用できます。

/fsanitize=fuzzer コンパイラ オプションを使用すると、LibFuzzer の試験的サポートが有効になります。 LibFuzzer は、ユーザー指定の入力によって発生するバグやクラッシュを見つけるために使用できる、カバレッジ ガイド付きファジー テスト ライブラリです。 /fsanitize=address を LibFuzzer と共に使用することをお勧めします。 このオプションは、OneFuzz などのファジー テスト ツールに役立ちます。 詳細については、OneFuzz のドキュメントOneFuzz GitHub プロジェクトに関するページをご覧ください。 /fsanitize=fuzzer オプションのサポートは、Visual Studio 2022 バージョン 17.0 以降で使用できます。

/fsanitize オプションでは、コンマ区切りの構文 (例: /fsanitize=address,fuzzer) を使用できません。 これらのオプションは個別に指定する必要があります。

/fsanitize-address-use-after-return および /fno-sanitize-address-vcasan-lib コンパイラ オプションと、/INFERASANLIBS (推定サニタイザー ライブラリの使用) および /INFERASANLIBS:NO リンカー オプションは、上級ユーザー向けのサポートを提供します。 詳細については、AddressSanitizer のビルドと言語のリファレンスに関する記事をご覧ください。

Visual Studio 開発環境で /fsanitize=address コンパイラ オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。

  2. [構成プロパティ]>[C/C++]>[全般] プロパティ ページを選択します。

  3. [Address Sanitizer を有効にする] プロパティを変更します。 有効にするには、[はい] (/fsanitize=address) を選びます。

  4. [OK] または [適用] を選択して、変更内容を保存します。

Visual Studio 開発環境で /fsanitize=fuzzer コンパイラ オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。

  2. [構成プロパティ]>[C/C++]>[全般] プロパティ ページを選択します。

  3. [Enable Fuzzer]\(ファザーを有効にする\) プロパティを変更します。 有効にするには、[はい] (/fsanitize=fuzzer) を選びます。

  4. [OK] または [適用] を選択して、変更内容を保存します。

高度なコンパイラ オプションを設定するには

  1. プロジェクトの [プロパティ ページ] ダイアログ ボックスを開きます。

  2. [構成プロパティ]>[C/C++]>[コマンド ライン] プロパティ ページを選択します。

  3. [追加のオプション] プロパティを変更して、/fsanitize-address-use-after-return または /fno-sanitize-address-vcasan-lib を設定します。

  4. [OK] または [適用] を選択して、変更内容を保存します。

このコンパイラ オプションをコードから設定するには

関連項目

MSVC コンパイラ オプション
MSVC コンパイラのコマンド ライン構文
/INFERASANLIBS (推定サニタイザー ライブラリの使用)
/fsanitize-coverage (サニタイザー カバレッジを構成する)
AddressSanitizer の概要
AddressSanitizer の既知の問題
AddressSanitizer のビルドと言語リファレンス