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.
Terkadang berguna untuk mengontrol debugger mode pengguna dari debugger kernel dan menggunakan debugger mode pengguna sebagai server debugging pada saat yang sama.
Penting
Ada pertimbangan keamanan penting tambahan saat menggunakan penelusuran kesalahan jarak jauh; untuk informasi selengkapnya, termasuk informasi tentang mengaktifkan mode aman, lihat Keamanan Selama Penelusuran Kesalahan Jarak Jauh dan Pertimbangan Keamanan untuk Alat Debugging Windows.
Misalnya, konfigurasi ini berguna saat simbol mode pengguna Anda terletak di server simbol. Dalam konfigurasi standar untuk mengontrol debugger mode pengguna dari debugger kernel, interaksi dua debugger dapat menyebabkan gangguan kecil dalam sinkronisasi, dan gangguan-gangguan ini dapat mencegah autentikasi server simbol. Konfigurasi yang lebih kompleks yang dijelaskan di sini dapat menghindari masalah ini.
Catatan Dalam menjelaskan skenario ini, aplikasi target mengacu pada aplikasi mode pengguna yang sedang di-debug, komputer target mengacu pada komputer yang berisi aplikasi target dan proses CDB atau NTSD, dan komputer host mengacu pada komputer yang berisi debugger kernel.
Untuk menggunakan teknik ini, Anda harus melakukan hal berikut:
Mulai NTSD atau CDB di komputer target, dengan opsi baris perintah -ddefer dan -server, menentukan opsi transportasi yang diinginkan. Opsi -server harus menjadi parameter pertama pada baris perintah.
Misalnya, Anda dapat melampirkan ke proses yang sedang berjalan dengan menggunakan sintaks berikut.
ntsd -server ServerTransport -ddefer [-y UserSymbolPath] -p PID
Atau, Anda dapat memulai proses baru sebagai target dengan menggunakan sintaks berikut.
ntsd -server ServerTransport -ddefer [-y UserSymbolPath] ApplicationName
Jika Anda menginstal ini sebagai debugger postmortem, Anda akan menggunakan sintaks berikut. Perhatikan bahwa Anda harus mengedit registri secara manual untuk menginstal debugger postmortem yang menyertakan parameter -server; untuk detailnya, lihat Mengaktifkan Postmortem Debugging.
ntsd -server ServerTransport -ddefer [-y UserSymbolPath]
Untuk informasi tentang opsi transportasi yang tersedia, lihat Mengaktifkan Server Debugging.
Mulai WinDbg atau KD di komputer host, seolah-olah Anda akan men-debug komputer target, tetapi jangan benar-benar masuk ke komputer target. Untuk menggunakan WinDbg, gunakan sintaks berikut.
windbg [-y KernelSymbolPath] [-k ConnectionOptions]
Untuk informasi lebih lanjut tentang langkah ini, lihat Live Kernel-Mode Debugging Menggunakan WinDbg (Versi Klasik)
.
Mulai WinDbg atau CDB sebagai klien penelusuran kesalahan, dengan opsi transport yang sama yang digunakan untuk memulai server. Klien penelusuran kesalahan ini dapat dijalankan pada komputer host atau di komputer ketiga.
cdb -remote ClientTransport
Untuk informasi selengkapnya tentang langkah ini, lihat Mengaktifkan Klien Debugging.
Setelah debugger berjalan dan perintah
Input>
muncul di debugger kernel, gunakan perintah .sleep (Jeda Debugger) untuk menjeda debugger dan biarkan komputer target berjalan selama beberapa detik. Ini memberikan waktu komputer target untuk memproses protokol transportasi jarak jauh, membangun koneksi antara server jarak jauh mode pengguna dan klien jarak jauh.
Jika Anda menggunakan CDB sebagai debugger dalam mode pengguna, jendela Prompt Perintah yang terkait dengan CDB akan tetap terkunci dan tidak dapat digunakan selama proses penelusuran kesalahan berlangsung. Jika Anda menggunakan NTSD, tidak ada jendela tambahan yang dibuat, meskipun NTSD memiliki ID proses yang terkait dengannya di komputer target.
Empat mode dan metode peralihan di antaranya dijelaskan dalam topik Mode Pengalihan berlaku dalam skenario kombinasi ini, dengan perbedaan berikut:
Ada dua mode debugging pengguna yang berbeda. Ketika komputer target berjalan, server debugging dikendalikan oleh klien debugging seperti dalam sesi debugging jarak jauh lainnya; ini disebut debugging mode pengguna yang dikendalikan secara jarak jauh. Ketika debugger mode kernel masuk ke komputer target dan perintah
Input>
ditunjukkan, debugger mode pengguna dikendalikan oleh debugger kernel; ini disebut debugging dalam mode pengguna yang dikontrol kernel.Kedua mode ini tidak pernah tersedia secara bersamaan. Ketika debugger kernel rusak di komputer target, meskipun debugger mode pengguna mungkin aktif, komputer target tidak dapat memproses protokol transportasi jarak jauh, dan oleh karena itu debugger mode pengguna tidak akan dapat menerima input jarak jauh di seluruh koneksi ini.
Jika simbol mode pengguna Anda terletak di server simbol, perintah debugger apa pun yang memerlukan akses simbol harus dikeluarkan saat berada dalam mode debugging mode pengguna yang dikontrol jarak jauh.
Untuk beralih dari penelusuran kesalahan mode pengguna yang dikendalikan kernel ke penelusuran kesalahan mode pengguna yang dikendalikan jarak jauh, gunakan perintah .sleep (Jeda Debugger). Ketika debugger mode pengguna bangun dari perintah tidur, debugger akan berada dalam mode debugging mode pengguna yang dikontrol jarak jauh.
Untuk beralih dari penelusuran kesalahan mode pengguna yang dikontrol jarak jauh ke penelusuran kesalahan mode kernel, masukkan perintah apa pun dari prompt
Input>
. Jika prompt ini tidak terlihat, beralihlah ke debugging mode kernel, lalu gunakan perintah g (Go) pada promptkd>
.
Secara internal, debugger mode pengguna yang dimulai dengan -ddefer memberikan prioritas pertama pada input dari klien debugging, dan prioritas kedua pada input dari debugger kernel. Namun, tidak akan pernah ada konflik antara input simultan, karena ketika debugger kernel menginterupsi komputer target, koneksi jarak jauh tidak tersedia.