Bagikan melalui


Fungsi DebugActiveProcess (debugapi.h)

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

Lihat juga

CREATE_PROCESS_DEBUG_INFO

CREATE_THREAD_DEBUG_INFO

CreateProcess

DebugActiveProcessStop

Fungsi Debugging

Men-debug Proses yang Sedang Berjalan

WaitForDebugEvent