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.
KD dan WinDbg mode kernel mendukung pemecahan masalah multi-prosesor. Anda dapat melakukan debugging semacam ini pada platform multiprosesor apa pun.
Prosesor diberi nomor nol hingga n.
Jika prosesor saat ini adalah prosesor 0 (yaitu, jika prosesor tersebut yang menyebabkan debugger menjadi aktif saat ini), Anda dapat memeriksa prosesor lainnya yang tidak sedang digunakan saat ini (prosesor satu hingga n). Namun, Anda tidak dapat mengubah apa pun dalam prosesor non-saat ini. Anda hanya dapat melihat statusnya.
Memilih Prosesor
Anda dapat menggunakan perintah .echocpunum (Tampilkan Nomor CPU) untuk menampilkan nomor prosesor prosesor saat ini. Output dari perintah ini memungkinkan Anda untuk segera mengetahui kapan Anda sedang bekerja pada sistem multiprosesor melalui teks pada prompt debugging kernel.
Dalam contoh berikut, 0: pada prompt kd> menunjukkan bahwa Anda melakukan debug pada prosesor yang pertama di komputer.
0: kd>
Gunakan perintah ~s (Ubah Prosesor Saat Ini) untuk beralih antar prosesor, seperti yang ditunjukkan contoh berikut.
0: kd> ~1s
1: kd>
Sekarang Anda mendebug prosesor kedua di komputer.
Anda mungkin harus mengubah prosesor pada sistem multiprosesor jika Anda mengalami kesalahan dan Anda tidak dapat memahami penelusuran tumpukan. Jeda mungkin telah terjadi pada prosesor yang berbeda.
Menentukan Prosesor di Perintah Lain
Anda dapat menambahkan nomor prosesor sebelum beberapa perintah. Angka ini tidak didahului oleh tilde (~), kecuali dalam perintah ~S .
Catatan Dalam debugging mode pengguna, tilde digunakan untuk menentukan thread. Untuk informasi selengkapnya tentang sintaks ini, lihat Sintaks utas.
ID prosesor tidak harus dirujuk secara eksplisit. Sebagai gantinya, Anda dapat menggunakan ekspresi numerik yang diselesaikan ke bilangan bulat yang sesuai dengan ID prosesor. Untuk menunjukkan bahwa ekspresi harus ditafsirkan sebagai prosesor, gunakan sintaks berikut.
||[Expression]
Dalam sintaks ini, kurung siku diperlukan, dan Ekspresi adalah singkatan dari ekspresi numerik apa pun yang diselesaikan ke bilangan bulat yang sesuai dengan ID prosesor.
Dalam contoh berikut, prosesor berubah tergantung pada nilai pseudo-register yang ditentukan pengguna.
||[@$t0]
Contoh
Contoh berikut menggunakan perintah k (Display Stack Backtrace) untuk menampilkan jejak tumpukan dari prosesor dua.
1: kd> 2k
Contoh berikut menggunakan perintah r (Registers) untuk menampilkan register eax prosesor tiga.
1: kd> 3r eax
Namun, perintah berikut memberikan kesalahan sintaks, karena Anda tidak dapat mengubah status prosesor selain prosesor saat ini.
1: kd> 3r eax=808080
Breakpoint
Selama debugging kernel, perintah bp, bu, bm (Set Breakpoint) dan ba (Break on Access) berlaku untuk semua prosesor dari beberapa komputer prosesor.
Misalnya, jika prosesor saat ini adalah tiga, Anda dapat memasukkan perintah berikut untuk meletakkan titik henti di SomeAddress.
1: kd> bp SomeAddress
Kemudian, prosesor apa pun (tidak hanya prosesor satu) yang dieksekusi pada alamat tersebut akan menyebabkan jebakan titik henti.
Menampilkan Informasi Prosesor
Anda dapat menggunakan ekstensi !running untuk menampilkan status setiap prosesor pada komputer target. Untuk setiap prosesor, !running juga dapat menampilkan bidang utas saat ini dan berikutnya dari blok kontrol proses (PRCB), status 16 spinlock antrean bawaan, dan jejak tumpukan.
Anda dapat menggunakan ekstensi !cpuinfo dan !cpuid untuk menampilkan informasi tentang prosesor itu sendiri.