Compartilhar via


Tipos de eventos aceitos

Atualmente, a depuração do Visual Studio suporta os seguintes tipos de evento:

  • Eventos assíncronos

    Notifique o SDM (gerenciador de depuração de sessão) e o IDE de que o estado do aplicativo que está sendo depurado está sendo alterado. Esses eventos são processados conforme a conveniência do SDM e do IDE. Nenhuma resposta é enviada ao DE (mecanismo de depuração) depois que o evento é processado. As interfaces IDebugOutputStringEvent2 e IDebugMessageEvent2 são exemplos de eventos assíncronos.

  • Eventos síncronos

    Notifique o SDM e o IDE de que o estado do aplicativo que está sendo depurado está sendo alterado. A única diferença entre esses eventos e eventos assíncronos é que uma resposta é enviada por meio do método ContinueFromSynchronousEvent .

    Enviar um evento síncrono será útil se você precisar do DE para continuar o processamento após o IDE receber e processar o evento.

  • Eventos de parada síncrona ou eventos de parada

    Notifique o SDM e o IDE de que o aplicativo que está sendo depurado parou de executar o código. Quando você envia um evento de parada por meio do evento de método, o parâmetro IDebugThread2 é necessário. Os eventos de interrupção são continuados por uma chamada para um dos seguintes métodos:

    Observação

    Não há suporte para eventos de parada assíncrona. É um erro enviar um evento assíncrono de parada.

Discussão

A implementação real de eventos depende do design de seu DE. O tipo de cada evento enviado é determinado por seus atributos, que são definidos quando você projeta o DE. Por exemplo, um DE pode enviar um IDebugProgramCreateEvent2 como um evento assíncrono, enquanto outro pode enviá-lo como um evento de parada.

A tabela a seguir especifica quais parâmetros de programa e thread são necessários para quais eventos, bem como tipos de evento. Qualquer evento pode ser síncrono. Nenhum evento precisa ser síncrono.

Observação

A interface IDebugEngine2 é necessária para todos os eventos.

Event IDebugProgram2 IDebugThread2 Parando eventos
IDebugActivateDocumentEvent2 Permitido, mas não necessário Permitido, mas não necessário Não
IDebugBreakEvent2 Obrigatório Obrigatório Yes
IDebugBreakpointBoundEvent2 Permitido, mas não necessário Permitido, mas não necessário Não
IDebugBreakpointErrorEvent2 Permitido, mas não necessário Permitido, mas não necessário Não
IDebugBreakpointUnboundEvent2 Permitido, mas não necessário Permitido, mas não necessário Não
IDebugBreakpointEvent2 Obrigatório Obrigatório Yes
IDebugCanStopEvent2 Obrigatório Obrigatório Não
IDebugDocumentTextEvents2 Não permitido Não permitido Não
IDebugEngineCreateEvent2 Não permitido Não permitido Não
IDebugEntryPointEvent2 Obrigatório Obrigatório Yes
IDebugErrorEvent2 Permitido, mas não necessário Permitido, mas não necessário Pode ser
IDebugExceptionEvent2 Obrigatório Obrigatório Yes
IDebugExpressionEvaluationCompleteEvent2 Permitido, mas não necessário Permitido, mas não necessário Pode ser
IDebugInterceptExceptionCompleteEvent2 Obrigatório Obrigatório Yes
IDebugLoadCompleteEvent2 Obrigatório Obrigatório Yes
IDebugMessageEvent2 Permitido, mas não necessário Permitido, mas não necessário Pode ser
IDebugModuleLoadEvent2 Obrigatório Permitido, mas não necessário Não
IDebugOutputStringEvent2 Permitido, mas não necessário Permitido, mas não necessário Não
IDebugProgramCreateEvent2 Obrigatório Permitido, mas não necessário Não
IDebugProgramDestroyEvent2 Obrigatório Permitido, mas não necessário Não
IDebugPropertyCreateEvent2 Obrigatório Permitido, mas não necessário Não
IDebugPropertyDestroyEvent2 Obrigatório Permitido, mas não necessário Não
IDebugReturnValueEvent2 Permitido, mas não necessário Permitido, mas não necessário Não
IDebugStopCompleteEvent2 Obrigatório Obrigatório Yes
IDebugStepCompleteEvent2 Obrigatório Obrigatório Yes
IDebugSymbolSearchEvent2 Permitido, mas não necessário Permitido, mas não necessário Não
IDebugThreadCreateEvent2 Obrigatório Obrigatório Não
IDebugThreadDestroyEvent2 Obrigatório Obrigatório Não
IDebugThreadNameChangedEvent2 Permitido, mas não necessário Permitido, mas não necessário Não

Consulte também