Freigeben über


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

ICorDebugEval::Abort-Methode

Bricht die Berechnung ab, die dieses ICorDebugEval-Objekt momentan durchführt.

ICorDebugEval::CallFunction-Methode

Richtet einen Aufruf der angegebenen Funktion ein. (Veraltet in .NET Framework, Version 2.0; verwenden Sie stattdessen ICorDebugEval2::CallParameterizedFunction.)

ICorDebugEval::CreateValue-Methode

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.)

ICorDebugEval::GetResult-Methode

Ruft einen Schnittstellenzeiger auf einen ICorDebugValue, der die Ergebnisse der Auswertung enthält, ab.

ICorDebugEval::GetThread-Methode

Ruft einen Schnittstellenzeiger auf den ICorDebugThread ab, in dem diese Auswertung momentan oder später ausgeführt wird.

ICorDebugEval::IsActive-Methode

Ruft einen Wert ab, der angibt, ob dieses ICorDebugEval-Objekt momentan ausgeführt wird.

ICorDebugEval::NewArray-Methode

Ordnet ein neues Array des angegebenen Elementtyps mit den angegebenen Dimensionen zu. (Veraltet in .NET Framework 2.0; verwenden Sie stattdessen ICorDebugEval2::NewParameterizedArray.)

ICorDebugEval::NewObject-Methode

Ordnet eine neue Objektinstanz zu und ruft die angegebene Konstruktormethode auf. (Veraltet in .NET Framework 2.0; verwenden Sie stattdessen ICorDebugEval2::NewParameterizedObject.)

ICorDebugEval::NewObjectNoConstructor-Methode

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.)

ICorDebugEval::NewString-Methode

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

Siehe auch

Referenz

ICorDebugEval2

ICorDebugThread

ICorDebugValue

Weitere Ressourcen

Debugschnittstellen