Baca dalam bahasa Inggris

Bagikan melalui


Men-debug Proses Mode Pengguna Menggunakan CDB

Anda dapat menggunakan CDB untuk melampirkan ke proses yang sedang berjalan atau untuk menelurkan dan melampirkan ke proses baru.

Melampirkan ke Proses yang Sedang Berjalan

Prompt Perintah

Di jendela Prompt Perintah, Anda dapat melampirkan ke proses yang sedang berjalan saat meluncurkan CDB. Gunakan salah satu perintah berikut:

  • cdb -p ProcessID
  • cdb -pn ProcessName

di mana ProcessID adalah ID Proses dari proses yang sedang berjalan atau ProcessName adalah nama proses yang sedang berjalan.

Untuk informasi selengkapnya tentang sintaks baris perintah, lihat Opsi Baris Perintah CDB.

Jendela Perintah CDB

Jika debugger sudah men-debug satu atau beberapa proses, Anda dapat melampirkan ke proses yang sedang berjalan dengan menggunakan perintah .attach (Lampirkan ke Proses).

Debugger selalu memulai beberapa proses target secara bersamaan, kecuali beberapa utas mereka dibekukan atau ditangguhkan.

Jika perintah .attach berhasil, debugger melampirkan ke proses yang ditentukan saat berikutnya debugger mengeluarkan perintah eksekusi. Jika Anda menggunakan perintah ini beberapa kali berturut-turut, eksekusi harus diminta oleh debugger sebanyak Anda menggunakan perintah ini.

Melampirkan ke Proses yang Berjalan Secara Noninvasif

Jika Anda ingin men-debug proses yang sedang berjalan dan hanya mengganggu minimal dalam eksekusinya, Anda harus men-debug proses secara noninvasif.

Prompt Perintah

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.

Jendela Perintah CDB

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

Anda dapat menggunakan perintah .attach jika debugger sudah men-debug satu atau beberapa proses secara invasif.

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.

Menelurkan Proses Baru

CDB dapat memulai aplikasi mode pengguna lalu men-debug aplikasi. Aplikasi ditentukan berdasarkan nama. Debugger juga dapat secara otomatis melekat pada proses anak (proses tambahan yang dimulai oleh proses target asli).

Proses yang dibuat debugger (juga dikenal sebagai proses yang ditelurkan) berulah sedikit berbeda dari proses yang tidak dibuat debugger.

Alih-alih menggunakan API timbunan standar, proses yang dibuat debugger menggunakan tumpukan debug khusus. Anda dapat memaksa proses yang ditelurkan untuk menggunakan timbunan standar alih-alih tumpukan debug dengan menggunakan variabel lingkungan _NO_DEBUG_HEAP atau opsi baris perintah -hd.

Selain itu, karena aplikasi target adalah proses anak dari debugger, aplikasi ini mewarisi izin debugger. Izin ini mungkin memungkinkan aplikasi target untuk melakukan tindakan tertentu yang tidak dapat dilakukan sebaliknya. Misalnya, aplikasi target mungkin dapat memengaruhi proses yang dilindungi.

Di jendela Prompt Perintah, Anda dapat menelurkan proses baru saat meluncurkan CDB. Masukkan perintah berikut.

cdb [-o] ProgramName [Argumen]

Opsi -o menyebabkan debugger dilampirkan ke proses turunan. Ada beberapa opsi baris perintah lain yang berguna. Untuk informasi selengkapnya tentang sintaks baris perintah, lihat Opsi Baris Perintah CDB.

Jika debugger sudah men-debug satu atau beberapa proses, Anda dapat membuat proses baru dengan memasukkan perintah .create (Create Process).

Debugger akan selalu memulai beberapa proses target secara bersamaan, kecuali beberapa utas mereka dibekukan atau ditangguhkan.

Jika perintah .create berhasil, debugger membuat proses yang ditentukan saat berikutnya debugger mengeluarkan perintah eksekusi. Jika Anda menggunakan perintah ini beberapa kali berturut-turut, eksekusi harus diminta oleh debugger sebanyak Anda menggunakan perintah ini.

Anda dapat mengontrol direktori awal aplikasi dengan menggunakan perintah .createdir (Atur Direktori Proses yang Dibuat) sebelum .create. Anda dapat menggunakan perintah .createdir -I atau opsi baris perintah -noinh untuk mengontrol apakah aplikasi target mewarisi handel debugger.

Anda dapat mengaktifkan atau menonaktifkan penelusuran kesalahan proses anak dengan menggunakan perintah .childdbg (Proses Anak Debug).

Memasang kembali ke Proses

Jika debugger berhenti merespons atau membeku, Anda dapat melampirkan debugger baru ke proses target. Untuk informasi selengkapnya tentang cara melampirkan debugger dalam situasi ini, lihat Memasang kembali ke Aplikasi Target.