Compartir a través de


Tipos de evento admitidos

Actualmente, la depuración de Visual Studio admite los siguientes tipos de eventos:

  • Eventos asincrónicos

    Notifican al administrador de depuración de sesión (SDM) y al IDE que el estado de la aplicación que se está depurando está cambiando. Estos eventos se procesan a discreción del SDM y del IDE. No se envía ninguna respuesta al motor de depuración (DE) una vez procesado el evento. Las interfaces IDebugOutputStringEvent2 e IDebugMessageEvent2 son ejemplos de eventos asincrónicos.

  • Eventos sincrónicos

    Notifican al SDM y al IDE que el estado de la aplicación que se está depurando está cambiando. La única diferencia entre estos eventos y los asincrónicos es que se envía una respuesta mediante el método ContinueFromSynchronousEvent.

    Enviar un evento sincrónico es útil si necesita que el DE continúe procesando después de que el IDE reciba y procese el evento.

  • Eventos de detención sincrónicos o eventos de detención

    Notifican al SDM y al IDE que la aplicación que se está depurando ha dejado de ejecutar código. Cuando se envía un evento de detención mediante el método Event, se requiere el parámetro IDebugThread2. A los eventos de detención les sigue una llamada a uno de los métodos siguientes:

    Nota:

    No se admiten eventos de detención asincrónicos. Es un error enviar un evento de detención asincrónico.

Debate

La implementación real de los eventos depende del diseño del DE. El tipo de cada evento enviado viene determinado por sus atributos, que se establecen al diseñar el DE. Por ejemplo, un DE puede enviar un IDebugProgramCreateEvent2 como un evento asincrónico, mientras que otro puede enviarlo como evento de detención.

En la tabla siguiente se especifica qué parámetros de programa y subproceso son necesarios para qué eventos, así como los tipos de eventos. Cualquier evento puede ser sincrónico. No es necesario que ningún evento sea sincrónico.

Nota:

La interfaz IDebugEngine2 es necesaria para todos los eventos.

Evento IDebugProgram2 IDebugThread2 Eventos de detención
IDebugActivateDocumentEvent2 Permitido, pero no obligatorio Permitido, pero no obligatorio No
IDebugBreakEvent2 Obligatorio Obligatorio
IDebugBreakpointBoundEvent2 Permitido, pero no obligatorio Permitido, pero no obligatorio No
IDebugBreakpointErrorEvent2 Permitido, pero no obligatorio Permitido, pero no obligatorio No
IDebugBreakpointUnboundEvent2 Permitido, pero no obligatorio Permitido, pero no obligatorio No
IDebugBreakpointEvent2 Obligatorio Obligatorio
IDebugCanStopEvent2 Obligatorio Obligatorio No
IDebugDocumentTextEvents2 No permitida No permitida No
IDebugEngineCreateEvent2 No permitida No permitida No
IDebugEntryPointEvent2 Obligatorio Obligatorio
IDebugErrorEvent2 Permitido, pero no obligatorio Permitido, pero no obligatorio Puede ser
IDebugExceptionEvent2 Obligatorio Obligatorio
IDebugExpressionEvaluationCompleteEvent2 Permitido, pero no obligatorio Permitido, pero no obligatorio Puede ser
IDebugInterceptExceptionCompleteEvent2 Obligatorio Obligatorio
IDebugLoadCompleteEvent2 Obligatorio Obligatorio
IDebugMessageEvent2 Permitido, pero no obligatorio Permitido, pero no obligatorio Puede ser
IDebugModuleLoadEvent2 Obligatorio Permitido, pero no obligatorio No
IDebugOutputStringEvent2 Permitido, pero no obligatorio Permitido, pero no obligatorio No
IDebugProgramCreateEvent2 Obligatorio Permitido, pero no obligatorio No
IDebugProgramDestroyEvent2 Obligatorio Permitido, pero no obligatorio No
IDebugPropertyCreateEvent2 Obligatorio Permitido, pero no obligatorio No
IDebugPropertyDestroyEvent2 Obligatorio Permitido, pero no obligatorio No
IDebugReturnValueEvent2 Permitido, pero no obligatorio Permitido, pero no obligatorio No
IDebugStopCompleteEvent2 Obligatorio Obligatorio
IDebugStepCompleteEvent2 Obligatorio Obligatorio
IDebugSymbolSearchEvent2 Permitido, pero no obligatorio Permitido, pero no obligatorio No
IDebugThreadCreateEvent2 Obligatorio Obligatorio No
IDebugThreadDestroyEvent2 Obligatorio Obligatorio No
IDebugThreadNameChangedEvent2 Permitido, pero no obligatorio Permitido, pero no obligatorio No

Consulte también