Partilhar via


Tipos de evento suportados

A depuração do Visual Studio atualmente suporta o seguinte tipo de evento:

  • Eventos assíncronos

    Notifique o gerenciador de depuração de sessão (SDM) e o IDE de que o estado do aplicativo que está sendo depurado está mudando. Estes eventos são processados conforme a disponibilidade do SDM e do IDE. Nenhuma resposta é enviada para o mecanismo de depuração (DE) 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á mudando. A única diferença entre esses eventos e eventos assíncronos é que uma resposta é enviada por meio do método ContinueFromSynchronousEvent .

    O envio de um evento síncrono é útil se você precisar que seu DE continue o processamento depois que o IDE receber e processar o evento.

  • Eventos de parada síncrona ou eventos de interrupção

    Notifique o SDM e o IDE de que o aplicativo que está sendo depurado parou de executar código. Quando você envia um evento de parada por meio do método Event, o parâmetro IDebugThread2 é necessário. Os eventos de interrupção são retomados através de 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 de interrupção assíncrono.

Debate

A implementação real dos eventos depende do design do seu DE. O tipo de cada evento enviado é determinado por seus atributos, que são definidos quando você cria 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 eventos. 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 Interrompendo eventos
IDebugActivateDocumentEvent2 Permitido, mas não obrigatório Permitido, mas não obrigatório Não
IDebugBreakEvent2 Obrigatório Obrigatório Yes
IDebugBreakpointBoundEvent2 Permitido, mas não obrigatório Permitido, mas não obrigatório Não
IDebugBreakpointErrorEvent2 Permitido, mas não obrigatório Permitido, mas não obrigatório Não
IDebugBreakpointUnboundEvent2 Permitido, mas não obrigatório Permitido, mas não obrigató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 obrigatório Permitido, mas não obrigatório Pode ser
IDebugExceptionEvent2 Obrigatório Obrigatório Yes
IDebugExpressionEvaluationCompleteEvent2 Permitido, mas não obrigatório Permitido, mas não obrigatório Pode ser
IDebugInterceptExceptionCompleteEvent2 Obrigatório Obrigatório Yes
IDebugLoadCompleteEvent2 Obrigatório Obrigatório Yes
IDebugMessageEvent2 Permitido, mas não obrigatório Permitido, mas não obrigatório Pode ser
IDebugModuleLoadEvent2 Obrigatório Permitido, mas não obrigatório Não
IDebugOutputStringEvent2 Permitido, mas não obrigatório Permitido, mas não obrigatório Não
IDebugProgramCreateEvent2 Obrigatório Permitido, mas não obrigatório Não
IDebugProgramDestroyEvent2 Obrigatório Permitido, mas não obrigatório Não
IDebugPropertyCreateEvent2 Obrigatório Permitido, mas não obrigatório Não
IDebugPropertyDestroyEvent2 Obrigatório Permitido, mas não obrigatório Não
IDebugReturnValueEvent2 Permitido, mas não obrigatório Permitido, mas não obrigatório Não
IDebugStopCompleteEvent2 Obrigatório Obrigatório Yes
IDebugStepCompleteEvent2 Obrigatório Obrigatório Yes
IDebugSymbolSearchEvent2 Permitido, mas não obrigatório Permitido, mas não obrigatório Não
IDebugThreadCreateEvent2 Obrigatório Obrigatório Não
IDebugThreadDestroyEvent2 Obrigatório Obrigatório Não
IDebugThreadNameChangedEvent2 Permitido, mas não obrigatório Permitido, mas não obrigatório Não

Consulte também