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 melakukan debugging mode pengguna, Anda mengaktifkan, menampilkan, menghentikan sementara, melanjutkan sementara, menangguhkan, dan melanjutkan proses dan utas.
Proses saat ini atau aktif adalah proses yang saat ini sedang di-debug. Demikian pula, utas saat ini atau aktif adalah utas yang saat ini dikontrol debugger. Tindakan banyak perintah debugger ditentukan oleh identitas proses dan utas saat ini. Proses saat ini juga menentukan pemetaan alamat virtual yang digunakan debugger.
Saat debugging dimulai, proses saat ini adalah proses tempat debugger terikat atau yang menyebabkan pengecualian yang membuat debugger berhenti pada proses tersebut. Demikian pula, utas saat ini adalah utas yang sedang aktif ketika debugger terhubung ke proses atau yang menyebabkan pengecualian. Namun, Anda dapat menggunakan debugger untuk mengubah proses dan utas saat ini dan untuk membekukan atau mencairkan utas individual.
Dalam debugging mode kernel, proses dan utas tidak dikontrol oleh metode yang dijelaskan di bagian ini. Untuk informasi selengkapnya tentang bagaimana proses dan utas dimanipulasi dalam mode kernel, lihat Mengubah Konteks.
Menampilkan Proses dan Utas
Untuk menampilkan informasi proses dan utas, Anda dapat menggunakan metode berikut:
Perintah ~ (Status Utas)
(Hanya WinDbg) Jendela Proses dan Utas
Mengatur Proses dan Utas Saat Ini
Untuk mengubah proses atau utas saat ini, Anda dapat menggunakan metode berikut:
Perintah |s (Atur Proses Saat Ini)
Perintah ~s (Atur Utas Saat Ini)
(Hanya WinDbg) Jendela Proses dan Utas
Pembekuan dan Penangguhan Benang
Debugger dapat mengubah eksekusi utas dengan menangguhkan atau membekukan utas tersebut. Kedua tindakan ini memiliki efek yang agak berbeda.
Setiap utas memiliki jumlah penangguhan yang terkait dengannya. Jika jumlah ini adalah satu atau lebih besar, sistem tidak menjalankan utas. Jika jumlahnya nol atau kurang dari nol, sistem menjalankan utas jika diperlukan.
Biasanya, setiap utas memiliki jumlah penangguhan nol. Ketika debugger melekat pada proses, debugger akan menambah jumlah penangguhan dari semua utas dalam proses tersebut sebanyak satu. Jika debugger terlepas dari proses, debugger akan mengurangi semua jumlah penangguhan sebanyak satu. Ketika debugger menjalankan proses, debugger untuk sementara mengurangi jumlah penghentian sebanyak satu.
Anda dapat mengontrol jumlah utas yang ditangguhkan dari debugger dengan menggunakan metode berikut:
Perintah ~n (Suspend Thread) meningkatkan jumlah penangguhan utas yang ditentukan sebanyak satu.
Perintah ~m (Lanjutkan Utas) mengurangi jumlah penangguhan utas yang ditentukan dengan satu.
Penggunaan paling umum untuk perintah ini adalah menaikkan jumlah penangguhan utas tertentu dari satu menjadi dua. Ketika debugger menjalankan atau melepaskan dirinya dari proses, utas kemudian memiliki jumlah penangguhan satu dan tetap dalam keadaan ditangguhkan, meskipun utas lain dalam proses tersebut sedang berjalan.
Anda dapat menangguhkan thread bahkan ketika Anda melakukan penelusuran kesalahan noninvasif.
Debugger juga dapat membekukan utas. Tindakan ini mirip dengan menangguhkan utas dalam beberapa cara. Namun, "beku" hanyalah pengaturan debugger. Tidak ada dalam sistem operasi Windows yang mengenali bahwa ada yang berbeda tentang utas ini.
Secara default, semua utas tidak difrozen. Ketika debugger membuat suatu proses dijalankan, utas yang dibekukan tidak dieksekusi. Namun, jika debugger terlepas dari proses, semua utas tidak dibekukan.
Untuk membekukan dan mencairkan utas individual, Anda dapat menggunakan metode berikut:
Perintah ~f (Freeze Thread) membekukan utas yang ditentukan.
Perintah ~u (Unfreeze Thread) mengaktifkan kembali utas yang ditentukan.
Dalam peristiwa apa pun, utas yang termasuk dalam proses target tidak pernah dijalankan ketika debugger telah masuk ke target. Jumlah utas yang ditangguhkan hanya memengaruhi perilaku utas saat debugger menjalankan proses atau mencopot. Status beku memengaruhi perilaku utas hanya ketika debugger menjalankan proses.
Utas dan Proses dalam Perintah Lain
Anda dapat menambahkan penentu utas atau penentu proses sebelum berbagai perintah lainnya. Untuk informasi selengkapnya, lihat topik perintah individual.
Anda dapat menambahkan kualifikasi ~e (perintahThread-Specific) sebelum banyak perintah dan perintah ekstensi. Kualifikasi ini menyebabkan perintah dijalankan sehubungan dengan utas yang ditentukan. Kualifikasi ini sangat berguna jika Anda ingin menerapkan perintah ke lebih dari satu utas. Misalnya, perintah berikut mengulangi perintah ekstensi !gle untuk setiap utas yang sedang di-debug.
~*e !gle
Beberapa Sistem
Debugger dapat menghubungkan ke beberapa target sekaligus. Ketika proses ini menyertakan file cadangan atau menyertakan target langsung di lebih dari satu komputer, debugger mereferensikan sistem, proses, dan utas untuk setiap tindakan. Untuk informasi lebih lanjut tentang debugging jenis ini, lihat Debugging Banyak Target.