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.
Lokasi instruksi saat ini dapat ditemukan dengan GetInstructionOffset dan GetInstructionOffset2.
Lokasi slot tumpukan prosesor saat ini dapat ditemukan dengan GetStackOffset dan GetStackOffset2.
Lokasi bingkai tumpukan untuk fungsi saat ini dapat ditemukan dengan GetFrameOffset dan GetFrameOffset2.
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.
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