Sintaks Multiproscessor

KD dan WinDbg mode kernel mendukung beberapa debugging prosesor. Anda dapat melakukan penelusuran kesalahan semacam ini pada platform multiproscessor apa pun.

Prosesor diberi nomor nol hingga n.

Jika prosesor saat ini adalah prosesor 0 (yaitu, jika prosesor yang saat ini menyebabkan debugger aktif), Anda dapat memeriksa prosesor non-saat ini lainnya (prosesor satu sampai n). Namun, Anda tidak dapat mengubah apa pun di prosesor yang tidak ada 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 bekerja pada beberapa sistem prosesor oleh teks dalam perintah penelusuran kesalahan kernel.

Dalam contoh berikut, 0: di depan prompt kd> menunjukkan bahwa Anda men-debug prosesor 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 men-debug prosesor kedua di komputer.

Anda mungkin harus mengubah prosesor pada sistem multiprosesor jika Mengalami jeda dan Anda tidak dapat memahami jejak tumpukan. Jeda mungkin terjadi pada prosesor yang berbeda.

Menentukan Prosesor dalam Perintah Lain

Anda dapat menambahkan nomor prosesor sebelum beberapa perintah. Angka ini tidak didahului oleh tilde (~), kecuali dalam perintah ~S .

Catatan Dalam penelusuran kesalahan mode pengguna, tilde digunakan untuk menentukan utas. 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, tanda 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 

Titik Henti

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 menempatkan titik henti di SomeAddress.

1: kd> bp SomeAddress 

Kemudian, prosesor apa pun (tidak hanya prosesor satu) yang dijalankan di alamat tersebut 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.