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.
Windows memberi setiap aplikasi mode pengguna blok alamat virtual. Ini dikenal sebagai ruang pengguna aplikasi tersebut. Blok alamat besar lainnya, yang dikenal sebagai ruang sistem atau ruang kernel, tidak dapat diakses langsung oleh aplikasi.
Ketika WinDbg atau CDB mengatur titik henti di ruang pengguna, titik henti ini diatur pada alamat yang ditentukan di ruang pengguna dari satu proses. Selama penelusuran kesalahan mode pengguna, proses saat ini menentukan arti alamat virtual. Untuk informasi selengkapnya, lihat Mengontrol Proses dan Utas.
Dalam mode kernel, Anda dapat mengatur titik henti di ruang pengguna dengan perintah bp, bu, dan ba atau dengan kotak dialog Titik Henti . Anda harus terlebih dahulu menggunakan konteks proses untuk menentukan proses mode pengguna yang memiliki ruang alamat tersebut dengan menggunakan .process /i (atau titik henti khusus proses pada beberapa fungsi ruang kernel) untuk mengalihkan target ke konteks proses yang benar.
Titik henti di ruang pengguna selalu dikaitkan dengan proses yang konteks prosesnya aktif saat titik henti diatur. Jika debugger mode pengguna men-debug proses ini dan jika debugger kernel men-debug komputer tempat proses berjalan, titik henti ini masuk ke debugger mode pengguna, meskipun titik henti sebenarnya diatur dari debugger kernel. Anda dapat memecah ke dalam sistem dari debugger kernel pada saat ini, atau menggunakan perintah .breakin (Break to the Kernel Debugger) dari debugger mode pengguna untuk mentransfer kontrol ke debugger kernel.
Menentukan Rentang Ruang Pengguna dan Ruang Sistem
Jika Anda perlu menentukan luasnya ruang pengguna dan ruang sistem pada komputer target, Anda dapat menggunakan perintah dp (Memori Tampilan) dari debugger kernel untuk menampilkan variabel global Windows MmHighestUserAddress. Variabel ini berisi alamat bagian atas ruang pengguna. Karena alamat ruang sistem selalu lebih tinggi dari alamat ruang pengguna, nilai ini memungkinkan Anda menentukan apakah alamat tertentu berada di ruang pengguna atau di ruang kernel.
Misalnya, pada komputer target 32-bit dengan prosesor x86 dan parameter boot standar, perintah ini akan menunjukkan hasil berikut:
kd> dp nt!mmhighestuseraddress L1
81f71864 7ffeffff
Ini menunjukkan bahwa ruang pengguna berkisar dari 0x00000000 alamat hingga 0x7FFEFFFF, dan oleh karena itu ruang sistem berkisar dari 0x80000000 hingga alamat setinggi mungkin (yang 0xFFFFFFFF pada penginstalan Windows standar 32-bit).
Dengan komputer target 64-bit, nilai yang berbeda akan terjadi. Misalnya, perintah ini mungkin menunjukkan hal berikut:
0: kd> dp nt!mmhighestuseraddress L1
fffff800`038b4010 000007ff`fffeffff
Ini menunjukkan bahwa ruang pengguna berkisar dari 0x00000000'00000000 hingga 0x000007FF'FFFEFFFF. Oleh karena itu, ruang sistem mencakup semua alamat dari 0x00000800'00000000 ke atas.
Untuk informasi selengkapnya tentang manajemen memori Windows, lihat Microsoft Windows Internals oleh David Solomon dan Mark Russinovich (edisi ke-4, Microsoft Press, 2005).