Partilhar via


Tipos de eventos com suporte

No momento Visual Studio de depuração suporta os seguintes tipos de eventos:

  • Eventos assíncronos

    Notificar o Gerenciador de sessão de depuração (SDM) e IDE que está alterando o estado do aplicativo que está sendo depurado. Esses eventos são processados no tempo livre do SDM e o IDE. Nenhuma resposta é enviada para o mecanismo de depuração (DE) uma vez que o evento seja processado. O IDebugOutputStringEvent2 e IDebugMessageEvent2 interfaces são exemplos de eventos assíncronos.

  • Eventos síncronos

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

    Envio de um evento síncrono é útil se você precisar seu DE continue processando depois que o IDE recebe e processa o evento.

  • Síncrono parando eventos ou interrompendo eventos

    Notifica o SDM e o IDE que o aplicativo que está sendo depurado parou a execução do código. Quando você envia um evento de parada por meio do método IDebugEventCallback2::Event, o IDebugThread2 parâmetro é obrigatório. A interrupção de eventos continuam por uma chamada para um dos seguintes métodos:

    As interfaces IDebugBreakpointEvent2 e IDebugExceptionEvent2 são exemplos de eventos de interrupção.

    Dica

    Eventos de interrupção assíncrona não são suportados.Ele é um erro para enviar um evento de interrupção assíncrono.

Discussão

A implementação real de eventos depende do design do seu DE. O tipo de cada evento enviado é determinado por seus atributos, que são definidos durante a 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 do programa e thread são necessários para a qual eventos, bem como os tipos de eventos. Qualquer evento pode ser síncrono. Nenhum evento precisa ser síncrona.

Dica

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

Evento

IDebugProgram2

IDebugThread2

Interrompendo a eventos

IDebugActivateDocumentEvent2

Permitido, mas não necessariamente

Permitido, mas não necessariamente

Não

IDebugBreakEvent2

Necessário

Necessário

Sim

IDebugBreakpointBoundEvent2

Permitido, mas não necessariamente

Permitido, mas não necessariamente

Não

IDebugBreakpointErrorEvent2

Permitido, mas não necessariamente

Permitido, mas não necessariamente

Não

IDebugBreakpointUnboundEvent2

Permitido, mas não necessariamente

Permitido, mas não necessariamente

Não

IDebugBreakpointEvent2

Necessário

Necessário

Sim

IDebugCanStopEvent2

Necessário

Necessário

Não

IDebugDocumentTextEvents2

Não permitido

Não permitido

Não

IDebugEngineCreateEvent2

Não permitido

Não permitido

Não

IDebugEntryPointEvent2

Necessário

Necessário

Sim

IDebugErrorEvent2

Permitido, mas não necessariamente

Permitido, mas não necessariamente

Pode ser

IDebugExceptionEvent2

Necessário

Necessário

Sim

IDebugExpressionEvaluationCompleteEvent2

Permitido, mas não necessariamente

Permitido, mas não necessariamente

Pode ser

IDebugInterceptExceptionCompleteEvent2

Necessário

Necessário

Sim

IDebugLoadCompleteEvent2

Necessário

Necessário

Sim

IDebugMessageEvent2

Permitido, mas não necessariamente

Permitido, mas não necessariamente

Pode ser

IDebugModuleLoadEvent2

Necessário

Permitido, mas não necessariamente

Não

IDebugOutputStringEvent2

Permitido, mas não necessariamente

Permitido, mas não necessariamente

Não

IDebugProgramCreateEvent2

Necessário

Permitido, mas não necessariamente

Não

IDebugProgramDestroyEvent2

Necessário

Permitido, mas não necessariamente

Não

IDebugPropertyCreateEvent2

Necessário

Permitido, mas não necessariamente

Não

IDebugPropertyDestroyEvent2

Necessário

Permitido, mas não necessariamente

Não

IDebugReturnValueEvent2

Permitido, mas não necessariamente

Permitido, mas não necessariamente

Não

IDebugStopCompleteEvent2

Necessário

Necessário

Sim

IDebugStepCompleteEvent2

Necessário

Necessário

Sim

IDebugSymbolSearchEvent2

Permitido, mas não necessariamente

Permitido, mas não necessariamente

Não

IDebugThreadCreateEvent2

Necessário

Necessário

Não

IDebugThreadDestroyEvent2

Necessário

Necessário

Não

IDebugThreadNameChangedEvent2

Permitido, mas não necessariamente

Permitido, mas não necessariamente

Não

Consulte também

Conceitos

Envio de eventos