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