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


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

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

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

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

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

Когда интерфейс решает, как он хочет перейти от события отладки, он заполняет аргумент 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