Compartilhar via


ICorDebugEval Interface

Fornece métodos para habilitar o depurador a executar código no contexto do código que está sendo depurado.

Methods

Método Description
Método Abort Anula a computação que este ICorDebugEval objeto está executando no momento.
Método CallFunction Configura uma chamada para a função especificada. (Obsoleto; 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 igual a zero ou nulo. (Obsoleto; 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" em que essa avaliação está sendo executada ou será executada.
Método IsActive Obtém um valor que indica se esse ICorDebugEval objeto está sendo executado no momento.
Método NewArray Aloca uma nova matriz do tipo de elemento e dimensões especificados. (Obsoleto; use ICorDebugEval2::NewParameterizedArray em vez disso.)
Método NewObject Aloca uma nova instância de objeto e chama o método de construtor especificado. (Obsoleto; 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 de construtor. (Obsoleto; use ICorDebugEval2::NewParameterizedObjectNoConstructor em vez disso.)
Método NewString Aloca um novo objeto de cadeia de caracteres com o conteúdo especificado.

Observações

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 do aplicativo. Esse domínio de aplicativo não precisa ser o mesmo que o domínio de aplicativo atual do thread. As avaliações podem ser aninhadas.

As operações da avaliação não são concluídas até que o depurador chame ICorDebugController::Continue e, em seguida, receba um retorno de chamada ICorDebugManagedCallback::EvalComplete . Se você precisar usar a funcionalidade de avaliação sem permitir que outros threads executem, 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, qualquer evento de depuração pode ocorrer, 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_EVAL cadeia (consulte a enumeração "CorDebugStepReason" e o método ICorDebugChain::GetReason ). A API completa do depurador continuará operando normalmente.

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

Observação

Essa interface não dá suporte a ser chamada remotamente, seja entre máquinas ou entre processos.

Requirements

Plataformas: Consulte sistemas operacionais com suporte do .NET.

Cabeçalho: CorDebug.idl, CorDebug.h

Biblioteca: CorGuids.lib

Versões do .NET: Disponível desde o .NET Framework 1.0