Compartilhar via


Pre-Conditions para Interfaces CorDebug.idl

Alguns métodos sistema autônomo interfaces de depuração de exigem o processo que está sendo depurado (ou seja, o debuggee) em um determinado estado, sistema autônomo um pre-condition. O pre-condition aplica-se somente a métodos de membro direto da interfaces são declaradas no arquivo CorDebug.idl. (Ou seja, elas só se aplicam ao métodos que não são herdados do IUnknown.)

Estado do ser depurado

O elemento a ser 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 congeladas) são válido.

Em tempo real

Um estado válido em que o depurado está sendo executado. Esse é o estado entre os eventos de depurar.

Sincronizado

Um estado válido em que o depurado está parado e todos os estados gerenciado são suspensos. O debuggee entra neste estado de duas maneiras:

  • Durante o intervalo entre o despacho e continuação de um evento de depurar gerenciada. Esta é a depurar de período após um gerenciado (ou uma em banda, nativa) evento é despachado, mas antes que o evento é continuação.

  • Depois de chamar o ICorDebugController::Stop método.

Sistema operacional congelado

Um estado válido em que o depurado for interrompido em um evento de depuração nativo, fora de banda. Esse estado é relevante somente para depuração interop.

Ainda não inicializado

Um estado inválido no qual o elemento a ser depurado não foi inicializado. Esse estado existe durante o período depois que 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 poderá retornar um valor de HRESULT de CORDBG_E_NOTREADY.

Inativo ou desativados

Um estado inválido no qual o elemento a ser 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 poderá 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 insere quando o ICorDebugManagedCallback::DebuggerError retorno de chamada é despachado. Isso significa que os serviços de depuração gerenciado são significativamente corrompida e inutilizável. Se um método que foi definido no CorDebug.idl é chamado durante esse estado, ele poderá retornar um valor de HRESULT de CORDBG_E_UNRECOVERABLE_ERROR.

Estados necessários antes de chamar métodos

Os métodos de membro do ICorDebug interface não têm estado específico restrições além das suas declarações porque eles não ao vivo 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 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

Outros recursos

Conceitos chave na API de depuração

Interfaces de depuração

Depuração no .NET estrutura

Visão geral sobre depuração do CLR

Depuração (referência de API não gerenciada)