Windows Debug Api - отсоединение не работает - PullRequest
3 голосов
/ 10 марта 2011

Я запускаю цикл обработки событий в потоке, который создается при подключении к целевому процессу.Прежде чем отсоединять, я просто вызывал функцию, которая очищала бы отладку, вызывал DebugSetProcessKillOnExit и т. Д., Но получая неверные возвращаемые значения, я решил, что они должны вызываться из потока, который я создал.Итак, я сделал, ошибок сейчас нет, но целевой процесс просто завершается, когда я сам выхожу / отсоединяюсь.

В данный момент я проверяю bool в цикле событий, чтобы проверить, следует ли мне отсоединяться (какие-нибудь лучшие решения?)и затем выполните следующее:


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

return 0;

ClearHardwareBreakpoints приостанавливает целевой поток, вызывает GetThreadContext с CONTEXT_DEBUG_REGISTERS и удаляет регистры отладки с помощью SetThreadContext и возобновляет поток.

Итак, как я уже сказал,проблема в том, что отлаженный процесс также завершается с моим процессом, как если бы отсоединение не работало.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 28 августа 2011

Я обнаружил ошибку: я выходил из программы до того, как поток выполнил свою часть (отсоединение).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...