Interfaccia ICorDebugEval
Fornisce metodi per consentire al debugger di eseguire codice nel contesto del codice in fase di debug.
Metodi
Metodo |
Oggetto di descrizione |
---|---|
Interrompe il calcolo attualmente eseguito dall'oggetto ICorDebugEval. |
|
Configura una chiamata alla funzione specificata. Obsoleto in .NET Framework versione 2.0. Utilizzare invece ICorDebugEval2::CallParameterizedFunction. |
|
Ottiene un puntatore a interfaccia a un oggetto Interfaccia ICorDebugValue del tipo specificato, con valore iniziale zero o null. Obsoleto in .NET Framework versione 2.0. Utilizzare invece ICorDebugEval2::CreateValueForType. |
|
Ottiene un puntatore a interfaccia a ICorDebugValue che contiene i risultati della valutazione. |
|
Ottiene un puntatore a interfaccia a ICorDebugThread, in cui la valutazione è in esecuzione o verrà eseguita. |
|
Ottiene un valore che indica se l'oggetto ICorDebugEval è attualmente in esecuzione. |
|
Alloca una nuova matrice con le dimensioni e il tipo di elemento specificati. Obsoleto in .NET Framework versione 2.0. Utilizzare invece ICorDebugEval2::NewParameterizedArray. |
|
Alloca una nuova istanza dell'oggetto e chiama il metodo costruttore specificato. Obsoleto in .NET Framework versione 2.0. Utilizzare invece ICorDebugEval2::NewParameterizedObject. |
|
Alloca una nuova istanza dell'oggetto del tipo specificato, senza tentare di chiamare un metodo costruttore. Obsoleto in .NET Framework versione 2.0. Utilizzare invece ICorDebugEval2::NewParameterizedObjectNoConstructor. |
|
Alloca un nuovo oggetto stringa con il contenuto specificato. |
Note
Viene creato un oggetto ICorDebugEval nel contesto di un thread specifico utilizzato per eseguire le valutazioni. Tutti gli oggetti e i tipi utilizzati in una determinata valutazione devono risiedere all'interno dello stesso dominio applicazione. Tale dominio non deve necessariamente corrispondere al dominio applicazione corrente del thread. Le valutazioni possono essere annidate.
Le operazioni della valutazione non vengono completate finché il debugger non chiama ICorDebugController::Continue e riceve quindi un callback di ICorDebugManagedCallback::EvalComplete. Se è necessario utilizzare la funzionalità di valutazione senza consentire l'esecuzione di altri thread, sospendere i thread mediante ICorDebugController::SetAllThreadsDebugState o ICorDebugController::Stop prima di chiamare ICorDebugController::Continue.
Poiché è in esecuzione codice utente quando è in corso la valutazione, può verificarsi qualsiasi evento di debug, inclusi punti di interruzione e caricamenti di classi. Il debugger riceverà come al solito i callback per questi eventi. Lo stato della valutazione sarà visto come parte della verifica del normale stato del programma. La catena dello stack sarà una catena CHAIN_FUNC_EVAL (vedere l'enumerazione CorDebugStepReason e il metodo ICorDebugChain::GetReason). L'API del debugger completa continuerà a funzionare normalmente.
Se si verifica una situazione di deadlock o con cicli infiniti, il codice utente non potrà mai essere completato. In tal caso, è necessario chiamare ICorDebugEval::Abort prima di riprendere l'esecuzione del programma.
Nota |
---|
Questa interfaccia non supporta la ricezione di chiamate in modalità remota, siano esse tra più computer o processi. |
Requisiti
Piattaforme: vedere Requisiti di sistema di .NET Framework.
Intestazione: CorDebug.idl, CorDebug.h
Libreria: CorGuids.lib
Versioni di .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0