IDebugStackFrame3
Esta interfaz extiende IDebugStackFrame2 para controlar las excepciones interceptadas.
Sintaxis
IDebugStackFrame3 : IDebugStackFrame2
Notas para los implementadores
El motor de depuración (DE) implementa esta interfaz en el mismo objeto que implementa la interfaz IDebugStackFrame2 para admitir excepciones interceptadas.
Notas para autores de la llamada
Llame a QueryInterface en una IDebugStackFrame2
interfaz para obtener esta interfaz.
Métodos en orden de Vtable
Además de los métodos heredados de IDebugStackFrame2, IDebugStackFrame3
expone los métodos siguientes.
Method | Descripción |
---|---|
InterceptCurrentException | Controla una excepción para el marco de pila actual antes de cualquier control de excepciones normal. |
GetUnwindCodeContext | Devuelve un contexto de código si se ha producido un desenredado de pila. |
Comentarios
Una excepción interceptada significa que un depurador puede procesar una excepción antes de que el tiempo de ejecución llame a las rutinas normales de control de excepciones. La interceptación de una excepción básicamente significa hacer que el tiempo de ejecución pretenda que hay un controlador de excepciones presente incluso cuando no lo haya.
- Se llama a InterceptCurrentException durante todos los eventos de devolución de llamada de excepción normales (la única excepción a esto es si está depurando código en modo mixto (código administrado y no administrado), en cuyo caso la excepción no se puede interceptar durante la última devolución de llamada de oportunidad. Si el DE no implementa
IDebugStackFrame3
, o el DE devuelve un error de IDebugStackFrame3::InterceptCurrentException
(comoE_NOTIMPL
), el depurador controlará la excepción normalmente.
Al interceptar una excepción, el depurador puede permitir al usuario realizar cambios en el estado del programa que se está depurando y, a continuación, reanudar la ejecución en el punto donde se produjo la excepción.
Nota:
Las excepciones interceptadas solo se permiten en código administrado, es decir, en un programa que se ejecuta en Common Language Runtime (CLR).
Un motor de depuración indica que admite la interceptación de excepciones estableciendo "metricExceptions" en un valor de 1 en tiempo de ejecución mediante la SetMetric
función . Para obtener más información, consulte Sdk Helpers for Debugging (Asistentes de SDK para depuración).
Requisitos
Encabezado: msdbg.h
Espacio de nombres: Microsoft.VisualStudio.Debugger.Interop
Ensamblado: Microsoft.VisualStudio.Debugger.Interop.dll