次の方法で共有


AddressSanitizer ランタイム オプション

次の表に、AddressSanitizer のオプションを示します。 これらを有効にするには、ASAN_OPTIONS環境変数を使用するか、__asan_default_options()説明するユーザー関数をオーバーライドします。

これらの説明は、Microsoft Visual C++ (MSVC) 固有の動作を説明します。これは、Clang のランタイム オプションとは異なる場合があります。

Flag 既定値 Description
abort_on_error false true場合、ASan はエラー レポートを印刷した後、abort()の代わりに_exit()を呼び出します。
alloc_dealloc_mismatch false malloc / deletenew[]/freeなどのメモリ操作の不一致を検出します。
allocator_frees_and_returns_null_on_realloc_zero true trueに設定した場合、realloc(p, 0)は既定でfree(p)と同じです (POSIX 標準と同じです)。 falseに設定すると、realloc(p, 0)は、使用できない割り当て済み領域へのポインターを返します。
allocator_may_return_null false true場合、アロケーターはメモリ不足時にnullptrを返します。 ASan はクラッシュする代わりに、アロケーターのエラーに関する警告を出力し、実行を続行します。
allow_user_poisoning true true場合は、手動 AddressSanitizer ポイズニング インターフェイスを使用して、メモリ領域を手動で有害または非固定としてマークできます。
check_initialization_order false true場合は、初期化順序の問題をキャッチしようとします。
continue_on_error 0 メモリの安全性エラーの報告中にアプリケーションの実行を続行できるようにします。
0-disabled。
1-enabled;エラーが stdoutに送信されます。
2-enabled;エラーが stderrに送信されます。
詳細については、 continue_on_errorを参照してください。
detect_container_overflow true true場合は、コンテナー オーバーフロー注釈を優先します。 詳細については、「 ContainerOverflow」を参照してください。
detect_invalid_pointer_pairs false true場合、ASan は、異なるオブジェクトに属するポインターなどの無効なポインター ペアに対する<<=>>=-などの操作を検出します。
detect_stack_use_after_return false 実験的。 true場合、ASan は実行時にstack-use-after-returnチェックを有効にします。 /fsanitize-address-use-after-returnが必要です。 詳細については、 スタック使用後の戻り値に関するページを参照してください。
exitcode 1 ASan がエラーを検出した場合、プログラムの終了状態をこの値でオーバーライドします。
external_symbolizer_path "" 外部シンボルへのパス。 空の場合、ASan はシンボル表示 $PATH を検索します。
fast_unwind_on_malloc true 使用可能な場合、ASan は、 malloc/freeで高速フレーム ポインター ベースのアンワインダーを使用します。
halt_on_error true サポートされていません。 continue_on_error を代わりに使用します。
handle_segv true true場合、ASan はSEGVエラーを処理します。
handle_sigfpe true true場合、ASan はSIGFPEエラーを処理します。
handle_sigill true true場合、ASan はSIGILLエラーを処理します。
help false true場合、ASan はフラグ オプションをコンソールに出力します。
iat_overwrite error error - 上書きが検出されるたびにエラーを報告します。
protect - 上書きされた定義の使用を回避します。
ignore - 上書きされた関数を修正しようとしません。 詳細については、iat_overwriteを参照してください。
include_if_exists "" 指定したファイルからオプションを読み取ります。 ファイルが存在しない場合、ASan は失敗しません。
intercept_strpbrk true true場合は、strpbrkのカスタム ラッパーを使用して、さらに多くのエラーを見つけます。
intercept_strspn true true場合は、strspnstrcspnのカスタム ラッパーを使用して、さらに多くのエラーを見つけます。
intercept_strstr true true場合は、strstrstrcasestrのカスタム ラッパーを使用して、さらに多くのエラーを見つけます。
malloc_context_size 1 割り当て/割り当て解除ごとに保持するスタック フレームの最大数。
malloc_fill_byte 0xbe 新しく割り当てられたメモリを埋めるために使用される値。
max_malloc_fill_size 4096 ASan アロケーターは、malloc_fill_byteの呼び出しで最大max_malloc_fill_sizeまでのmallocを割り当てに入力します。
max_redzone 2048 ヒープ オブジェクトに関するレッドゾーンの最大サイズ (バイト単位)。
new_delete_type_mismatch true newdeleteのサイズの不一致に関するエラーを報告します。 詳細については、new-delete-type-mismatchを参照してください。
poison_heap true true場合は、割り当てと割り当て解除時にヒープ メモリを有害にしてください。 false は、アロケーターまたはインストルメンテーターのベンチマークに役立ちます。
poison_partial true true場合は、部分的にアドレス指定可能な 8 バイトのアラインワードを有害にします。 このフラグはヒープ バッファーとグローバル バッファーに影響しますが、スタック バッファーには影響しません。
print_cmdline false クラッシュ時にコマンド ラインを出力します。 continue_on_error > = 1 に設定すると、現在の作業ディレクトリが出力され、UTF-16認識されます。
print_legend true true場合は、ASan レポートに付随するシャドウ メモリ マップの凡例を印刷します。
print_stats false true場合は、ASan レポートの印刷後にアロケーター統計を出力します。
print_summary true false場合、エラー レポートに付随するエラーの概要の表示を無効にします。
quarantine_size_mb -1 use-after-free エラーの検出に使用される検疫のサイズ (MB 単位)。 値を小さくすると、偽陰性の可能性が高くなる可能性があります。
redzone 16 ヒープ オブジェクトに関するレッドゾーンの最小サイズ (バイト単位)。 要件: redzone >= 16 、2 の累乗である必要があります。
replace_str true true場合は、libc文字列関数のカスタム ラッパーと置換を使用して、より多くのエラーを見つけます。
report_globals 1 グローバルのバッファー オーバーフローに応答する方法:
0- グローバルでのバッファー オーバーフローを検出しません。
1 - バッファー オーバーフローを検出します。
2 - バッファー オーバーフローを検出し、登録済みのグローバル データを出力します。
sleep_before_dying 0 エラー レポートの印刷とプログラムの終了の間にスリープ状態になる秒数。
stack_trace_format DEFAULT スタック フレームのレンダリングに使用する書式指定文字列。 DEFAULT - #%n %p %F %L. 使用可能なプレースホルダーの一覧:
%% - '%' 文字を表します
%n - フレーム番号 ( frame_noのコピー)
%p - PC
%m - モジュールへのパス
%o - モジュール内のオフセット
%f - 関数名
%q - 使用可能な場合は、関数内のオフセット
%s - ソース ファイルへのパス
%l - ソース ファイル内の行
%c - ソース ファイル内の列
%F - 関数が既知の場合、ASan はソースが不明な場合、 in <func name> を出力し、その後にこの関数のオフセットを出力します
%S - ASan はファイル/行/列の情報を出力します
%L - ファイル情報が使用可能な場合、ASan はファイル名、行、列を出力します。 モジュール情報が使用可能な場合、ASan はモジュール名、オフセット、およびアーキテクチャを出力します。 どちらも使用できない場合、ASan は (<unknown module>)
%M - 既知の場合、ASan はモジュールのベース名とオフセットを出力します。 PC
strict_memcmp true true場合は、memcmp(p1, p2, n)nを比較する前に、p1が常にp2バイトを読み取ると想定します。
strict_string_checks false true場合は、文字列引数が正しく null で終了していることを確認します。
strip_path_prefix "" エラー レポートのファイル パスからこのプレフィックスを削除します。
symbolize true true場合は、llvm-symbolizerを使用して、仮想アドレスをファイルまたは行の場所に変換します。
symbolize_inline_frames true スタックトレース内のインライン フレームを印刷します。
verbosity 0 詳細レベル:
0 - 既定の詳細度。
1 - より多くの出力。
2 - さらに多くの出力。
3 - 最大詳細度。
windows_fast_fail_on_error false true場合、エラー レポートを印刷した後、プロセスは__fastfail(71)で終了できます。 詳細については、windows_fast_fail_on_errorを参照してください。
windows_hook_legacy_allocators true true場合は、(Global/Local)(Alloc/Free/Size/ReAlloc/Lock/Unlock) 関数のフックを有効にします。

こちらも参照ください

AddressSanitizer の概要
AddressSanitizer の既知の問題
AddressSanitizer のビルドと言語リファレンス
AddressSanitizer シャドウ バイト
AddressSanitizer クラウドまたは分散テスト
AddressSanitizer デバッガーの統合
AddressSanitizer エラーの例