Show TOC

BreakpointsLocate this document in the navigation structure

Verwendung

Neben dem direkten Ausführen eines ABAP-Programms im Debugger ist es möglich, durch exakte Wahl eines Haltepunktes den Debugger-Aufruf zu starten. Dies wird durch die Platzierung eines oder mehrer Haltepunkte im Programm, den sogenannten Breakpoints, erreicht. Ein Breakpoint ist ein Signal im Programm, das den ABAP-Laufzeitprozessor anweist, die Ausführung an einer bestimmten Position im Quelltext zu unterbrechen. Erst beim Erreichen dieser Position wird der Debugger aktiviert.

Eine weitere Spezifizierung stellen die Watchpoints dar. Mit den Watchpoints wird der Debugger erst dann aktiviert, sobald sich der Inhalt eines ausgewählten Feldes ändert. Weitere Informationen finden Sie unter Watchpoints.

Breakpoint-Varianten

In ABAP Debugger wird zwischen den folgenden Breakpoint-Varianten unterschieden:

Statisch

Ein benutzerunabhängiger Breakpoint wird durch das Schlüsselwort BREAK-POINT als ABAP-Anweisung im Quelltext eingefügt. Ein benutzerunabhängiger Breakpoint wird ebenfalls im ABAP-Editor durch die Anweisung BREAK Benutzernamen gesetzt.

Direkt gesetzte dynamische Breakpoints

Werden im ABAP Editor oder im Debugger zum Beispiel durch Doppelklick auf eine Zeile gesetzt. Dynamische Breakpoints sind immer benutzerabhängig und werden beim Abmelden vom SAP-System wieder gelöscht.

Breakpoints bei Anweisungen

Der Debugger unterbricht das Programm unmittelbar bevor die angegebene Anweisung ausgeführt wird.

Breakpoints bei Unterprogrammen

Der Debugger unterbricht das Programm unmittelbar bevor ein Unterprogramm aufgerufen wird.

Breakpoints bei Funktionsbausteinen

Der Debugger unterbricht das Programm unmittelbar bevor ein Funktionsbaustein aufgerufen wird.

Breakpoints bei Methoden

Der Debugger unterbricht das Programm unmittelbar bevor eine Methode aufgerufen wird..

Breakpoints bei Ausnahmen und System-Exceptions

Der Debugger unterbricht das Programm unmittelbar nach Auslösung eines Laufzeitfehlers.

Statische Breakpoints

Statische Breakpoints sind ohne Angabe eines Benutzernamens immer benutzerunabhängig. Sobald ein Benutzer einen statischen Breakpoint im ABAP-Quelltext mit der Anweisung BREAK-POINT oder BREAK name gesetzt hat, hält das Programm bei jedem Benutzer oder nur beim Benutzer name an dieser Stelle an. Dieses Vorgehen ist nur in der Entwicklungsphase einer Anwendung sinnvoll, wenn die Programmausführung stets an der gleichen Stelle unterbrochen werden soll. Weitere Informationen finden Sie im Kapitel Statische Breakpoints.

In HTTP-Sitzungen wird ein statischer Breakpoint übersprungen, wenn nicht zusätzlich dynamische HTTP-Breakpoints im Editor einer BSP-Seite gesetzt wurden. Statt dessen wird ein entsprechender SysLog-Eintrag geschrieben, der mit Transaktion SM21überprüft werden kann.

Dynamische Breakpoints

Dynamische Breakpoints sind benutzerabhängig. Sie sollten daher verwendet werden, wenn das Programm nur unterbrochen werden soll, solange Sie es selbst ausführen, nicht jedoch bei der Ausführung durch andere Benutzer. Beim Abmelden vom SAP-System werden alle dynamischen Breakpoints automatisch gelöscht.

Dynamische Breakpoints sind flexibler als statische Breakpoints, da sie zur Laufzeit gelöscht oder deaktiviert werden können. Daraus ergeben sich folgende Vorteile:

  • Keine Veränderung des Programm-Quelltextes

  • Setzen auch bei Sperre des zu testenden Programms durch anderen Entwickler möglich

  • Möglichkeit, einen Zähler zu definieren, der den Breakpoint nur bei dessen Erreichen aktiviert.

    Der Einsatz von speziellen dynamischen Breakpoints bietet sich vor allem dann an, wenn ein Programm unmittelbar vor der Ausführung eines bestimmten Ereignisses unterbrochen werden soll, die genaue Stelle des betreffenden Ereignisses im Quelltext jedoch unbekannt ist. Mit Ereignis ist hier zum Beispiel das Eintreffen einer bestimmten Anweisung oder der Aufruf einer Methode gemeint. Spezielle dynamische Breakpoints sind benutzerabhängig. Sie können nur im Debugger gesetzt werden. Weitere Informationen finden Sie unter Dynamische Breakpoints.

    In HTTP-Sitzungen wird sowohl bei statischen als auch bei dynamischen Breakpoints angehalten, wenn vor der Programmausführung ein dynamischer Breakpoint im Editor einer BSP-Seite gesetzt wurde.

Lebensdauer und Übernahme von Breakpoints

Ein statischer Breakpoint bleibt immer erhalten, so lange die Anweisungen BREAK-POINT oder BREAK-POINT_name nicht aus dem Quelltext entfernt werden. Dynamische Breakpoints bleiben ohne Sicherung nur im jeweiligen internen Modus erhalten. Sie sind aber während der gesamten Benutzersitzung wirksam, sobald sie im Menü Anfang des Navigationspfads Breakpoints Nächster Navigationsschritt Sichern des Ende des Navigationspfads ABAP-Debuggers gesichert werden. Einzelheiten zum Thema Benutzersitzungen und Modi sind im Kapitel Modularisierungstechniken der ABAP-Schlüsselwortdokumentation beschrieben.

Wird während einer Benutzersitzung eine HTTP-Sitzung aufgerufen, dann werden zu Beginn der HTTP-Sitzung nur die HTTP-Breakpoints geladen. Das HTTP-Debugging wird im ABAP-Editor durch das Menü Anfang des Navigationspfads Hilfsmittel Nächster Navigationsschritt Einstellungen Nächster Navigationsschritt HTTP-Debugging Ende des Navigationspfads aktiviert. Je nach Einstellung werden dann im Editor entweder die HTTP- oder die Standard-Breakpoints angezeigt.

Wird während einer Benutzersitzung eine Verbuchungssitzung aufgerufen, dann werden Breakpoints, die zuvor in der aufrufenden Verarbeitungseinheit vereinbart wurden, in die neue Verbuchungssitzung übernommen und können dort unter Breakpoints angezeigt werden. Wenn im ABAP-Debugger unter Einstellungen der Punkt Verbuchungs-Debugging angekreuzt und dann zum Beispiel mit CALL FUNCTION func IN UPDATE TASK der Verbuchungsbaustein func aufgerufen wurde, dann wird ein Fenster geöffnet, in dem man diesen Funktionsbaustein in der Verbuchungssitzung debuggen kann. Hier können auch alle Breakpoints bearbeitet werden, die in der aufrufenden Verarbeitungseinheit gesetzt wurden.

Weitere Einzelheiten zu speziellen Breakpoints finden Sie unter:

Breakpoints bei Anweisungen

Breakpoints bei Unterprogrammen

Breakpoints bei Funktionsaufrufen

Breakpoints bei Methoden

Breakpoints bei System-Exceptions