Я пытаюсь создать небольшой инструмент, использующий API отладчика , но у меня очень ограниченный успех.
Я могу получить экземпляры IDebugClient и IDebugControl , и оттуда я могу подключиться к уже запущенному пользовательскому процессу. Затем я вхожу в основной цикл, где я вызываю WaitForEvent , OutputStackTrace , SetExecutionStatus (DEBUG_STATUS_GO
), и повторяю. По сути, это будет очень грубый профилировщик на основе выборки.
Хорошо, пока ..
Мой цикл выполняется за одну полную итерацию, я вижу, как отображается трассировка стека, а затем целевой процесс возвращается в рабочее состояние.
У меня проблема в том, что на 2-й итерации вызов WaitForEvent
возвращает E_HANDLE
(«Неверный дескриптор»). Я не вижу в документации, почему эта ошибка должна быть возвращена. Кто-нибудь знает, почему это может происходить?