ICorDebugEval
Aktualisiert: November 2007
Stellt Methoden bereit, mit denen der Debugger Code innerhalb des Kontexts des gedebuggten Codes ausführen kann.
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
);
};
Methoden
Methode |
Beschreibung |
---|---|
Bricht die Berechnung ab, die dieses ICorDebugEval-Objekt momentan durchführt. |
|
Richtet einen Aufruf der angegebenen Funktion ein. (Veraltet in .NET Framework, Version 2.0; verwenden Sie stattdessen ICorDebugEval2::CallParameterizedFunction.) |
|
Ruft einen Schnittstellenzeiger auf ein ICorDebugValue-Objekt des angegebenen Typs ab. Der Anfangswert ist 0 (null) oder Null. (Veraltet in .NET Framework 2.0; verwenden Sie stattdessen ICorDebugEval2::CreateValueForType.) |
|
Ruft einen Schnittstellenzeiger auf einen ICorDebugValue, der die Ergebnisse der Auswertung enthält, ab. |
|
Ruft einen Schnittstellenzeiger auf den ICorDebugThread ab, in dem diese Auswertung momentan oder später ausgeführt wird. |
|
Ruft einen Wert ab, der angibt, ob dieses ICorDebugEval-Objekt momentan ausgeführt wird. |
|
Ordnet ein neues Array des angegebenen Elementtyps mit den angegebenen Dimensionen zu. (Veraltet in .NET Framework 2.0; verwenden Sie stattdessen ICorDebugEval2::NewParameterizedArray.) |
|
Ordnet eine neue Objektinstanz zu und ruft die angegebene Konstruktormethode auf. (Veraltet in .NET Framework 2.0; verwenden Sie stattdessen ICorDebugEval2::NewParameterizedObject.) |
|
Ordnet eine neue Objektinstanz des angegebenen Typs zu, ohne zu versuchen, eine Konstruktormethode aufzurufen. (Veraltet in .NET Framework 2.0; verwenden Sie stattdessen ICorDebugEval2::NewParameterizedObjectNoConstructor.) |
|
Ordnet ein neues Zeichenfolgenobjekt mit dem angegebenen Inhalt zu. |
Hinweise
Ein ICorDebugEval-Objekt wird im Kontext eines spezifischen Threads erstellt, mit dem die Auswertungen durchgeführt werden. Alle Objekte und Typen, die in einer bestimmten Auswertung verwendet werden, müssen sich innerhalb der gleichen Anwendungsdomäne befinden. Diese Anwendungsdomäne muss nicht der aktuellen Anwendungsdomäne des Threads entsprechen. Auswertungen können geschachtelt werden.
Die Vorgänge der Auswertung werden erst abgeschlossen, wenn der Debugger ICorDebugController::Continue aufruft und dann einen ICorDebugManagedCallback::EvalComplete-Rückruf empfängt. Wenn Sie die Auswertungsfunktion verwenden müssen, ohne die Ausführung anderer Threads zuzulassen, brechen Sie die Threads mit ICorDebugController::SetAllThreadsDebugState oder ICorDebugController::Stop ab, bevor Sie ICorDebugController::Continue aufrufen.
Da während der Auswertung Benutzercode ausgeführt wird, können beliebige Debugereignisse eintreten, einschließlich Ladeereignisse für Klassen und Haltepunkte. Der Debugger empfängt wie üblich Rückrufe für diese Ereignisse. Der Zustand der Auswertung ist als Teil der Inspektion des normalen Programmzustands ersichtlich. Die Stapelkette ist eine CHAIN_FUNC_EVAL-Kette (siehe die CorDebugStepReason-Enumeration und die ICorDebugChain::GetReason-Methode). Die vollständige Debugger-API wird normal weiter ausgeführt.
Wenn ein Deadlock oder eine Endlosschleife eintritt, wird der Benutzercode möglicherweise nie abgeschlossen. In einem solchen Fall müssen Sie ICorDebugEval::Abort aufrufen, bevor Sie das Programm fortsetzen.
Anforderungen
Plattformen: siehe Systemanforderungen für .NET Framework.
Header: CorDebug.idl
Bibliothek: CorGuids.lib
.NET Framework-Versionen: 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0