Bagikan melalui


.context (Atur Konteks Alamat Mode Pengguna)

Perintah .context menentukan direktori halaman proses mana yang akan digunakan untuk konteks alamat mode pengguna, atau menampilkan konteks alamat mode pengguna saat ini.

.context [PageDirectoryBase]

Parameter

PageDirectoryBase
Menentukan alamat dasar untuk direktori halaman dari proses yang diinginkan. Konteks alamat mode pengguna akan diatur ke direktori halaman ini. Jika PageDirectoryBase nol, konteks alamat mode pengguna akan diatur ke direktori halaman untuk status sistem saat ini. Jika PageDirectoryBase dihilangkan, konteks alamat mode pengguna saat ini ditampilkan.

Lingkungan

Item Deskripsi
Mode mode kernel saja
Target live, crash dump
Platform all

Informasi Tambahan

Untuk informasi selengkapnya tentang konteks alamat mode pengguna dan pengaturan konteks lainnya, lihat Mengubah Konteks.

Keterangan

Umumnya, ketika Anda melakukan penelusuran kesalahan kernel, satu-satunya ruang alamat mode pengguna yang terlihat adalah yang terkait dengan proses saat ini.

Perintah .context menginstruksikan debugger kernel untuk menggunakan direktori halaman yang ditentukan sebagai konteks alamat mode pengguna. Setelah perintah ini dijalankan, debugger akan memiliki akses ke ruang alamat virtual ini. Tabel halaman untuk ruang alamat ini akan digunakan untuk menginterpretasikan semua alamat memori mode pengguna. Ini memungkinkan Anda untuk membaca dan menulis ke memori ini.

Perintah .process (Atur Konteks Proses) memiliki efek yang sama. Namun, perintah .context mengatur konteks alamat mode pengguna ke direktori halaman tertentu, sementara perintah .process mengatur konteks proses ke proses tertentu. Pada prosesor x86, kedua perintah ini pada dasarnya memiliki efek yang sama. Lihat Konteks Proses untuk detail selengkapnya.

Jika Anda melakukan penelusuran kesalahan langsung, Anda harus mengeluarkan perintah .cache forcedecodeuser selain perintah .context. Ini memaksa debugger untuk mencari alamat fisik ruang memori yang diperlukan. (Ini bisa lambat, karena sering berarti sejumlah besar data harus ditransfer di seluruh kabel debug.)

Jika Anda melakukan debugging crash dump, perintah .cache tidak diperlukan. Namun, Anda tidak akan memiliki akses ke bagian mana pun dari ruang alamat virtual dari proses mode pengguna yang di-paged ke disk ketika crash terjadi.

Berikut adalah contohnya. Gunakan ekstensi !process untuk menemukan basis direktori untuk proses yang diinginkan:

kd> !process 0 0
**** NT ACTIVE PROCESS DUMP ****
PROCESS fe5039e0  SessionId: 0  Cid: 0008    Peb: 00000000  ParentCid: 0000
    DirBase: 00030000  ObjectTable: fe529b68  TableSize:  50.
    Image: System

...

PROCESS fe3c0d60  SessionId: 0  Cid: 0208    Peb: 7ffdf000  ParentCid: 00d4
 DirBase: 0011f000  ObjectTable: fe3d0f48  TableSize:  30.
    Image: regsvc.exe

Sekarang gunakan perintah .context dengan basis direktori halaman ini.

kd> .context 0011f000

Ini memungkinkan Anda memeriksa ruang alamat dengan berbagai cara. Misalnya, berikut adalah output dari ekstensi !peb :

kd> !peb
PEB at 7FFDF000
    InheritedAddressSpace:    No
    ReadImageFileExecOptions: No
    BeingDebugged:            No
    ImageBaseAddress:         01000000
    Ldr.Initialized: Yes
    Ldr.InInitializationOrderModuleList: 71f40 . 77f68
    Ldr.InLoadOrderModuleList: 71ec0 . 77f58
    Ldr.InMemoryOrderModuleList: 71ec8 . 77f60
        01000000 C:\WINNT\system32\regsvc.exe
        77F80000 C:\WINNT\System32\ntdll.dll
        77DB0000 C:\WINNT\system32\ADVAPI32.dll
        77E80000 C:\WINNT\system32\KERNEL32.DLL
        77D40000 C:\WINNT\system32\RPCRT4.DLL
        77BE0000 C:\WINNT\system32\secur32.dll
    SubSystemData:     0
    ProcessHeap:       70000
    ProcessParameters: 20000
        WindowTitle: "'C:\WINNT\system32\regsvc.exe'"
        ImageFile:    'C:\WINNT\system32\regsvc.exe'
        CommandLine:  'C:\WINNT\system32\regsvc.exe'
        DllPath:     'C:\WINNT\system32;.;C:\WINNT\System32;C:\WINNT\system;C:\WINNT;C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;C:\PROGRA~1\COMMON~1\AUTODE~1'
        Environment:  0x10000