Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
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:
-
As interfaces IDebugBreakpointEvent2 e IDebugExceptionEvent2 são exemplos de eventos de interrupção.
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 |