Depurando um processo de tempo de execução
O common language runtime (CLR) API de depuração oferece suporte a depuração no ambiente de tempo de execução. Veja a seguir uma descrição passo a passo de como um processo de tempo de execução é depurado:
O depurador cria uma instância de ICorDebug interface. O depurador chama CComPtrBase::CoCreateInstance usando o CLSID CLSID_CorDebug para obter uma instância de ICorDebug.
O depurador inicializa a API de depuração, chamando o ICorDebug::Initialize método.
O depurador registra um manipulador de eventos gerenciado. O depurador chama o ICorDebug::SetManagedHandler método para registrar uma instância da ICorDebugManagedCallback interface como o retorno de chamada para o recebimento de notificação e informações sobre eventos no código gerenciado.
Opcionalmente, o depurador registra um manipulador de eventos não gerenciado. Se quiser que o depurador depurar o código não gerenciado, ele invoca o ICorDebug::SetUnmanagedHandler método para registrar uma instância de ICorDebugUnmanagedCallback como o retorno de chamada para o recebimento de notificação e informações sobre eventos em código não gerenciado.
O depurador cria o processo de depuração. As chamadas do depurador do ICorDebug::CreateProcess método para criar um processo.
A API de depuração notifica o depurador sobre o novo processo de depuração. As chamadas de API de depuração ICorDebugManagedCallback métodos, começando pelo ICorDebugManagedCallback::CreateProcess. Isso pode ser seguido por chamadas para ICorDebugManagedCallback::LoadModule, ICorDebugManagedCallback::LoadClass, ICorDebugManagedCallback::CreateThreade assim por diante.
O depurador interrompe a depuração. Em algum momento, o depurador irá obter um ICorDebugManagedCallback::ExitProcess evento, indicando que o depurado não está em execução. Em algum momento depois disso, o depurador libera todas as referências a quaisquer interfaces que ele tem e, em seguida, chama o ICorDebug::Terminate método.
Consulte também
Conceitos
Visão geral de depuração do CLR