Freigeben über


Vorbedingungen für CorDebug.idl-Schnittstellen

Aktualisiert: November 2007

Für manche Methoden in den Debugschnittstellen muss der Prozess, der gedebuggt wird (d. h., die zu debuggende Komponente) sich als Vorbedingung in einem bestimmten Zustand befinden. Diese Vorbedingung gilt nur für die direkten Membermethoden von Schnittstellen, die in der Datei CorDebug.idl deklariert sind. (Das heißt, sie gilt für nur Methoden, die nicht von IUnknown geerbt werden.)

Zustand der zu debuggenden Komponente

Die zu debuggende Komponente verfügt über sechs übergeordnete Zustände, die in den folgenden Abschnitten beschrieben werden. Nur drei dieser Zustände (Live, Synchronized und Operating-System Frozen) sind gültig.

Live

Ein gültiger Zustand, in dem die zu debuggende Komponente ausgeführt wird. Dies ist der Zustand zwischen Debugereignissen.

Synchronized

Ein gültiger Zustand, in dem die zu debuggende Komponente beendet wird und alle verwalteten Zustände angehalten werden. Die zu debuggende Komponente wird auf zwei Arten in diesen Zustand versetzt:

  • Während des Intervalls zwischen dem Senden und der Fortsetzung eines verwalteten Debugereignisses. Dies ist der Zeitraum, nach dem ein verwaltetes Debugereignis (oder ein systemeigenes In-Band-Debugereignis) gesendet wird, jedoch bevor das Ereignis fortgesetzt wird.

  • Nach dem Aufrufen der ICorDebugController::Stop-Methode.

Operating System (OS) Frozen

Ein gültiger Zustand, in dem die zu debuggende Komponente bei einem systemeigenen Out-of-Band-Debugereignis beendet wird. Dieser Zustand ist nur für Interop-Debuggen relevant.

Not Yet-Initialized

Ein ungültiger Zustand, in dem die zu debuggende Komponente nicht initialisiert wurde. Dieser Zustand existiert während des Zeitraums nach der Erstellung der zu debuggenden Komponente und vor dem Senden des ICorDebugManagedCallback::CreateProcess-Rückrufs. Wenn eine Methode, die in CorDebug.idl definiert wurde, während dieses Zustands aufgerufen wird, wird möglicherweise ein HRESULT-Wert CORDBG_E_NOTREADY zurückgegeben.

Dead oder Deactivated

Ein ungültiger Zustand, in dem die zu debuggende Komponente nicht mehr für das Debuggen verfügbar ist. Wenn eine Methode, die in CorDebug.idl definiert wurde, während dieses Zustands aufgerufen wird, kann sie einen von mehreren HRESULT-Werten zurückgeben, darunter CORDBG_E_PROCESS_DETACHED und CORDBG_E_PROCESS_TERMINATED.

Unrecoverable Error

Ein ungültiger Zustand, in den die zu debuggende Komponente eintritt, wenn der ICorDebugManagedCallback::DebuggerError-Rückruf gesendet wird. Dies bedeutet, dass die verwalteten Debugdienste ernsthaft beschädigt wurden und unbrauchbar sind. Wenn eine Methode, die in CorDebug.idl definiert wurde, während dieses Zustands aufgerufen wird, wird möglicherweise ein HRESULT-Wert CORDBG_E_UNRECOVERABLE_ERROR zurückgegeben.

Vor dem Aufrufen von Methoden erforderliche Zustände

Die Membermethoden der ICorDebug-Schnittstelle haben keine zustandsspezifischen Beschränkungen abgesehen von ihren Deklarationen, da sie nicht direkt in einem Prozessobjekt vorhanden sind. Membermethoden aller anderen Schnittstellen verfügen über eine prozessspezifische Affinität. Aus diesem Grund muss sich beim Aufrufen dieser Methoden der zu debuggende Prozess in einem dieser drei Zustände befinden: Live, Synchronized oder Operating-System Frozen.

Die folgenden Methoden können aufgerufen werden, wenn die zu debuggende Komponente im Zustand Active ist:

Die folgenden Methoden können aufgerufen werden, wenn sich die zu debuggende Komponente entweder im Zustand Operating-System Frozen oder im Zustand Synchronized befindet:

Alle anderen Methoden sollten nur aufgerufen werden, wenn sich die zu debuggende Komponente im Zustand Synchronized befindet. Andernfalls geben sie möglicherweise einen HRESULT-Wert von CORDBG_E_PROCESS_NOT_SYNCHRONIZED zurück.

Siehe auch

Weitere Ressourcen

Hauptbegriffe in der Debug-API

Debugschnittstellen

Debuggen in .NET Framework

Übersicht über das Debugging in der CLR

Debuggen (Referenz zur nicht verwalteten API)