Depurar un proceso del motor en tiempo de ejecución
La API de depuración de Common Language Runtime (CLR) es compatible con la depuración en el entorno en tiempo de ejecución. A continuación se muestra una descripción paso a paso de cómo se depura un proceso en tiempo de ejecución:
El depurador crea una instancia de la interfaz ICorDebug. El depurador invoca CComPtrBase::CoCreateInstance utilizando el CLSID CLSID_CorDebug para obtener una instancia de ICorDebug.
El depurador inicializa la API de depuración llamando al método ICorDebug::Initialize.
El depurador registra un controlador de evento administrado. El depurador invoca el método ICorDebug::SetManagedHandler para registrar una instancia de la interfaz ICorDebugManagedCallback como devolución de llamada para recibir notificaciones e información sobre eventos en código administrado.
El depurador registra opcionalmente un controlador de eventos no administrado. Si el depurador desea depurar el código no administrado, invoca el método ICorDebug::SetUnmanagedHandler para registrar una instancia de ICorDebugUnmanagedCallback como devolución de llamada para recibir notificaciones e información sobre los eventos en código no administrado.
El depurador crea el proceso del código que está siendo depurado. El depurador llama al método ICorDebug::CreateProcess para crear un proceso.
La API de depuración notifica al depurador el nuevo proceso del código que está siendo depurado. La API de depuración llama a métodos ICorDebugManagedCallback, empezando por ICorDebugManagedCallback::CreateProcess. Esto puede ir seguido de llamadas a ICorDebugManagedCallback::LoadModule, ICorDebugManagedCallback::LoadClass, ICorDebugManagedCallback::CreateThread, etc.
El depurador detiene la depuración. En algún punto, el depurador obtendrá un evento ICorDebugManagedCallback::ExitProcess, indicando que el código que está siendo depurado ya no se está ejecutando. En algún punto posterior, el depurador libera todas las referencias a las interfaces que tenga y, a continuación, llama al método ICorDebug::Terminate.
Vea también
Conceptos
Información general sobre la depuración en CLR