Método IDataModelScriptDebugClient::NotifyDebugEvent (dbgmodel.h)
Sempre que ocorrer qualquer evento que interrompa o depurador de script, o próprio código de depuração faz uma chamada para a interface por meio do método NotifyDebugEvent. Esse método é síncrono. Nenhuma execução do script será retomada até que a interface retorne do evento. A definição do depurador de script destina-se a ser simples: não há absolutamente nenhum evento aninhado que exija processamento.
Um evento de depuração é definido por um registro variante conhecido como ScriptDebugEventInformation. Quais campos nas informações de evento são válidos é definido em grande parte pelo membro DebugEvent.
Ele define o tipo de evento que ocorreu conforme descrito por um membro da enumeração ScriptDebugEvent:
Enumerante | Descrição |
---|---|
ScriptDebugBreakpoint | Indica que um ponto de interrupção foi atingido. Informações sobre o ponto de interrupção específico que foi atingido estão contidas na parte BreakpointInformation da união que contém o seguinte: • BreakpointId: o identificador exclusivo do ponto de interrupção que foi atingido. |
ScriptDebugStep | Indica que ocorreu um evento de etapa. Nenhuma informação adicional é fornecida. |
ScriptDebugException | Indica que ocorreu uma exceção. Informações sobre a exceção específica que ocorreu estão contidas na posição ExceptionInformaiton da união que contém o seguinte: • IsUncaught: indica se o ponto de interrupção é ou não uma primeira chance (false) ou uma exceção sem tratamento (true). O objeto de dados do evento é o objeto que foi lançado. |
ScriptDebugAsyncBreak | Indica que ocorreu uma quebra assíncrona no script. Isso pode ser devido a algo como "interromper na entrada" ou "interromper evento" |
Quando a interface decide como deseja proceder do evento de depuração, ela preenche o argumento resumeEventKind e retorna com êxito do método NotifyDebugEvent. A forma como o depurador prossegue depende do valor neste campo. Ele é um membro da enumeração ScriptExecutionKind definido da seguinte maneira:
Enumerante | Descrição |
---|---|
ScriptExecutionNormal | Indica que a interface gostaria que o script fosse executado normalmente até o próximo evento de depuração. Isso é o equivalente a um comando "go" em uma interface do usuário do depurador. |
ScriptExecutionStepIn | Indica que a interface deseja que o depurador de scripts entre e notifique a interface quando a etapa for concluída com êxito. Observe que outros eventos podem ocorrer nesse ínterim. Nesse caso, talvez nunca haja uma notificação de etapa. |
ScriptDebugStepOut | Indica que a interface deseja que o depurador de script saia e notifique a interface quando a saída for concluída com êxito. Observe que outros eventos podem ocorrer nesse ínterim. Nesse caso, talvez nunca haja uma notificação de etapa. |
ScriptDebugStepOver | Indica que a interface deseja que o depurador de scripts percorre e notifique a interface quando a etapa for concluída com êxito. Observe que outros eventos podem ocorrer nesse ínterim. Nesse caso, talvez nunca haja uma notificação de etapa |
Sintaxe
HRESULT NotifyDebugEvent(
ScriptDebugEventInformation *pEventInfo,
IDataModelScript *pScript,
IModelObject *pEventDataObject,
ScriptExecutionKind *resumeEventKind
);
Parâmetros
pEventInfo
Uma estrutura de dados que indica qual evento de depuração acabou de ocorrer.
pScript
O script no qual o evento ocorreu.
pEventDataObject
O objeto de dados do evento em questão. Se o evento não tiver nenhum objeto de dados, nullptr será passado. Um objeto de dados é, por exemplo, o objeto de exceção que foi gerado para uma notificação de exceção.
resumeEventKind
Uma indicação da interface para o depurador de como o depurador deve retomar a execução do código de script após o processamento do evento de depuração. Isso é retornado como um membro da enumeração ScriptExecutionKind, conforme descrito acima.
Valor de retorno
Esse método retorna HRESULT que indica êxito ou falha.
Requisitos
Requisito | Valor |
---|---|
cabeçalho | dbgmodel.h |