!Alamat
Ekstensi !address menampilkan informasi tentang memori yang digunakan proses target atau komputer target.
Mode Pengguna
!address Address
!address -summary
!address [-f:F1,F2,...] {[-o:{csv | tsv | 1}] | [-c:"Command"]}
!address -? | -help
Mode Kernel
!address Address
!address
Parameter
Alamat
Hanya menampilkan wilayah ruang alamat yang berisi Alamat.
-Ringkasan
Hanya menampilkan informasi ringkasan.
-f:F1, F2, ...
Hanya menampilkan wilayah yang ditentukan oleh filter F1, F2, dan sebagainya.
Nilai filter berikut menentukan wilayah memori dengan cara proses target menggunakannya.
Nilai filter | Wilayah memori ditampilkan |
---|---|
VAR |
Wilayah sibuk. Wilayah ini mencakup semua blok alokasi virtual, tumpukan SBH, memori dari alokator kustom, dan semua wilayah lain dari ruang alamat yang tidak termasuk dalam klasifikasi lain. |
Gratis |
Memori bebas. Ini termasuk semua memori yang belum dicadangkan. |
Gambar |
Memori yang dipetakan ke file yang merupakan bagian dari gambar yang dapat dieksekusi. |
Tumpukan |
Memori yang digunakan untuk tumpukan utas. |
Teb |
Memori yang digunakan untuk blok lingkungan utas (TEB). |
Peb |
Memori yang digunakan untuk blok lingkungan proses (PEB). |
Heap |
Memori yang digunakan untuk timbunan. |
PageHeap |
Wilayah memori yang digunakan untuk timbunan halaman penuh. |
CSR |
Memori bersama CSR. |
Actx |
Memori yang digunakan untuk data konteks aktivasi. |
NLS |
Memori yang digunakan untuk tabel Dukungan Bahasa Nasional (NLS). |
FileMap |
Memori yang digunakan untuk file yang dipetakan memori. Filter ini hanya berlaku selama penelusuran kesalahan langsung. |
Nilai filter berikut menentukan wilayah memori menurut jenis memori.
Nilai filter | Wilayah memori ditampilkan |
---|---|
MEM_IMAGE |
Memori yang dipetakan ke file yang merupakan bagian dari gambar yang dapat dieksekusi. |
MEM_MAPPED |
Memori yang dipetakan ke file yang bukan bagian dari gambar yang dapat dieksekusi. Ini termasuk memori yang dipetakan ke file halaman. |
MEM_PRIVATE |
Memori privat. Memori ini tidak dibagikan oleh proses lain, dan tidak dipetakan ke file apa pun. |
Nilai filter berikut menentukan wilayah memori berdasarkan status memori.
Nilai filter | Wilayah memori ditampilkan |
---|---|
MEM_COMMIT |
Memori yang diterapkan. |
MEM_FREE |
Memori bebas. Ini termasuk semua memori yang belum dicadangkan. |
MEM_RESERVE |
Memori yang dipesan. |
Nilai filter berikut menentukan wilayah memori oleh perlindungan yang diterapkan ke memori.
Nilai filter | Wilayah memori ditampilkan |
---|---|
PAGE_NOACCESS |
Memori yang tidak dapat diakses. |
PAGE_READONLY |
Memori yang dapat dibaca, tetapi tidak dapat ditulis dan tidak dapat dieksekusi. |
PAGE_READWRITE |
Memori yang dapat dibaca dan dapat ditulis, tetapi tidak dapat dieksekusi. |
PAGE_WRITECOPY |
Memori yang memiliki perilaku copy-on-write. |
PAGE_EXECUTE |
Memori yang dapat dieksekusi, tetapi tidak dapat dibaca dan tidak dapat ditulis. |
PAGE_EXECUTE_READ |
Memori yang dapat dieksekusi dan dapat dibaca, tetapi tidak dapat ditulis. |
PAGE_EXECUTE_READWRITE |
Memori yang dapat dieksekusi, dapat dibaca, dan dapat ditulis. |
PAGE_EXECUTE_WRITECOPY |
Memori yang dapat dieksekusi dan memiliki perilaku copy-on-write. |
PAGE_GUARD |
Memori yang bertindak sebagai halaman penjaga. |
PAGE_NOCACHE |
Memori yang tidak di-cache. |
PAGE_WRITECOMBINE |
Memori yang mengaktifkan akses write-combine. |
-o:{csv | tsv | 1}
Menampilkan output sesuai dengan salah satu opsi berikut.
Opsi | Format output |
---|---|
CSV |
Menampilkan output sebagai nilai yang dipisahkan koma. |
Tsv |
Menampilkan output sebagai nilai yang dipisahkan tab. |
1 |
Menampilkan output dalam format kosong. Format ini berfungsi dengan baik ketika !address digunakan sebagai input ke .foreach. |
-c:"Command"
Menjalankan perintah kustom untuk setiap wilayah memori. Anda dapat menggunakan tempat penampung berikut dalam perintah Anda untuk mewakili bidang output ekstensi !address .
Placeholder | Bidang output |
---|---|
%1 |
Alamat dasar |
%2 |
Alamat akhir + 1 |
%3 |
Ukuran wilayah |
4% |
Jenis |
5% |
Status |
6% |
Proteksi |
7% |
Penggunaan |
Misalnya, !address -f:Heap -c:".echo %1 %3 %5"
menampilkan alamat dasar, ukuran, dan status untuk setiap wilayah memori jenis Heap.
Tanda kutip dalam perintah harus didahului dengan garis miring terbalik (\"). Misalnya, !address -f:Heap -c:"s -a %1 %2 \"pad\"" mencari setiap wilayah memori jenis Heap untuk string "pad".
Beberapa perintah yang dipisahkan oleh titik koma tidak didukung.
-?
Menampilkan teks Bantuan minimal untuk ekstensi ini di jendela Perintah Debugger.
DLL
Ext.dll
Informasi Tambahan
Untuk informasi selengkapnya tentang cara menampilkan dan mencari memori, lihat Membaca dan Menulis Memori. Untuk ekstensi tambahan yang menampilkan properti memori, lihat !vm (mode kernel) dan !vprot (mode pengguna).
Keterangan
Tanpa parameter apa pun, ekstensi !address menampilkan informasi tentang seluruh ruang alamat. Perintah !address -summary hanya memperlihatkan ringkasan.
Dalam mode kernel, ekstensi ini hanya mencari memori kernel, bahkan jika Anda menggunakan .process (Atur Konteks Proses) untuk menentukan ruang alamat virtual proses tertentu. Dalam mode pengguna, ekstensi !address selalu mengacu pada memori yang dimiliki proses target.
Dalam mode pengguna, Alamat !addressmenunjukkan karakteristik wilayah tempat alamat yang ditentukan berada. Tanpa parameter, !address menunjukkan karakteristik semua wilayah memori. Karakteristik ini termasuk penggunaan memori, jenis memori, status memori, dan perlindungan memori. Untuk informasi selengkapnya tentang arti informasi ini, lihat tabel sebelumnya dalam deskripsi parameter -f .
Contoh berikut menggunakan !address untuk mengambil informasi tentang wilayah memori yang dipetakan ke kernel32.dll.
0:000> !address 75831234
Usage: Image
Base Address: 75831000
End Address: 758f6000
Region Size: 000c5000
Type: 01000000MEM_IMAGE
State: 00001000MEM_COMMIT
Protect: 00000020PAGE_EXECUTE_READ
More info: lmv m kernel32
More info: !lmi kernel32
More info: ln 0x75831234
Contoh ini menggunakan nilai Alamat 0x75831234. Tampilan menunjukkan bahwa alamat ini berada di wilayah memori yang dimulai dengan alamat 0x75831000 dan diakhapi dengan alamat 0x758f6000. Wilayah ini memiliki gambar penggunaan, jenis MEM_IMAGE, MEM_COMMIT status, dan PAGE_EXECUTE_READ perlindungan. (Untuk informasi selengkapnya tentang arti nilai-nilai ini, lihat tabel sebelumnya.) Tampilan ini juga mencantumkan tiga perintah debugger lain yang dapat Anda gunakan untuk mendapatkan informasi selengkapnya tentang alamat memori ini.
Jika Anda memulai dengan alamat dan mencoba menentukan informasi tentang hal itu, informasi penggunaan sering kali merupakan yang paling berharga. Setelah Mengetahui penggunaannya, Anda dapat menggunakan ekstensi tambahan untuk mempelajari selengkapnya tentang memori ini. Misalnya, jika penggunaannya adalah Heap, Anda dapat menggunakan ekstensi !heap untuk mempelajari lebih lanjut.
Contoh berikut menggunakan perintah s (Search Memory) untuk mencari setiap wilayah memori jenis Gambar untuk string karakter lebar "Catatan".
!address /f:Image /c:"s -u %1 %2 \"Note\""
*** Executing: s -u 0xab0000 0xab1000 "Note"
*** Executing: s -u 0xab1000 0xabc000 "Note"
00ab2936 004e 006f 0074 0065 0070 0061 0064 0000 N.o.t.e.p.a.d...
00ab2f86 004e 006f 0074 0065 0070 0061 0064 005c N.o.t.e.p.a.d.\.
00ab32e4 004e 006f 0074 0065 0070 0061 0064 0000 N.o.t.e.p.a.d...
*** Executing: s -u 0xabc000 0xabd000 "Note"
. . .
Dalam mode kernel, output ! address mirip dengan output mode pengguna tetapi berisi lebih sedikit informasi. Contoh berikut menunjukkan output mode kernel.
kd> !address
804de000 - 00235000
Usage KernelSpaceUsageImage
ImageName ntoskrnl.exe
80c00000 - 001e1000
Usage KernelSpaceUsagePFNDatabase
....
f85b0000 - 00004000
Usage KernelSpaceUsageKernelStack
KernelStack 817b4da0 : 324.368
f880d000 - 073d3000
Usage KernelSpaceUsageNonPagedPoolExpansion
Arti "penggunaan" sama seperti dalam mode pengguna. "ImageName" menunjukkan modul yang terkait dengan alamat ini. "KernelStack" menunjukkan alamat blok ETHREAD utas ini (0x817B4DA0), ID proses (0x324), dan ID utas (0x368).
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk