Я запускаю цикл обработки событий в потоке, который создается при подключении к целевому процессу.Прежде чем отсоединять, я просто вызывал функцию, которая очищала бы отладку, вызывал DebugSetProcessKillOnExit и т. Д., Но получая неверные возвращаемые значения, я решил, что они должны вызываться из потока, который я создал.Итак, я сделал, ошибок сейчас нет, но целевой процесс просто завершается, когда я сам выхожу / отсоединяюсь.
В данный момент я проверяю bool в цикле событий, чтобы проверить, следует ли мне отсоединяться (какие-нибудь лучшие решения?)и затем выполните следующее:
pEng->ClearHardwareBreakpoints();
DebugSetProcessKillOnExit(FALSE);
ContinueDebugEvent(pEng->pId, pEng->tId, DBG_CONTINUE);
DebugActiveProcessStop(pEng->pId);
return 0;
ClearHardwareBreakpoints приостанавливает целевой поток, вызывает GetThreadContext с CONTEXT_DEBUG_REGISTERS и удаляет регистры отладки с помощью SetThreadContext и возобновляет поток.
Итак, как я уже сказал,проблема в том, что отлаженный процесс также завершается с моим процессом, как если бы отсоединение не работало.
Любая помощь приветствуется.