Метод 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 |