Bagikan melalui


Penelusuran Kesalahan Noninvasif (Mode Pengguna)

Jika aplikasi mode pengguna sudah berjalan, debugger dapat men-debugnya secara noninvasif. Dengan penelusuran kesalahan noninvasif, Anda tidak memiliki banyak tindakan penelusuran kesalahan. Namun, Anda dapat meminimalkan gangguan debugger dengan aplikasi target. Penelusuran kesalahan noninvasif berguna jika aplikasi target berhenti merespons.

Dalam penelusuran kesalahan noninvasif, debugger tidak benar-benar melekat pada aplikasi target. Debugger menangguhkan semua utas target dan memiliki akses ke memori target, register, dan informasi lainnya. Namun, debugger tidak dapat mengontrol target, sehingga perintah seperti g (Go) tidak berfungsi.

Jika Anda mencoba menjalankan perintah yang tidak diizinkan selama penelusuran kesalahan noninvasif, Anda menerima pesan kesalahan yang menyatakan, "Debugger tidak dilampirkan, sehingga eksekusi proses tidak dapat dipantau."

Memilih Proses untuk Debug

Anda dapat menentukan aplikasi target dengan ID proses (PID) atau nama proses.

Jika Anda menentukan aplikasi berdasarkan nama, Anda harus menggunakan nama lengkap proses, termasuk ekstensi nama file. Jika dua proses memiliki nama yang sama, Anda harus menggunakan ID proses sebagai gantinya.

Untuk informasi selengkapnya tentang cara menentukan ID proses dan nama proses, lihat Menemukan ID Proses.

Untuk informasi tentang memulai dan menghentikan sesi penelusuran kesalahan noninvasif, lihat topik berikut:

Baris Perintah CDB

Untuk men-debug proses yang berjalan secara noninvasif dari baris perintah CDB, tentukan opsi -pv, opsi -p, dan ID proses, dalam sintaks berikut.

cdb -pv -p ProcessID

Atau, untuk men-debug proses yang sedang berjalan secara noninvasif dengan menentukan nama proses, gunakan sintaks berikut sebagai gantinya.

cdb -pv -pn ProcessName

Ada beberapa opsi baris perintah lain yang berguna. Untuk informasi selengkapnya tentang sintaks baris perintah, lihat Opsi Baris Perintah CDB.

Baris Perintah WinDbg

Untuk men-debug proses yang sedang berjalan secara noninvasif dari baris perintah WinDbg, tentukan opsi -pv, opsi -p, dan ID proses, dalam sintaks berikut.

windbg -pv -p ProcessID

Atau, untuk men-debug proses yang sedang berjalan secara noninvasif dengan menentukan nama proses, gunakan sintaks berikut sebagai gantinya.

windbg -pv -pn ProcessName

Ada beberapa opsi baris perintah lain yang berguna. Untuk informasi selengkapnya tentang sintaks baris perintah, lihat Opsi Baris Perintah WinDbg.

WinDbg Menu

Ketika WinDbg dalam mode tidak aktif, Anda dapat secara noninvasif men-debug proses yang sedang berjalan dengan mengklik Lampirkan ke Proses pada menu File atau dengan menekan F6.

Saat kotak dialog Lampirkan ke Proses muncul, pilih kotak centang Noninvasif. Kemudian, pilih baris yang berisi ID proses dan nama yang Anda inginkan. (Anda juga dapat memasukkan ID proses dalam kotak ID Proses.) Terakhir, klik OK.

Jendela Perintah Debugger

Jika debugger sudah aktif, Anda dapat secara noninvasif men-debug proses yang sedang berjalan dengan menggunakan perintah .attach -v (Lampirkan ke Proses) di jendela Perintah Debugger.

Anda dapat menggunakan perintah .attach jika debugger sudah men-debug satu atau beberapa proses secara invasif. Anda dapat menggunakan perintah ini di CDB jika tidak aktif, tetapi tidak dalam WinDbg yang tidak aktif.

Jika perintah .attach -v berhasil, debugger akan men-debug proses yang ditentukan saat berikutnya debugger mengeluarkan perintah eksekusi. Karena eksekusi tidak diizinkan selama debugging noninvasif, debugger tidak dapat secara noninvasif men-debug lebih dari satu proses pada satu waktu. Pembatasan ini juga berarti bahwa menggunakan perintah .attach -v mungkin membuat sesi debugging invasif yang ada kurang berguna.

Memulai Sesi Penelusuran Kesalahan

Untuk informasi selengkapnya tentang cara memulai sesi penelusuran kesalahan, lihat Operasi Debugger.