다음을 통해 공유


IDataModelScriptDebugClient::NotifyDebugEvent 메서드(dbgmodel.h)

스크립트 디버거에 침입하는 이벤트가 발생할 때마다 디버그 코드 자체는 NotifyDebugEvent 메서드를 통해 인터페이스를 호출합니다. 이 메서드는 동기적이며, 인터페이스가 이벤트에서 반환될 때까지 스크립트 실행이 다시 시작되지 않습니다. 스크립트 디버거의 정의는 간단하기 위한 것입니다. 처리가 필요한 중첩된 이벤트는 전혀 없습니다.

디버그 이벤트는 ScriptDebugEventInformation이라는 변형 레코드에 의해 정의됩니다. 이벤트 정보의 유효한 필드는 주로 DebugEvent 멤버에 의해 정의됩니다.

ScriptDebugEvent 열거형의 멤버가 설명한 대로 발생한 이벤트의 종류를 정의합니다.

열거형 Description
ScriptDebugBreakpoint 중단점이 적중되었음을 나타냅니다. 적중된 특정 중단점에 대한 정보는 다음을 포함하는 공용 구조체의 BreakpointInformation 부분에 포함됩니다. • BreakpointId: 적중된 중단점에 대한 고유 식별자입니다.
ScriptDebugStep 단계 이벤트가 발생했음을 나타냅니다. 추가 정보는 제공되지 않습니다.
ScriptDebugException 예외가 발생했음을 나타냅니다. 발생한 특정 예외에 대한 정보는 다음을 포함하는 공용 구조체의 ExceptionInformaiton 위치에 포함됩니다. • IsUncaught: 중단점이 첫 번째 기회(false) 또는 처리되지 않은 예외(true)인지 여부를 나타냅니다. 이벤트의 데이터 개체는 throw된 개체입니다.
ScriptDebugAsyncBreak 스크립트에 대한 비동기 중단이 발생했음을 나타냅니다. 이는 "항목에서 중단" 또는 "이벤트 중단"으로 인해 발생할 수 있습니다.

인터페이스가 디버그 이벤트에서 진행하려는 방법을 결정하면 resumeEventKind 인수를 채우고 NotifyDebugEvent 메서드에서 성공적으로 반환됩니다. 디버거 진행 방법은 이 필드의 값에 따라 달라집니다. 다음과 같이 정의된 ScriptExecutionKind 열거형의 멤버입니다.

열거형 Description
ScriptExecutionNormal 인터페이스가 다음 디버그 이벤트까지 스크립트를 정상적으로 실행하도록 하려면 을 나타냅니다. 이는 디버거 UI의 "go" 명령과 동일합니다.
ScriptExecutionStepIn 단계가 성공적으로 완료되면 인터페이스가 스크립트 디버거를 단계별로 실행하고 인터페이스에 알리도록 하기를 나타냅니다. 다른 이벤트는 중간에 발생할 수 있습니다. 이 경우 단계 알림이 없을 수 있습니다.
ScriptDebugStepOut 단계적 실행이 성공적으로 완료되면 인터페이스에서 스크립트 디버거가 한 단계씩 실행되고 인터페이스에 알리도록 하기를 나타냅니다. 다른 이벤트는 중간에 발생할 수 있습니다. 이 경우 단계 알림이 없을 수 있습니다.
ScriptDebugStepOver 단계별 실행이 성공적으로 완료되면 인터페이스가 스크립트 디버거를 단계별로 실행하여 인터페이스에 알리도록 하기를 나타냅니다. 다른 이벤트는 중간에 발생할 수 있습니다. 이 경우 단계 알림이 없을 수 있습니다.

구문

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

매개 변수

pEventInfo

방금 발생한 디버그 이벤트를 나타내는 데이터 구조입니다.

pScript

이벤트가 발생한 스크립트입니다.

pEventDataObject

문제의 이벤트에 대한 데이터 개체입니다. 이벤트에 데이터 개체가 없으면 nullptr이 전달됩니다. 예를 들어 데이터 개체는 예외 알림에 대해 throw된 예외 개체입니다.

resumeEventKind

디버그 이벤트를 처리한 후 디버거가 스크립트 코드 실행을 다시 시작해야 하는 방법에 대한 디버거에 대한 인터페이스의 표시입니다. 이러한 항목은 위에서 설명한 대로 ScriptExecutionKind 열거형의 멤버로 반환됩니다.

반환 값

이 메서드는 성공 또는 실패를 나타내는 HRESULT를 반환합니다.

요구 사항

요구 사항
헤더 dbgmodel.h

추가 정보

IDataModelScriptDebugClient 인터페이스