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.
Memungkinkan debugger untuk melampirkan ke proses aktif dan men-debugnya.
Sintaks
BOOL DebugActiveProcess(
[in] DWORD dwProcessId
);
Parameter
[in] dwProcessId
Pengidentifikasi untuk proses yang akan di-debug. Debugger diberikan akses debugging ke proses seolah-olah membuat proses dengan bendera DEBUG_ONLY_THIS_PROCESS . Untuk informasi selengkapnya, lihat bagian Keterangan dari topik ini.
Mengembalikan nilai
Jika fungsi berhasil, nilai yang dikembalikan bukan nol.
Jika fungsi gagal, nilai yang dikembalikan adalah 0 (nol). Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Keterangan
Untuk berhenti men-debug proses, Anda harus keluar dari proses atau memanggil fungsi DebugActiveProcessStop . Keluar dari debugger juga keluar dari proses kecuali Anda menggunakan fungsi DebugSetProcessKillOnExit .
Debugger harus memiliki akses yang sesuai ke proses target, dan harus dapat membuka proses untuk PROCESS_ALL_ACCESS. DebugActiveProcess dapat gagal jika proses target dibuat dengan deskriptor keamanan yang memberikan debugger apa pun yang kurang dari akses penuh. Jika proses penelusuran kesalahan memiliki hak istimewa SE_DEBUG_NAME diberikan dan diaktifkan, proses ini dapat men-debug proses apa pun.
Setelah sistem memeriksa pengidentifikasi proses dan menentukan bahwa lampiran debugging yang valid sedang dibuat, fungsi mengembalikan TRUE. Kemudian debugger diharapkan menunggu peristiwa penelusuran kesalahan dengan menggunakan fungsi WaitForDebugEvent . Sistem menangguhkan semua utas dalam proses, dan mengirim peristiwa debugger yang mewakili status proses saat ini.
Sistem mengirimkan debugger satu peristiwa penelusuran kesalahan CREATE_PROCESS_DEBUG_EVENT yang mewakili proses yang ditentukan oleh parameter dwProcessId . Anggota lpStartAddress dari struktur CREATE_PROCESS_DEBUG_INFO adalah NULL.
Untuk setiap utas yang saat ini merupakan bagian dari proses, sistem mengirimkan peristiwa penelusuran kesalahan CREATE_THREAD_DEBUG_EVENT . Anggota lpStartAddress dari struktur CREATE_THREAD_DEBUG_INFO adalah NULL.
Untuk setiap pustaka tautan dinamis (DLL) yang saat ini dimuat ke ruang alamat proses target, sistem mengirimkan peristiwa penelusuran kesalahan LOAD_DLL_DEBUG_EVENT . Sistem mengatur utas pertama dalam proses untuk menjalankan instruksi titik henti setelah dilanjutkan. Melanjutkan utas ini menyebabkannya kembali melakukan hal yang sama seperti sebelum debugger terpasang.
Setelah semua ini selesai, sistem melanjutkan semua utas dalam proses. Ketika utas pertama dalam proses dilanjutkan, alur menjalankan instruksi titik henti yang menyebabkan peristiwa penelusuran kesalahan EXCEPTION_DEBUG_EVENT dikirim ke debugger. Semua peristiwa penelusuran kesalahan di masa mendatang dikirim ke debugger dengan menggunakan mekanisme dan aturan normal.
Persyaratan
| Persyaratan | Nilai |
|---|---|
| Klien minimum yang didukung | Windows XP [hanya aplikasi desktop] |
| Server minimum yang didukung | Windows Server 2003 [hanya aplikasi desktop] |
| Target Platform | Windows |
| Header | debugapi.h (termasuk Windows.h) |
| Pustaka | Kernel32.lib |
| DLL | Kernel32.dll |