Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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:
-
As interfaces IDebugBreakpointEvent2 e IDebugExceptionEvent2 são exemplos de interrupção de eventos.
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 |