Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Ekstensi !for_each_module menjalankan perintah debugger satu kali untuk setiap modul yang dimuat.
!for_each_module ["CommandString"]
!for_each_module -?
<Parameter
CommandString
Menentukan perintah debugger untuk dijalankan satu kali untuk setiap modul dalam daftar modul debugger. Jika CommandString menyertakan beberapa perintah, Anda harus memisahkannya dengan titik koma dan mengapit CommandString dalam tanda kutip. Jika Anda menyertakan beberapa perintah, perintah individual dalam CommandString tidak boleh berisi tanda kutip.
Anda dapat menggunakan alias berikut di CommandString atau dalam skrip apa pun yang dijalankan perintah di CommandString .
| Alias | Jenis Data | Nilai |
|---|---|---|
@#FileVersion |
string |
Versi file modul. |
@#ProductVersion |
string |
Versi produk modul. |
@#ModuleIndex |
ULONG |
Nomor modul. Modul dijumlahkan secara berturut-turut, dimulai dengan nol. |
@#ModuleName |
string |
Nama modul. Nama ini biasanya merupakan nama file tanpa ekstensi nama file. Dalam beberapa situasi, nama modul berbeda secara signifikan dari nama file. |
@#ImageName |
string |
Nama file yang dapat dieksekusi, termasuk ekstensi nama file. Biasanya, jalur lengkap disertakan dalam mode pengguna tetapi tidak dalam mode kernel. |
@#LoadedImageName |
string |
Kecuali simbol Microsoft CodeView ada, alias ini sama dengan nama gambar. |
@#MappedImageName |
string |
Dalam kebanyakan situasi, alias ini adalah NULL. Jika debugger memetakan file gambar (misalnya, selama debugging minidump), alias ini adalah nama gambar yang dipetakan. |
@#SymbolFileName |
string |
Jalur dan nama file simbol. Jika Anda belum memuat simbol apa pun, alias ini adalah nama file yang dapat dieksekusi sebagai gantinya. |
@#ModuleNameSize |
ULONG |
Panjang string string nama modul, ditambah satu. |
@#ImageNameSize |
ULONG |
Panjang string string nama gambar, ditambah satu. |
@#LoadedImageNameSize |
ULONG |
Panjang string dari string nama gambar yang dimuat, ditambah satu. |
@#MappedImageNameSize |
ULONG |
Panjang string string nama gambar yang dipetakan, ditambah satu. |
@#SymbolFileNameSize |
ULONG |
Panjang string string nama file simbol, ditambah satu. |
@#Base |
ULONG64 |
Alamat awal gambar. |
@#Size |
ULONG |
Ukuran gambar, dalam byte. |
@#End |
ULONG64 |
Alamat akhir gambar. |
@#TimeDateStamp |
ULONG |
Stempel waktu dan tanggal gambar. Jika Anda ingin memperluas tanda waktu dan tanggal ini ke dalam tanggal yang dapat dibaca, gunakan perintah .formats (Show Number Formats ). |
@#Checksum |
ULONG |
Checksum modul. |
@#Flags |
ULONG |
Bendera modul. Untuk daftar nilai DEBUG_MODULE_Xxx , lihat Dbgeng.h. |
@#SymbolType |
USHORT |
Jenis simbol. Untuk daftar nilai DEBUG_SYMTYPE_Xxx , lihat Dbgeng.h. |
Alias ini semua diganti sebelum CommandString dijalankan untuk setiap modul dan sebelum penguraian lainnya terjadi. Alias ini peka huruf besar/kecil. Anda harus menambahkan spasi sebelum alias dan spasi setelahnya, bahkan jika alias diapit dalam tanda kurung. Jika Anda menggunakan sintaks ekspresi C++, Anda harus mereferensikan alias ini sebagai @@( @#alias).
Alias ini hanya tersedia selama masa pakai panggilan ke !for_each_module. Jangan bingung dengan pseudo-registers, alias nama tetap, atau alias bernama pengguna.
-?
Menampilkan beberapa teks Bantuan untuk ekstensi ini di jendela Perintah Debugger.
DLL
Ext.dll
Informasi Tambahan
Untuk informasi selengkapnya tentang cara menentukan dan menggunakan alias sebagai pintasan untuk memasukkan string karakter (termasuk penggunaan token ${ }), lihat Menggunakan Alias.
Keterangan
Jika Anda tidak menentukan argumen apa pun, ekstensi !for_each_module menampilkan informasi umum tentang modul yang dimuat. Informasi ini mirip dengan informasi yang diperlihatkan perintah berikut.
!for_each_module .echo @#ModuleIndex : @#Base @#End @#ModuleName @#ImageName @#LoadedImageName
Untuk informasi selengkapnya tentang modul yang dimuat dan dibongkar, gunakan perintah lm (Modul Yang Dimuat Daftar).
Jika Anda mengaktifkan output debugger verbose, debugger menampilkan jumlah total modul yang dimuat dan dibongkar saat ekstensi dipanggil, dan debugger menampilkan informasi terperinci tentang setiap modul (termasuk nilai setiap alias yang tersedia) sebelum CommandString dijalankan untuk modul tersebut.
Contoh berikut menunjukkan cara menggunakan ekstensi !for_each_module . Perintah berikut menampilkan bendera debug global.
!for_each_module x ${@#ModuleName}!*Debug*Flag*
!for_each_module x ${@#ModuleName}!g*Debug*
Perintah berikut memeriksa kerusakan biner di setiap modul yang dimuat, dengan menggunakan ekstensi !chkimg:
!for_each_module !chkimg @#ModuleName
Perintah berikut mencari pola "MZ" di setiap gambar yang dimuat.
!for_each_module s-a @#Base @#End "MZ"
Contoh berikut menunjukkan penggunaan @#FileVersion dan @#ProductVersion untuk setiap nama modul:
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