!for_each_module
!for_each_module 拡張機能は、ロードされたモジュールごとにデバッガー コマンドを 1 回実行します。
!for_each_module ["CommandString"]
!for_each_module -?
<パラメーター
CommandString
デバッガーのモジュール リスト内のモジュールごとに 1 回実行するデバッガー コマンドを指定します。 CommandString に複数のコマンドが含まれる場合は、コマンドをセミコロンで区切って、CommandString を引用符で囲む必要があります。 複数のコマンドを含める場合、CommandString 内の個々のコマンドに引用符を含めることはできません。
次のエイリアスは、CommandString または CommandString のコマンドが実行する任意のスクリプトで使用できます。
エイリアス | データの種類 | Value |
---|---|---|
@#FileVersion |
string |
モジュールのファイルバージョン。 |
@#ProductVersion |
string |
モジュールの製品バージョン。 |
@#ModuleIndex |
ULONG |
モジュール番号。 モジュールは 0 から順に列挙されます。 |
@#ModuleName |
string |
モジュール名。 この名前は通常、ファイル名拡張子を除いたファイル名です。 状況によっては、モジュール名がファイル名と大幅に異なる場合があります。 |
@#ImageName |
string |
ファイル名拡張子を含む実行可能ファイルの名前。 通常、フルパスはユーザーモードには含まれますが、カーネルモードには含まれません。 |
@#LoadedImageName |
string |
Microsoft CodeView シンボルが存在しない限り、このエイリアスはイメージ名と同じです。 |
@#MappedImageName |
string |
ほとんどの場合、このエイリアスは NULL です。 デバッガーがイメージ ファイルをマッピングしている場合 (たとえば、ミニダンプ デバッグ中)、このエイリアスはマッピングされたイメージの名前です。 |
@#SymbolFileName |
string |
シンボル ファイルのパスと名前。 シンボルをロードしていない場合は、このエイリアスが実行可能ファイルの名前になります。 |
@#ModuleNameSize |
ULONG |
モジュール名文字列の文字列長に 1 を加えたもの。 |
@#ImageNameSize |
ULONG |
イメージ名文字列の文字列長に 1 を加えたもの。 |
@#LoadedImageNameSize |
ULONG |
ロードされたイメージ名の文字列の長さに 1 を加えたもの。 |
@#MappedImageNameSize |
ULONG |
マップされたイメージ名の文字列の長さに 1 を加えたもの。 |
@#SymbolFileNameSize |
ULONG |
シンボル ファイル名文字列の文字列長に 1 を加えたもの。 |
@#Base |
ULONG64 |
画像の開始アドレス。 |
@#Size |
ULONG |
画像のサイズ (バイト単位)。 |
@#End |
ULONG64 |
画像の末尾のアドレス。 |
@#TimeDateStamp |
ULONG |
画像の日時スタンプ。 この時刻と日付スタンプを読み取り可能な日付に拡張する場合は、.formats (数値形式の表示) コマンドを使用します。 |
@#Checksum |
ULONG |
モジュールのチェックサム。 |
@#Flags |
ULONG |
モジュールのフラグ。 DEBUG_MODULE_Xxx 値のリストについては、Dbgeng.h を参照してください。 |
@#SymbolType |
USHORT |
シンボルのタイプ。 DEBUG_SYMTYPE_Xxx 値のリストについては、Dbgeng.h を参照してください。 |
これらのエイリアスは、各モジュールに対して CommandString が実行される前、および他の解析が行われる前にすべて置き換えられます。 これらのエイリアスでは大文字と小文字が区別されます。 エイリアスが括弧で囲まれている場合でも、エイリアスの前後にスペースを追加する必要があります。 C++ 式構文を使用する場合は、これらのエイリアスを @@( @#alias) として参照する必要があります。
これらのエイリアスは、!for_each_module の呼び出しの存続期間中のみ使用できます。 これらを疑似レジスタ、固定名のエイリアス、またはユーザー名付きのエイリアスと混同しないでください。
-?
この拡張機能のヘルプ テキストをデバッガー コマンド ウィンドウに表示します
DLL
Ext.dll
追加情報
文字列を入力するためのショートカット (${ } トークンの使用を含む) としてエイリアスを定義して使用する方法の詳細については、「エイリアスの使用」を参照してください。
解説
引数を指定しない場合、!for_each_module 拡張子は、ロードされたモジュールに関する一般情報を表示します。 この情報は、次のコマンドで表示される情報と似ています。
!for_each_module .echo @#ModuleIndex : @#Base @#End @#ModuleName @#ImageName @#LoadedImageName
ロードされたモジュールとアンロードされたモジュールの詳細については、lm (List Loaded Modules) コマンドを使用してください。
詳細デバッガー出力を有効にすると、拡張機能が呼び出されたときにデバッガーにロードされたモジュールとアンロードされたモジュールの合計数が表示され、そのモジュールに対して CommandString が実行される前に、各モジュールに関する詳細情報 (使用可能な各エイリアスの値を含む) が表示されます。
次の例は、!for_each_module 拡張機能の使用方法を示しています。 次のコマンドは、グローバル デバッグ フラグを表示します。
!for_each_module x ${@#ModuleName}!*Debug*Flag*
!for_each_module x ${@#ModuleName}!g*Debug*
次のコマンドは、!chkimg 拡張子を使用して、ロードされたすべてのモジュールのバイナリ破損をチェックします。
!for_each_module !chkimg @#ModuleName
次のコマンドは、読み込まれたすべてのイメージでパターン「MZ」を検索します。
!for_each_module s-a @#Base @#End "MZ"
次の例は、各モジュール名に対する @#FileVersion と @#ProductVersion の使用を示しています。
0:000> !for_each_module .echo @#ModuleName fver = @#FileVersion pver = @#ProductVersion
USER32 fver = 6.0.6000.16438 (vista_gdr.070214-1610) pver = 6.0.6000.16438
kernel32 fver = 6.0.6000.16386 (vista_rtm.061101-2205) pver = 6.0.6000.16386
ntdll fver = 6.0.6000.16386 (vista_rtm.061101-2205) pver = 6.0.6000.16386
notepad fver = 6.0.6000.16386 (vista_rtm.061101-2205) pver = 6.0.6000.16386
WINSPOOL fver = 6.0.6000.16386 (vista_rtm.061101-2205) pver = 6.0.6000.16386
COMCTL32 fver = 6.10 (vista_rtm.061101-2205) pver = 6.0.6000.16386
SHLWAPI fver = 6.0.6000.16386 (vista_rtm.061101-2205) pver = 6.0.6000.16386
msvcrt fver = 7.0.6000.16386 (vista_rtm.061101-2205) pver = 7.0.6000.16386
GDI32 fver = 6.0.6000.16386 (vista_rtm.061101-2205) pver = 6.0.6000.16386
RPCRT4 fver = 6.0.6000.16525 (vista_gdr.070716-1600) pver = 6.0.6000.16525
SHELL32 fver = 6.0.6000.16513 (vista_gdr.070626-1505) pver = 6.0.6000.16513
ole32 fver = 6.0.6000.16386 (vista_rtm.061101-2205) pver = 6.0.6000.16386
ADVAPI32 fver = 6.0.6000.16386 (vista_rtm.061101-2205) pver = 6.0.6000.16386
COMDLG32 fver = 6.0.6000.16386 (vista_rtm.061101-2205) pver = 6.0.6000.16386