!avrf

!avrf拡張機能は、アプリケーション検証ツールの設定を制御し、アプリケーション検証ツールによって生成されたさまざまな出力を表示します。

    !avrf
    !avrf -vs { Length | -a Address }
    !avrf -hp { Length | -a Address }
    !avrf -cs { Length | -a Address }
    !avrf -dlls [ Length ]
    !avrf -trm
    !avrf -ex [ Length ] 
    !avrf -threads [ ThreadID ]
    !avrf -tp [ ThreadID ]
    !avrf -srw  [ Address | Address Length ] [ -stats ]
    !avrf -leak  [ -m ModuleName] [ -r ResourceType] [ -a Address ] [ -t ]
    !avrf -trace TraceIndex 
    !avrf -cnt
    !avrf -brk [BreakEventType]  
    !avrf -flt [EventType Probability] 
    !avrf -flt break EventType 
    !avrf -flt stacks Length 
    !avrf -trg [ Start End | dll Module | all ] 
    !avrf -settings 
    !avrf -skp [ Start End | dll Module | all | Time ] 

パラメーター

-vs {長さ| -aアドレス}
仮想領域操作ログを表示します。 長さは、最新のものから順に表示するレコードの数を指定します。 アドレスは仮想アドレスを指定します。 この仮想アドレスを含む仮想操作のレコードが表示されます。

-hp {長さ| -aアドレス}
ヒープ操作ログを表示します。 アドレスはヒープアドレスを指定します。 このヒープ アドレスを含むヒープ操作のレコードが表示されます。

-cs {長さ| -aアドレス}
クリティカル セクションの削除ログを表示します。 長さは、最新のものから順に表示するレコードの数を指定します。 アドレスはクリティカルセクションのアドレスを指定します。 アドレスを指定すると、特定のクリティカル セクションのレコードが表示されます。

-dlls [長さ]
DLLのロード/アンロードログを表示します。 長さは、最新のものから順に表示するレコードの数を指定します。

-trm
終了したすべてのスレッドと中断されたスレッドのログを表示します。

-ex [長さ]
例外ログを表示します。 アプリケーション検証ツールは、アプリケーション内のすべての例外を追跡します。

-スレッド [ThreadID]
対象プロセスのスレッドに関する情報を表示します。 子スレッドの場合は、親によって指定されたスタック サイズと CreateThread フラグも表示されます。 スレッド ID を指定すると、そのスレッドのみの情報が表示されます。

-tp [ThreadID]
スレッドプール ログを表示します。 このログには、スレッド アフィニティ マスクの変更、スレッドの優先度の変更、スレッド メッセージの投稿、スレッド プール コールバック内からの COM の初期化または初期化解除など、さまざまな操作のスタック トレースが含まれています。 スレッド ID を指定すると、そのスレッドのみの情報が表示されます。

-srw[アドレス|アドレスの長さ][ -stats ]
スリム リーダー/ライター (SRW) ログを表示します。 アドレスを指定すると、そのアドレスの SRW ロックのレコードが表示されます。 アドレス長さを指定すると、そのアドレス範囲内の SRW ロックのレコードが表示されます。 -stats オプションを含めると、SRW ロック統計が表示されます。

-leak [ -mModuleName] [ -rResourceType] [ -aAddress] [ -t ]
未処理のリソース ログを表示します。 これらのリソースは、特定の時点でリークする場合とそうでない場合があります。 Modulename (拡張機能を含む) を指定すると、指定したモジュール内のすべての未処理のリソースが表示されます。 ResourceType を指定すると、そのリソース タイプの未処理のリソースがすべて表示されます。 アドレスを指定すると、そのアドレスを持つ未処理のリソースのレコードが表示されます。 ResourceType は次のいずれかになります:

ヒープ:Win32 ヒープ API を使用してヒープ割り当てを表示します

地元:ローカル/グローバル割り当てを表示します

CRT: CRT APIを使用して割り当てを表示します

バーチャル:仮想予約を表示します

BSTR: BSTR割り当てを表示します

レジストリ: レジストリキーが開いていることを表示します

力:電力通知オブジェクトを表示します

ハンドル:スレッド、ファイル、イベントハンドルの割り当てを表示します

-traceTraceIndex 指定したトレース インデックスのスタック トレースを表示します。 一部の構造体では、この 16 ビットインデックス番号を使用してスタック トレースを識別します。 このインデックスは、スタック トレース データベース内の場所を指します。

-cnt グローバル カウンタのリストを表示します。

-brk [BreakEventType] ブレークイベントを指定します。 BreakEventType はブレーク イベントのタイプ番号です。 使用可能な型の一覧と、現在の中断イベント設定の一覧については、!avrf -brkと入力 します。

-flt [EventType Probability] フォールト挿入を指定します。 EventType はイベントのタイプ番号です。 Probabilityは、イベントが失敗する頻度です。 これには、0 ~ 1,000,000 (0xF4240) の任意の整数を指定できます。 追加パラメーターなしで !avrf -flt を入力すると、現在のフォールト インジェクション設定が表示されます。

-flt breakEventTypeEventType で指定されたこの障害が挿入されるたびに、Application Verifier がデバッガーに侵入します。

-flt stacks長さ 最新のフォールト挿入操作のスタック トレースの長さの数を表示します。

-trg [Start End| dllModule| all ]対象範囲を指定します。 Start は、ターゲット範囲の開始アドレスです。 End は、ターゲット範囲の終了アドレスです。 Module は、対象となるモジュールの名前 (.exe または .dll 拡張子を含むが、パスは含まない) を指定します。 -trg allを入力すると、すべてのターゲット範囲がリセットされます。 追加パラメータを指定せずに -trg を入力すると、現在のターゲット範囲が表示されます。

-skp [Start End| dllModule| all |Time] 除外範囲を指定します。 Start は除外範囲の開始アドレスです。 End は除外範囲の終了アドレスです。 モジュールは、対象または除外するモジュールの名前を指定します。 Module には、除外するモジュールの名前 (.exe または .dll 拡張子を含むが、パスは含まない) を指定します。 -skp all を入力すると、すべての対象範囲または除外範囲がリセットされます。 Time 値を入力すると、実行が再開されてからTimeミリ秒の間、すべての障害が抑制されます。

DLL

exts.dll

追加情報

Application Verifier とそのドキュメントをダウンロードしてインストールする方法については、「Application Verifier」を参照してください。

解説

!avrf 拡張機能をパラメーターなしで使用すると、現在のアプリケーション検証ツール オプションが表示されます。 フル ページ ヒープまたは[高速フィル ヒープオプションが有効になっている場合は、アクティブなページ ヒープに関する情報も表示されます。 例については、デバッグアプリケーションのベリファイアが停止の「ヒープ操作ログ」を参照してください。

アプリケーション検証ツールの停止が発生した場合、 パラメーターのない !avrf 拡張機能によって、停止の性質とその原因が明らかになります。 いくつかの例については、アプリケーション検証ツールの停止のデバッグを参照してください。

ntdll.dll および verifier.dll のシンボルが欠落している場合、!avrf拡張子によってエラー メッセージが生成されます。 この問題に対処する方法については、デバッグアプリケーションのベリファイアが停止の「デバッガーのインストールとセットアップ」を参照してください。