Register

Mesin debugger dapat digunakan untuk memeriksa dan mengubah register target.

Register yang tersedia pada target bergantung pada arsitektur prosesornya. Untuk deskripsi register untuk prosesor x86, lihat Arsitektur Prosesor. Untuk deskripsi lengkap tentang register yang tersedia untuk prosesor, lihat dokumentasi prosesor tersebut.

The Register Set

Metode GetNumberRegisters dapat digunakan untuk menemukan jumlah register pada target.

Setiap register disebut oleh indeksnya. Indeks register pertama adalah nol, dan indeks register terakhir adalah jumlah register dikurangi satu. Untuk menemukan indeks register yang namanya diketahui, gunakan GetIndexByName.

Metode GetDescription mengembalikan informasi tentang register. Ini termasuk nama register, jenis nilai yang dapat disimpannya, dan apakah itu adalah subregister.

Subregister adalah register yang terkandung dalam register lain. Ketika subregister berubah, register yang berisinya juga berubah. Misalnya, pada prosesor x86, subregister ax sama dengan 16 bit rendah dari register eax 32-bit.

Ada tiga register khusus yang nilainya dapat ditemukan dengan menggunakan metode berikut. Interpretasi nilai register ini tergantung pada platform.

Memanipulasi Register

Nilai register dapat dibaca dengan menggunakan metode GetValue. Beberapa register dapat dibaca dengan menggunakan GetValues dan GetValues2.

Nilai dapat ditulis ke register dengan menggunakan metode SetValue. Beberapa register dapat ditulis dengan menggunakan SetValues dan SetValues2.

Saat menulis nilai ke register, jika nilai yang disediakan memiliki jenis yang berbeda dengan jenis register maka nilai dikonversi menjadi jenis register. Konversi ini sama dengan yang dilakukan oleh metode CoerceValue. Konversi ini dapat mengakibatkan kehilangan data jika jenis register tidak mampu menahan nilai yang disediakan.

Pseudo-Registers

Pseudo-registers adalah variabel yang dikelola oleh mesin debugger yang menyimpan nilai tertentu, misalnya, $teb adalah nama pseudo-register yang nilainya adalah alamat Dari Thread Environment Block (TEB) utas saat ini. Untuk informasi selengkapnya, dan daftar pseudo-registers, lihat Sintaks Pseudo-Register.

Setiap pseudo-register memiliki indeks. Indeks adalah angka antara nol dan jumlah pseudo-registers - (dikembalikan oleh GetNumberPseudoRegisters) dikurangi satu. Untuk menemukan indeks pseudo-register dengan namanya, gunakan GetPseudoIndexByName. Nilai pseudo-registers dapat dibaca menggunakan GetPseudoValues, dan nilai dapat ditulis ke pseudo-registers menggunakan SetPseudoValues. Untuk deskripsi pseudo-register, termasuk jenisnya, gunakan GetPseudoDescription.

Catatan Tidak semua pseudo-register tersedia di semua sesi debugging atau setiap saat dalam sesi tertentu.

Menampilkan Daftar

Metode OutputRegisters dan OutputRegisters2 memformat register target dan mengirimkannya ke klien sebagai output.

Kejadian

Setiap kali nilai register target berubah, mesin akan memanggil metode panggilan balik IDebugEventCallbacks::ChangeDebuggeeState dengan parameter Flags diatur ke DEBUG_CDS_REGISTERS.