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.
Saat Anda men-debug aplikasi target dalam mode pengguna atau komputer target dalam mode kernel, target dapat berjalan atau dihentikan.
Ketika debugger tersambung ke target mode kernel, debugger meninggalkan target berjalan, kecuali Anda menggunakan opsi baris perintah -b, sistem target telah berhenti merespons (yaitu, crash), atau sistem target masih dihentikan karena tindakan penelusuran kesalahan kernel sebelumnya.
Saat debugger dimulai atau terhubung ke target mode pengguna, debugger segera menghentikan target, kecuali Anda menggunakan opsi baris perintah -g . Untuk informasi selengkapnya, lihat Titik Henti Awal.
Saat Target Berjalan
Saat target berjalan, sebagian besar tindakan debugger tidak tersedia.
Jika Anda ingin menghentikan target yang sedang berjalan, Anda dapat mengeluarkan perintah Break . Perintah ini menyebabkan debugger masuk ke target. Artinya, debugger menghentikan target dan semua kontrol diberikan kepada debugger. Aplikasi mungkin tidak langsung rusak. Misalnya, jika semua utas saat ini menjalankan kode sistem, atau berada dalam operasi tunggu, aplikasi akan berhenti hanya setelah kontrol kembali ke kode aplikasi.
Jika target yang sedang berjalan mengalami pengecualian, jika peristiwa tertentu terjadi, jika titik henti tertembak, atau jika aplikasi ditutup secara normal, target akan masuk ke debugger. Tindakan ini menghentikan target dan memberikan semua kontrol kepada debugger. Pesan muncul di jendela Perintah Debugger dan menjelaskan kesalahan, peristiwa, atau titik henti.
Ketika Target Dihentikan
Untuk memulai atau mengontrol eksekusi target, Anda bisa melakukan hal berikut:
Untuk menyebabkan aplikasi mulai berjalan, terbitkan perintah Go .
Untuk menelusuri instruksi aplikasi satu per satu, gunakan perintah Step Into atau Step Over . Jika panggilan fungsi terjadi, Step Into memasuki fungsi dan terus melangkah melalui setiap instruksi. Langkah Di Atas memperlakukan panggilan fungsi sebagai satu langkah. Ketika debugger berada dalam Mode Rakitan, langkah terjadi satu instruksi komputer pada satu waktu. Saat debugger berada dalam Mode Sumber, langkah terjadi satu baris sumber pada satu waktu.
Untuk menyelesaikan fungsi saat ini dan berhenti saat pengembalian terjadi, gunakan perintah Step Out atau Trace dan Watch . Perintah Keluar berlanjut hingga fungsi saat ini berakhir. Pelacakan dan Watch berlanjut hingga fungsi saat ini berakhir dan juga menampilkan ringkasan panggilan fungsi. Namun, Anda harus mengeluarkan perintah Lacak dan Tonton pada instruksi pertama fungsi yang dimaksud.
Jika terjadi pengecualian, Anda dapat menggunakan perintah Go with Exception Handled dan Go with Exception Not Handled untuk melanjutkan eksekusi dan mengontrol status pengecualian. (Untuk informasi selengkapnya tentang pengecualian, lihat Mengontrol Pengecualian dan Peristiwa.)
(Hanya WinDbg) Jika Anda memilih garis di jendela Pembongkaran atau jendela Sumber lalu menggunakan perintah Jalankan ke Kursor , program berjalan hingga menemukan baris yang dipilih.
(Hanya Mode Pengguna) Untuk menutup aplikasi target dan memulai ulang dari awal, gunakan perintah Hidupkan ulang . Anda hanya dapat menggunakan perintah ini dengan proses yang dibuat debugger. Setelah proses dimulai ulang, proses segera masuk ke debugger.
(Hanya WinDbg) Untuk menutup aplikasi target dan menghapus debugger, gunakan perintah Hentikan Debugging . Perintah ini memungkinkan Anda untuk mulai men-debug target yang berbeda.
Formulir Perintah
Sebagian besar perintah untuk memulai atau mengontrol eksekusi target ada sebagai perintah teks, perintah menu, tombol toolbar, dan tombol pintasan. Sebagai perintah teks dasar, Anda dapat menggunakan perintah ini di CDB, KD, atau WinDbg. (Formulir teks perintah sering mendukung opsi tambahan, seperti mengubah lokasi penghitung program atau menjalankan sejumlah instruksi tetap.) Anda dapat menggunakan perintah menu, tombol toolbar, dan tombol pintasan di WinDbg.
Anda dapat menggunakan perintah dalam formulir berikut.
| Perintah | Perintah WinDbg | Kunci pintasan WinDbg | Efek |
|---|---|---|---|
Debug | Jalankan ke Kursor |
F7 CTRL + F10 |
(Hanya WinDbg) Dijalankan hingga mencapai garis yang ditandai kursor. |
|
Debug | Hentikan Penelusuran Kesalahan |
SHIFT + F5 |
Menghentikan semua penelusuran kesalahan dan menutup target. |
|
(hanya CDB/KD) CTRL+C |
Debug | Pecah |
CTRL + BREAK |
Eksekusi berhenti, dan debugger masuk ke target. |
Debug | Restart |
CTRL + SHIFT + F5 |
(Mode pengguna saja) Memulai ulang aplikasi target. |
|
Debug | Pergi |
F5 |
Target dijalankan dengan bebas. |
|
Melanjutkan eksekusi setelah titik henti bersyar. |
|||
Debug | Pengecualian Yang Ditangani |
Sama seperti g (Go), kecuali bahwa pengecualian saat ini diperlakukan seperti yang ditangani. |
||
Debug | Pengecualian Tidak Tertangani |
Sama seperti g (Go), kecuali bahwa pengecualian saat ini diperlakukan sebagai tidak tertangani. |
||
Debug | Keluar |
SHIFT + F11 |
Target dijalankan hingga fungsi saat ini selesai. |
|
Debug | Langkah Di Atas |
F10 |
Target menjalankan satu instruksi. Jika instruksi ini adalah panggilan fungsi, fungsi tersebut dijalankan sebagai satu langkah. |
|
Target dijalankan hingga mencapai alamat yang ditentukan. Semua langkah dalam fungsi ini ditampilkan (tetapi langkah-langkah dalam fungsi yang disebut tidak). |
|||
Target dijalankan hingga instruksi panggilan berikutnya. Jika instruksi saat ini adalah instruksi panggilan, panggilan ini dijalankan sepenuhnya dan eksekusi berlanjut hingga panggilan berikutnya. |
|||
Target dijalankan hingga mencapai instruksi panggilan atau instruksi pengembalian . |
|||
Target dijalankan hingga mencapai segala jenis instruksi percabangan, termasuk cabang bersyarat atau tanpa syarat, panggilan, pengembalian, dan panggilan sistem. |
|||
Target dijalankan hingga mencapai instruksi pengembalian . |
|||
Debug | Melangkah Ke |
F11 F8 |
Target menjalankan satu instruksi. Jika instruksi ini adalah panggilan fungsi, debugger akan melacak panggilan tersebut. |
|
Target dijalankan hingga mencapai alamat yang ditentukan. Semua langkah dalam fungsi ini dan fungsi yang disebut ditampilkan. |
|||
(Semua mode, kecuali mode kernel, hanya pada sistem berbasis x86) Target dijalankan hingga mencapai instruksi cabang berikutnya. |
|||
Target dijalankan hingga instruksi panggilan berikutnya. Jika instruksi saat ini adalah instruksi panggilan, instruksi ditelusuri hingga panggilan baru tercapai. |
|||
Target dijalankan hingga mencapai instruksi panggilan atau mengembalikan instruksi. Jika instruksi saat ini adalah instruksi panggilan atau instruksi pengembalian, instruksi ditelusuri hingga panggilan atau pengembalian baru tercapai. |
|||
Target dijalankan hingga mencapai segala jenis instruksi percabangan, termasuk cabang bersyarat atau tanpa syarat, panggilan, pengembalian, dan panggilan sistem. Jika instruksi saat ini adalah instruksi percabangan, instruksi ditelusuri hingga instruksi percabangan baru tercapai. |
|||
Target dijalankan hingga mencapai instruksi pengembalian . Jika instruksi saat ini adalah instruksi pengembalian, instruksi ditelusuri hingga pengembalian baru tercapai. |
|||
Target dijalankan hingga penyelesaian seluruh fungsi yang ditentukan. Statistik kemudian ditampilkan. |
Untuk informasi selengkapnya tentang cara menghidupkan ulang komputer target, lihat Crash dan Reboot Komputer Target.
Opsi Baris Perintah
Jika Anda tidak ingin aplikasi segera berhenti saat dimulai atau dimuat, gunakan CDB atau WinDbg bersama dengan opsi baris perintah -g . Untuk informasi selengkapnya tentang situasi ini, lihat Titik Henti Awal.
CDB dan WinDbg juga mendukung opsi baris perintah -G. Opsi ini menyebabkan sesi penelusuran kesalahan berakhir jika aplikasi selesai dengan benar.
Perintah berikut mencoba menjalankan aplikasi dari awal hingga akhir, dan perintah debugger hanya muncul jika terjadi kesalahan.
cdb -g -G ApplicationName
Anda dapat menggunakan opsi baris perintah -pt untuk mengatur batas waktu istirahat. Ada masalah tertentu yang dapat membuat target tidak dapat berkomunikasi dengan debugger. Jika perintah break dikeluarkan dan debugger tidak dapat masuk ke target setelah waktu ini, debugger menampilkan pesan "Break-in timed out".
Pada titik ini, debugger berhenti mencoba membobol target. Sebaliknya, debugger menjeda target dan memungkinkan Anda memeriksa (tetapi tidak mengontrol) aplikasi target.
Batas waktu default adalah 30 detik.