Freigeben über


Breakpoint-bezogene Methoden

Eine Debug-Engine (DE) muss das Setzen von Haltepunkten unterstützen. Das Debuggen von Visual Studio unterstützt die folgenden Typen von Haltepunkten:

  • Gebunden

    Angefordert über die Benutzeroberfläche und erfolgreich an einen angegebenen Codespeicherort gebunden

  • Ausstehend

    Angefordert über die Benutzeroberfläche, aber noch nicht an tatsächliche Anweisungen gebunden

Diskussion (Discussion)

Beispielsweise tritt ein ausstehender Haltepunkt auf, wenn die Anweisungen noch nicht geladen werden. Wenn der Code geladen wird, versuchen ausstehende Haltepunkte, eine Bindung an Code an der vorgeschriebenen Position, d. h. zum Einfügen von Unterbrechungsanweisungen in den Code. Ereignisse werden an den Sitzungsdebug-Manager (SDM) gesendet, um eine erfolgreiche Bindung anzugeben oder zu benachrichtigen, dass Bindungsfehler aufgetreten sind.

Ein noch nicht aktivierter Haltepunkt verwaltet auch seine eigene interne Liste der entsprechenden gebundenen Haltepunkte. Ein ausstehender Haltepunkt kann dazu führen, dass viele Haltepunkte in den Code eingefügt werden. Die Visual Studio-Debug-Benutzeroberfläche zeigt eine Strukturansicht ausstehender Haltepunkte und der entsprechenden gebundenen Haltepunkte an.

Für die Erstellung und Verwendung von ausstehenden Haltepunkten ist die Implementierung der IDebugEngine2::CreatePendingBreakpoint-Methode sowie die folgenden Methoden von IDebugPendingBreakpoint2-Schnittstellen erforderlich.

Methode Description
CanBind Bestimmt, ob ein definierter ausstehender Haltepunkt an einen Codeort gebunden werden kann.
Binden Bindet einen angegebenen schwebenden Haltepunkt an eine oder mehrere Codepositionen.
GetState- Ruft den Status eines ausstehenden Haltepunkts ab.
GetBreakpointRequest Ruft die Breakpoint-Anforderung ab, die verwendet wird, um einen Pending Breakpoint zu erstellen.
Aktivieren Schaltet den aktivierten Status eines ausstehenden Haltepunkts um.
EnumBoundBreakpoints Listet alle Unterbrechungspunkte auf, die von einem ausstehenden Unterbrechungspunkt gebunden sind.
EnumErrorBreakpoints Listet alle Fehlertrennpunkte auf, die aus einem ausstehenden Haltepunkt resultieren.
Löschen Löscht einen ausstehenden Haltepunkt und alle damit verknüpften Haltepunkte.

Um die gebundenen Haltepunkte und Fehlerhaltepunkte aufzulisten, müssen Sie alle Methoden von IEnumDebugBoundBreakpoints2 und von IEnumDebugErrorBreakpoints2 implementieren.

Wartende Haltepunkte, die an eine Codestelle gebunden sind, erfordern die Implementierung der folgenden IDebugBoundBreakpoint2-Methoden.

Methode Description
GetPendingBreakpoint Ruft den ausstehenden Haltepunkt ab, der einen Haltepunkt enthält.
GetState- Ruft den Status eines gebundenen Haltepunkts ab.
GetBreakpointResolution Ruft die Haltepunktauflösung ab, die einen Haltepunkt beschreibt.
Aktivieren Aktiviert oder deaktiviert einen Haltepunkt.
Löschen Löscht einen gebundenen Haltepunkt.

Lösungs- und Anforderungsinformationen erfordern die Implementierung der folgenden IDebugBreakpointResolution2-Methoden .

Methode Description
GetBreakpointType Ruft den Typ des Haltepunkts ab, der durch eine Auflösung dargestellt wird.
GetResolutionInfo Ruft die Haltepunktauflösungsinformationen ab, die einen Haltepunkt beschreiben.

Die Lösung von Fehlern, die während der Bindung auftreten können, erfordert die Implementierung der folgenden IDebugErrorBreakpoint2-Methoden .

Methode Description
GetPendingBreakpoint Ruft den anstehenden Haltepunkt ab, der einen Fehlerhaltepunkt enthält.
GetBreakpointResolution Ruft die Fehler-Haltepunktauflösung ab, die einen Fehler-Haltepunkt beschreibt.

Die Lösung von Fehlern, die während der Bindung auftreten können, erfordert auch die folgenden Methoden von IDebugErrorBreakpointResolution2.

Methode Description
GetBreakpointType Ruft den Typ eines Haltepunkts ab.
GetResolutionInfo Ruft die Auflösungsinformationen eines Haltepunkts ab.

Zum Anzeigen des Quellcodes an einem Haltepunkt müssen Sie die Methoden IDebugStackFrame2::GetDocumentContext und/oder IDebugStackFrame2::GetCodeContext implementieren.

Siehe auch