C++ Windows调试Api-分离不起作用

C++ Windows调试Api-分离不起作用,c++,windows,winapi,debugging,C++,Windows,Winapi,Debugging,我正在附加到目标进程时创建的线程中运行事件循环。 在分离之前,我所做的只是调用一个函数,该函数将清除调试并调用DebugSetProcessKillOnExit等。但是得到的返回值不正确,我认为它们必须从我创建的线程中调用。所以我做到了,现在没有错误,但是当我退出/分离自己时,目标进程就会退出 目前,我在事件循环中检查bool,以检查是否应该分离(有更好的解决方案吗?),然后执行以下操作: pEng->ClearHardwareBreakpoints(); DebugSetProcessKil

我正在附加到目标进程时创建的线程中运行事件循环。 在分离之前,我所做的只是调用一个函数,该函数将清除调试并调用DebugSetProcessKillOnExit等。但是得到的返回值不正确,我认为它们必须从我创建的线程中调用。所以我做到了,现在没有错误,但是当我退出/分离自己时,目标进程就会退出

目前,我在事件循环中检查bool,以检查是否应该分离(有更好的解决方案吗?),然后执行以下操作:


pEng->ClearHardwareBreakpoints();
DebugSetProcessKillOnExit(FALSE);
ContinueDebugEvent(pEng->pId, pEng->tId, DBG_CONTINUE); 
DebugActiveProcessStop(pEng->pId);

return 0;
ClearHardwareBreakpoints挂起目标线程,使用CONTEXT_DEBUG_寄存器调用GetThreadContext,并使用SetThreadContext删除调试寄存器并恢复线程

所以,正如我所说的,问题是调试过的进程也会与我的进程一起退出,就好像分离不起作用一样


非常感谢您的帮助。

我发现了错误:在线程完成其部分(分离)之前,我正在退出程序。

将其分解为可能出现的最小问题。注释掉这些内容,然后慢慢地将它们添加回去,直到问题出现。至少这将有助于缩小范围。