Отслеживание событий

Общие сведения о событиях в подсистеме отладчика см. в разделе События.

События, происходящие в целевом объекте или подсистеме отладчика, можно отслеживать с помощью интерфейса IDebugEventCallbacks . Объект IDebugEventCallbacks можно зарегистрировать в клиенте с помощью SetEventCallbacks. У каждого клиента может быть зарегистрирован только один объект IDebugEventCallbacks .

Когда объект IDebugEventCallbacks зарегистрирован в клиенте, подсистема вызывает IDebugEventCallbacks объекта::GetInterestMask , чтобы определить, какие события нужны объекту. В него будут отправляться только события, в которых объект заинтересован.

Для каждого типа события подсистема вызывает соответствующий метод обратного вызова в IDebugEventCallbacks. Для событий из целевого объекта значение DEBUG_STATUS_XXX , возвращаемое этими вызовами, указывает, как должно происходить выполнение целевого объекта. Подсистема собирает эти возвращаемые значения из каждого вызываемого объекта IDebugEventCallbacks и действует с одним из них с наивысшим приоритетом.

События из целевого объекта, которые по умолчанию попадают в отладчик

Следующие события попадают в отладчик по умолчанию:

  • События точки останова

  • События исключений (не описаны здесь)

  • Системная ошибка

События из целевого объекта, которые не попадают в отладчик по умолчанию

Следующие события не прерываются в отладчике по умолчанию:

  • Создание события процесса

  • Выход из события процесса

  • Создание события потока

  • Событие exit thread

  • Событие модуля загрузки

  • Событие выгрузки модуля

Внутренние изменения подсистемы

Ниже приведены не фактические события, а только внутренние изменения подсистемы:

  • Изменение целевого объекта

  • Изменение подсистемы

  • Изменение символа подсистемы

  • Изменение состояния сеанса