ICorDebugEval
Mise à jour : novembre 2007
Fournit des méthodes pour permettre au débogueur d'exécuter le code à l'intérieur du contexte du code en cours de débogage.
interface ICorDebugEval : IUnknown {
HRESULT Abort ();
HRESULT CallFunction (
[in] ICorDebugFunction *pFunction,
[in] ULONG32 nArgs,
[in, size_is(nArgs)] ICorDebugValue *ppArgs[]
);
HRESULT CreateValue (
[in] CorElementType elementType,
[in] ICorDebugClass *pElementClass,
[out] ICorDebugValue **ppValue
);
HRESULT GetResult (
[out] ICorDebugValue **ppResult
);
HRESULT GetThread (
[out] ICorDebugThread **ppThread
);
HRESULT IsActive (
[out] BOOL *pbActive
);
HRESULT NewArray (
[in] CorElementType elementType,
[in] ICorDebugClass *pElementClass,
[in] ULONG32 rank,
[in, size_is(rank)] ULONG32 dims[],
[in, size_is(rank)] ULONG32 lowBounds[]
);
HRESULT NewObject (
[in] ICorDebugFunction *pConstructor,
[in] ULONG32 nArgs,
[in, size_is(nArgs)] ICorDebugValue *ppArgs[]
);
HRESULT NewObjectNoConstructor (
[in] ICorDebugClass *pClass
);
HRESULT NewString (
[in] LPCWSTR string
);
};
Méthodes
Méthode |
Description |
---|---|
Abandonne le calcul que cet objet ICorDebugEval exécute actuellement. |
|
Paramètre un appel à la fonction spécifiée. (Obsolète dans la version 2.0 du .NET Framework ; utilisez à la place ICorDebugEval2::CallParameterizedFunction.) |
|
Obtient un pointeur d'interface vers un objet ICorDebugValue du type spécifié, avec une valeur initiale de zéro ou null. (Obsolète dans .NET Framework 2.0 ; utilisez à la place ICorDebugEval2::CreateValueForType.) |
|
Obtient un pointeur d'interface vers ICorDebugValue qui contient les résultats de l'évaluation. |
|
Obtient un pointeur d'interface vers ICorDebugThread où cette évaluation est en cours d'exécution ou s'exécutera. |
|
Obtient une valeur qui indique si cet objet ICorDebugEval est en cours d'exécution. |
|
Alloue un nouveau tableau du type d'élément et des dimensions spécifiés. (Obsolète dans .NET Framework 2.0 ; utilisez à la place ICorDebugEval2::NewParameterizedArray.) |
|
Alloue une nouvelle instance d'objet et appelle la méthode de constructeur spécifiée. (Obsolète dans .NET Framework 2.0 ; utilisez à la place ICorDebugEval2::NewParameterizedObject.) |
|
Alloue une nouvelle instance d'objet du type spécifié, sans tenter d'appeler une méthode de constructeur. (Obsolète dans .NET Framework 2.0 ; utilisez à la place ICorDebugEval2::NewParameterizedObjectNoConstructor.) |
|
Alloue un nouvel objet chaîne avec le contenu spécifié. |
Notes
Un objet ICorDebugEval est créé dans le contexte d'un thread spécifique qui est utilisé pour exécuter les évaluations. Tous les objets et les types utilisés dans une évaluation donnée doivent résider dans le même domaine d'application. Ce domaine d'application n'a pas besoin d'être le domaine d'application en cours du thread. Les évaluations peuvent être imbriquées.
Les opérations de l'évaluation ne se terminent pas tant que le débogueur n'a pas appelé ICorDebugController::Continue, puis reçu un rappel ICorDebugManagedCallback::EvalComplete. Si vous devez utiliser les fonctionnalités de l'évaluation sans permettre à d'autres threads de s'exécuter, suspendez les threads en utilisant ICorDebugController::SetAllThreadsDebugState ou ICorDebugController::Stop avant d'appeler ICorDebugController::Continue.
Étant donné que le code utilisateur s'exécute lorsque l'évaluation est en cours, des événements de débogage peuvent se produire, notamment les chargements de classe et les points d'arrêt. Le débogueur recevra normalement des rappels pour ces événements. L'état de l'évaluation sera affiché dans le cadre de l'inspection de l'état du programme normal. La chaîne de la pile sera une chaîne CHAIN_FUNC_EVAL (consultez l'énumération CorDebugStepReason et la méthode ICorDebugChain::GetReason). L'API de débogueur complète continuera à fonctionner normalement.
Si une situation de blocage ou de boucles sans fin survient, il est possible que le code utilisateur ne se termine jamais. Dans ce cas, vous devez appeler ICorDebugEval::Abort avant de reprendre le programme.
Configuration requise
Plateformes : consultez Configuration requise du .NET Framework.
En-tête : CorDebug.idl
Bibliothèque : CorGuids.lib
Versions du .NET Framework : 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0