Bagikan melalui


Penelusuran Kesalahan Noninvasif (Mode Pengguna)

Jika aplikasi mode pengguna sudah berjalan, debugger dapat men-debugnya secara noninvasif. Dengan debugging noninvasif, Anda tidak memiliki banyak tindakan debugging. 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 serupa 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 sedang berjalan secara noninvasif dari baris perintah CDB, tentukan opsi -pv, opsi -p, dan ID proses, dalam sintaks berikut.

cdb -pv -pProcessID

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

cdb -pv -pnProcessName

Ada beberapa opsi baris perintah lain yang berguna. Untuk informasi selengkapnya tentang sintaks baris perintah, lihat Opsi Command-Line 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.

-pv windbg -pProcessID

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

-pv windbg -pnProcessName

Ada beberapa opsi baris perintah lain yang berguna. Untuk informasi selengkapnya tentang sintaks baris perintah, lihat Opsi Command-Line 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 Debugging

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