!for_each_frame
!for_each_frame 拡張機能は、現在のスレッドのスタック内のフレームごとにデバッガー コマンドを 1 回実行します。
!for_each_frame ["CommandString"]
!for_each_frame -?
パラメーター
CommandString
フレームごとに 1 回実行するデバッガー コマンドを指定します。 CommandString に複数のコマンドが含まれる場合は、コマンドをセミコロンで区切って、CommandString を引用符で囲む必要があります。 複数のコマンドを含める場合、CommandString 内の個々のコマンドに引用符を含めることはできません。 CommandString内の現在のフレームのインデックスを参照する場合は、@$frame 擬似登録を使用します。
-?
この拡張機能のヘルプ テキストをデバッガー コマンド ウィンドウに表示します
DLL
Ext.dll
追加情報
ローカル コンテキストの詳細については、「コンテキストの変更」を参照してください。
解説
引数を指定しない場合、!for_each_frame 拡張機能はすべてのフレームとそのフレーム インデックスのリストを表示します。 すべてのフレームの詳細なリストを表示するには、k (スタック バックトレースの表示) コマンドを使用します。
k コマンドは最大 256 フレームまで歩きます。 列挙されたフレームごとに、そのフレームが一時的に現在のローカル コンテキストになります (.frame (ローカル コンテキストの設定) コマンドと同様)。 コンテキストが設定された後、CommandString が実行されます。 すべてのフレームが使用されると、ローカル コンテキストは !for_each_frame 拡張機能を使用する前の値にリセットされます。
CommandString を含めると、デバッガーは、そのフレームに対してコマンドが実行される前に、フレームとそのインデックスを表示します。
次のコマンドは、現在のスタックのすべてのローカル変数を表示します。
!for_each_frame !for_each_local dt @#Local