Pré-condições para Interfaces de CorDebug.idl
Alguns métodos em interfaces de depuração requerem o processo que está sendo depurado (isto é, o debuggee) em um determinado estado, como um pre-condition. O pre-condition só se aplica os métodos de membro direto das interfaces são declaradas no arquivo CorDebug.idl. (Ou seja, eles se aplicam apenas aos métodos que não são herdados do IUnknown.)
Estado do elemento a ser depurado
O depurado tem seis estados de alto nível, que são descritos nas seções a seguir. Somente três desses estados (ao vivo, sincronizado e sistema operacional congelada) são válidos.
Live
Um estado válido no qual o depurado está em execução. Este é o estado entre os eventos de depuração.
Sincronizado
Um estado válido no qual o depurado está parado e todos os estados gerenciados são suspensos. O depurado obtém esse estado de duas maneiras:
Durante o intervalo entre o despacho e continuação de um evento de depuração gerenciada. Esta é a depuração do período após um gerenciado (ou uma em banda, nativa) evento é despachado, mas antes do evento é continuação.
Depois de chamar o ICorDebugController::Stop método.
Sistema operacional congelado
Um estado válido no qual o depurado está parado em um evento de depuração de out-of-band, nativo. Este estado só é relevante para depuração interop.
Ainda não foi inicializado
Um estado inválido, no qual o depurado não foi inicializado. Esse estado existe durante o período após o depurado é criado e antes do ICorDebugManagedCallback::CreateProcess retorno de chamada é despachado. Se um método que foi definido no CorDebug.idl é chamado durante esse estado, ele pode retornar um valor de HRESULT de CORDBG_E_NOTREADY.
Inativo ou desativados
Um estado inválido, no qual o depurado não está mais disponível para depuração. Se um método que foi definido no CorDebug.idl é chamado durante esse estado, ele pode retornar um dos vários valores HRESULT, incluindo CORDBG_E_PROCESS_DETACHED e CORDBG_E_PROCESS_TERMINATED.
Erro irrecuperável
Estado inválido para que o depurado entra quando o ICorDebugManagedCallback::DebuggerError retorno de chamada é despachado. Isso significa que os serviços de depuração gerenciados tornaram significativamente corrompida e inutilizável. Se um método que foi definido no CorDebug.idl é chamado durante esse estado, ele pode retornar um valor de HRESULT de CORDBG_E_UNRECOVERABLE_ERROR.
Estados necessários antes de chamar métodos
Os métodos de membro da ICorDebug interface ter sem restrições específicas de estado, além de suas declarações, porque eles não vivem diretamente em um objeto de processo. Métodos de membro de todas as outras interfaces têm alguns afinidade de processo específico. Portanto, esses métodos requerem o processo de depuração em um dos três estados para quando eles são chamados: ao vivo, sincronizados ou sistema operacional congelada.
Os métodos a seguir podem ser chamados quando o depurado está no estado em tempo real:
Os métodos a seguir podem ser chamados quando o depurado está no sistema operacional congelado ou o estado sincronizado:
Todos os outros métodos devem ser chamados somente quando o depurado está no estado sincronizado. Caso contrário, eles podem retornar um valor de HRESULT de CORDBG_E_PROCESS_NOT_SYNCHRONIZED.
Consulte também
Conceitos
Visão geral de depuração do CLR