Compartilhar via


Interface ICorDebugEval

Fornece métodos para permitir que o depurador execute um código no contexto do código que está sendo depurado.

Métodos

Método Descrição
Método Abort Aborta a computação que este ICorDebugEvalobjeto está realizando no momento.
Método CallFunction Configura uma chamada para a função especificada. (Obsoleto no .NET Framework versão 2.0; use ICorDebugEval2::CallParameterizedFunction em vez disso.)
Método CreateValue Obtém um ponteiro de interface para um objeto "ICorDebugValue" do tipo especificado, com um valor inicial de zero ou nulo. (Obsoleto no .NET Framework 2.0; use ICorDebugEval2::CreateValueForType em vez disso.)
Método GetResult Obtém um ponteiro de interface para um ICorDebugValue que contém os resultados da avaliação.
Método GetThread Obtém um ponteiro de interface para o "ICorDebugThread" onde esta avaliação está sendo executada ou será executada.
Método IsActive Obtém um valor que indica se este ICorDebugEvalobjeto está em execução no momento.
Método NewArray Aloca uma nova matriz do tipo de elemento e dimensões especificados. (Obsoleto no .NET Framework 2.0; use ICorDebugEval2::NewParameterizedArray em vez disso.)
Método NewObject Aloca uma nova instância de objeto e chama o método construtor especificado. (Obsoleto no .NET Framework 2.0; use ICorDebugEval2::NewParameterizedObject em vez disso.)
Método NewObjectNoConstructor Aloca uma nova instância de objeto do tipo especificado, sem tentar chamar um método construtor. (Obsoleto no .NET Framework 2.0; use ICorDebugEval2::NewParameterizedObjectNoConstructor em vez disso.)
Método NewString Aloca um novo objeto de cadeia de caracteres com o conteúdo especificado.

Comentários

Um ICorDebugEval objeto é criado no contexto de um thread específico que é usado para executar as avaliações. Todos os objetos e tipos usados em uma determinada avaliação devem residir no mesmo domínio de aplicativo. Esse domínio de aplicativo não precisa ser o mesmo que o domínio do aplicativo atual da thread. As funções podem ser aninhadas.

As operações da avaliação não são concluídas até que o depurador chame ICorDebugController::Continue, e receba um retorno de chamada ICorDebugManagedCallback::EvalComplete. Se você precisar usar a funcionalidade de avaliação sem permitir que outros threads sejam executados, suspenda os threads usando ICorDebugController::SetAllThreadsDebugState ou ICorDebugController::Stop antes de chamar ICorDebugController::Continue.

Como o código do usuário está em execução quando a avaliação está em andamento, podem ocorrer quaisquer eventos de depuração, incluindo cargas de classe e pontos de interrupção. O depurador receberá retornos de chamada, normalmente, para esses eventos. O estado da avaliação será visto como parte da inspeção do estado normal do programa. A cadeia de pilha será uma CHAIN_FUNC_EVALcadeia (consulte a enumeração "CorDebugStepReason" e o método ICorDebugChain::GetReason). A API completa do depurador continuará operando normalmente.

Se surgir uma situação de deadlock ou loop infinito, o código do usuário pode nunca ser concluído. Nesse caso, você deve chamar ICorDebugEval::Abort antes de retomar o programa.

Observação

Esta interface não pode ser chamada remotamente, seja entre computadores ou entre processos.

Requisitos

Plataformas: confira Requisitos do sistema.

Cabeçalho: CorDebug.idl, CorDebug.h

Biblioteca: CorGuids.lib

Versões do .NET Framework: Disponíveis desde a versão 1.0

Confira também