DebugActiveProcess

【勇芳软件工作室】汉化HomePreviousNext

DebugActiveProcess函数允许调试器附加到活动进程,然后进行调试。

BOOL DebugActiveProcess(

DWORD 【dwProcessId】//要调试的进程
); 

参数

【dwProcessId】

指定要调试的进程的标识符。调试器可以调试对进程的访问,就像使用DEBUG_ONLY_THIS_PROCESS标志创建进程一样。

返回值

如果函数成功,返回值不为零。

如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.

备注

调试器必须具有对目标进程的适当访问权限;它必须能够打开PROCESS_ALL_ACCESS访问的进程。在Windows 95的Win32应用程序编程接口(API)中,如果进程标识符有效,则始终为true。但是,在Windows NT的Win32 API中,如果使用拒绝调试器进行适当访问的安全描述符创建目标进程,则DebugActiveProcess可能会失败。

系统检查进程标识符并确定正在进行有效的调试附件后,该函数返回TRUE。然后调试器将通过使用WaitForDebugEvent功能来等待调试事件。系统暂停进程中的所有线程,并发送代表进程当前状态的调试器事件。

系统将调试器发送一个CREATE_PROCESS_DEBUG_EVENT调试事件,表示由【dwProcessId】参数指定的进程。CREATE_PROCESS_DEBUG_INFO结构的lpStartAddress成员为NULL。

对于当前部分进程的每个线程,系统会发送一个CREATE_THREAD_DEBUG_EVENT调试事件。CREATE_THREAD_DEBUG_INFO结构的lpStartAddress成员为NULL。

对于当前加载到目标进程的地址空间的每个动态链接库(DLL),系统会发送一个LOAD_DLL_DEBUG_EVENT调试事件。该系统在进程中安排第一个线程,以便在恢复后执行断点指令。继续这个线程使它返回到调试器附加之前它正在做的任何事情。

完成所有这些操作后,系统将恢复进程中的所有线程。当进程中的第一个线程恢复时,它执行断点指令,导致将EXCEPTION_DEBUG_EVENT调试事件发送到调试器。所有未来的调试事件都将通过使用正常的机制和规则发送到调试器。

也可以看看

CreateProcess, CREATE_PROCESS_DEBUG_INFO, CREATE_THREAD_DEBUG_INFO, WaitForDebugEvent