IDebugControl::WaitForEvent работает один раз, затем возвращает E_HANDLE

Я пытаюсь создать небольшой инструмент, использующий API-интерфейс Debugger Engine, но у меня очень ограниченный успех.

Я могу получить свои экземпляры IDebugClient и IDebugControl, и оттуда я могу подключиться к уже запущенному пользовательскому процессу. Затем я вхожу в основной цикл, где я вызываю WaitForEvent, OutputStackTrace, SetExecutionStatus(DEBUG_STATUS_GO) и повторите. По сути, это будет очень грубый профилировщик на основе выборки.

Хорошо до сих пор..

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

У меня проблема в том, что на моей второй итерации вызов WaitForEvent возвращается E_HANDLE ("Неверный дескриптор"). Я не вижу в документации, почему эта ошибка должна быть возвращена. Кто-нибудь знает, почему это может происходить?

1 ответ

Решение

Проблема оказалась в том, что я компилировал, связывал и запускал старую версию SDK. Теперь, когда я обновил свой SDK до последней версии (я полагаю, это версия, на которую ссылаются онлайн-документы), я получил поведение, которое по крайней мере согласуется с документами.

У меня все еще есть проблемы, но больше нет этой проблемы.

Другие вопросы по тегам