Поделиться через


Метод IDataModelScriptDebugClient::NotifyDebugEvent (dbgmodel.h)

Всякий раз, когда происходит какое-либо событие, которое врывается в отладчик скрипта, код отладки сам вызывает интерфейс с помощью метода NotifyDebugEvent. Этот метод является синхронным. Выполнение скрипта не будет возобновлено до тех пор, пока интерфейс не вернется из события. Определение отладчика скрипта должно быть простым: не существует абсолютно вложенных событий, требующих обработки.

Событие отладки определяется вариантной записью, известной как ScriptDebugEventInformation. Допустимые поля в сведениях о событии в значительной степени определяются элементом DebugEvent.

Он определяет тип события, которое произошло, как описано членом перечисления ScriptDebugEvent:

Перечисление Описание
ScriptDebugBreakpoint Указывает, что была достигнута точка останова. Сведения о конкретной точке останова, которая была достигнута, содержатся в части остановаInformation объединения, которая содержит следующее: • BreakpointId: уникальный идентификатор для точки останова, которая была достигнута.
ScriptDebugStep Указывает, что произошло событие шага. Дополнительная информация не предоставляется.
ScriptDebugException Указывает, что произошло исключение. Сведения о конкретном исключении, которое произошло, содержатся в позиции ExceptionInformaiton объединения, которая содержит следующее: • IsUncaught: указывает, является ли точка останова первым шансом (false) или необработанным исключением (true). Объект данных для события — это объект, который был создан.
ScriptDebugAsyncBreak Указывает, что произошел асинхронный разрыв скрипта. Это может быть вызвано чем-то вроде "break on entry" или "break on event"

Когда интерфейс принимает решение о том, как он хочет получить результат отладочного события, он заполняет аргумент resumeEventKind и успешно возвращается из метода NotifyDebugEvent. Порядок работы отладчика зависит от значения в этом поле. Он является членом перечисления ScriptExecutionKind, определенного следующим образом:

Перечисление Описание
ScriptExecutionNormal Указывает, что интерфейс хочет, чтобы скрипт выполнялся нормально до следующего события отладки. Это эквивалент команды go в пользовательском интерфейсе отладчика.
ScriptExecutionStepIn Указывает, что интерфейс хотел бы, чтобы отладчик скриптов выполнил вход и уведомил интерфейс об успешном завершении шага. Обратите внимание, что в промежуток времени могут произойти другие события. В этом случае уведомление о шаге может никогда не быть.
ScriptDebugStepOut Указывает, что интерфейс хотел бы, чтобы отладчик скриптов вышел и уведомил интерфейс об успешном завершении шага. Обратите внимание, что в промежуток времени могут произойти другие события. В этом случае уведомление о шаге может никогда не быть.
ScriptDebugStepOver Указывает, что интерфейс хотел бы, чтобы отладчик скриптов выполнил шаг с обходом и уведомил интерфейс об успешном завершении. Обратите внимание, что в промежуток времени могут произойти другие события. В этом случае уведомление о шаге может никогда не появиться.

Синтаксис

HRESULT NotifyDebugEvent(
  ScriptDebugEventInformation *pEventInfo,
  IDataModelScript            *pScript,
  IModelObject                *pEventDataObject,
  ScriptExecutionKind         *resumeEventKind
);

Параметры

pEventInfo

Структура данных, указывающая, какое событие отладки только что произошло.

pScript

Скрипт, в котором произошло событие.

pEventDataObject

Объект данных для рассматриваемого события. Если у события нет объекта данных, передается значение nullptr. Объект данных — это, например, объект исключения, который был создан для уведомления об исключении.

resumeEventKind

Отладчик указывает, как отладчик должен возобновить выполнение кода скрипта после обработки события отладки. Возвращается как член перечисления ScriptExecutionKind, как описано выше.

Возвращаемое значение

Этот метод возвращает HRESULT, указывающее на успех или сбой.

Требования

Требование Значение
Заголовок dbgmodel.h

См. также раздел

Интерфейс IDataModelScriptDebugClient