Debugger

Aus SAP-Wiki
Wechseln zu: Navigation, Suche

Der Debugger ermöglicht zur Laufzeit eine Codeanalyse von ABAP Programmen, Funktionsbausteinen und Web Dynpros u. a. Das Coding kann hier zeilen- und modulabschnittsweise durchlaufen werden. Der Codingablauf kann während der Laufzeit inklusive der Variablenwerte analysiert werden.

Ab Release 6.40 steht ein Neuer Debugger zur Verfügung. Es kann zwischen dem Neuer Debugger und dem alten Debugger gewählt werden. Der Debugger kann auch während des Debuggens gewechselt werden.

Ab Release 7.00 ist der neue ABAP Debugger der Standarddebugger. Hier wird der neue Debugger mit seinen wichtigsten Funktionen vorgestellt.

Neuer Debugger

Break-Points

Es gibt verschiedene Möglichkeiten bei der Programmausführung in den Debugger zu wechseln

/h

  • "/h" im Kommandofenster eingeben. Der Debugger wird sofort am Anfang des Programms ausgeführt. Empfehlenswert, wenn das Programm vom Programmstart an debuggt werden soll.
/h

Systemdebugging mit /hs

  • "/hs" im Kommandofenster eingeben. Der Debugger wird sofort am Anfang des Programms gestoppt, inklusive der Programmteile, die den Status "Systemprogramm" haben. Das Systemdebugging ist normalerweise nicht notwendig. Wenn jedoch ein Programm debuggt werden soll, was den Status "Systemprogramm" hat, dann macht dieser Debuggingmodus Sinn.
/hs
  • Das Systemdebugging wird nur für den aktuellen Modus aufrechterhalten. In einem neuen Modus müsste das Systemdebugging erneut explizit gestartet werden
  • Hier wird das Debugging eines Reports ZREBTEST im Systemdebugging-Modus gestartet
  • Als erstes erscheint im Debugger der Include "SAPMSSYD"

DebuggerSystem2.jpg


  • Man sieht in den Eigenschaften des Includes, dass er den Status "Systemprogramm" hat. Dieses Programm würde bei einem normalen Debugging nicht angezeigt werden.

DebuggerSystem3.jpg

break <benutzername>

  • break <benutzername> im Coding schreiben. Das Programm stoppt nur beim SAP-Benutzer <benutzername>. Empfehlenswert, wenn das Programm an einer bestimmten Stelle in den Debugger springen soll und man selber das Programm debuggen will. Hier ist es auch unproblematisch, wenn man vergisst den Breakpoint bei einem Transport zu löschen, da bei anderen SAP-Usern der Sprung in den Debugger nicht erfolgt.
break eberstein.

break-point

  • break-point. Hier springt das Programm bei jedem SAP-Benutzer mit Debuggerberechtigung in den Debugger. Es ist dringend zu empfehlen diesen Befehl nur mit Vorsicht zu nutzen. Es ist peinlich, wenn im Qualitäts- oder Produktivsystem andere Benutzer oder gar der Fachwender mit Debuggerberechtigung ungewollt in den Debugger springen. Hier ist z. B. "break <benutzername> vorzuziehen.
  • Vor jedem Transport ins Qualitätssystem und besonders in Produktivsystem sollte das Code um diese Breakpoints bereinigt werden.
break-point.

break-point id <checkpoint>

  • Transaktion SAAB. Der Breakpoint lässt sich flexibel in der Transaktion SAAB aktivieren oder deaktivieren, sofern der Entwickler die Berechtigung für die Transaktion SAAB hat.
break-point id testcheckpoint.

Modus-Breakpoint im Editor

  • Setzen eines Modus-Breakpoint im Editor. Hier muss der Breakpoint im gleichen Mandanten gesetzt werden. Dies ist ein gewisser Nachteil, da häufig Entwicklung in einem Entwicklungsmandanten vorgenommen wird und das Ausführen des Programms mit Daten in einem anderen Mandanten.
  • Klick auf die entsprechende Zeile im Editor (z. B. Transaktion SE38 oder SE80) in der beigen Leiste. Auch während der Programmausführung im Debugger kann hier ein Modus-Breakpoint gesetzt werden. Wird im Debugger der Modus-Breakpoint gelöscht durch Doppelklick auf den Breakpoint, wirkt sich das zunächst nur für den aktuellen Programmlauf aus. Soll der Modus-Breakpoint auch bei erneuter Ausführung des Programms gelöscht bleiben, muss im Debugger der/die Modus-Breakpoints durch DebuggerNew11.jpg gespeichert werden.

DebuggerNew9.jpg

Das Programm stoppt an der entsprechenden Stelle.

DebuggerNew10.jpg

Modus-Breakpoint im Debugger

  • Setzen eines Breakpoints im Debugger. Hier wird der Breakpoint allerdings nur für den aktuellen Debugginglauf gesetzt, es sei denn, man speichert den Breakpoint mit strg+s oder dem Diskettensymbol DebuggerNew11.jpg. Dann bleibt der Breakpoint während der ganzen SAP-Anmeldung im System erhalten, sofern er nicht wieder gelöscht wird.
  • Wird der Schreibcursor im Debugger im Programmablauf nach der aktuellen Programmzeile gesetzt, so stoppt das Programm auch an dieser Stelle. Man spart sich so das Löschen des Breakpoints, wenn eine Codingstelle nur einmal angesprungen werden soll.

Breakpoint setzen mit "Breakpoint bei .."

  • Man ruft den Debugger zunächst ganz normal über einen dynamischen Breakpoint, "/h" oder den Schlüsselbefehl eines Breakpoints.

BreakpointBei1.JPG


Hier kann man weitere Breakpoints setzen über das Stopp-Zeichen im Menü des Debuggers.

BreakpointBei2.JPG


Im Coding wird nun nach jeder Fundstelle des Schlüsselbefehls "message" gesucht und ein Breakpoint gesetzt.

BreakpointBei3.JPG


Die 2 Codingstellen mit dem Schlüsselbefehl "message" sind nun mit einem Breakpoint versehen.

BreakpointBei4.JPG

Transaktion SAAB

In der Transaktion SAAB kann man Checkpoint-Gruppen definieren. Im Coding kann man auf diese Checkpoint-Gruppe verweisen

break-point id ZTEST.

In der Transaktion SAAB kann man dann für diese Checkpoint-Gruppe einstellen, ob dieser dynamische Break-Point an dem Tag aktiv sein soll. Das Programm spring dann für den eigenen User an dem heutigen Datum in dem aktuellen System in den Debugger, sofern die Debugging-Berechtigung vorhanden ist.

Modularisierungseinheiten

Ein Programm kann aus lediglichen einem Hauptprogramm bestehen, aber meist wird man ein Programm kapseln in Modulierungseinheiten, was der Übersicht sehr zugute kommt und ein Programm wesentlich einfacher pflegbar macht. Je nach Anforderung und Detaillierungsgrad in

  • Methode einer globalen Klasse
  • Methode einer lokalen Klasse
  • Funktionsbaustein
  • Form-Routine
  • Module (im PBO/PAI)

Die Modulierungseinheiten können beim Debugging als Ganzes ausgeführt werden (Tastenkürzel F6) oder man debuggt in die Einheiten mit Einzelschritt (Tastenkürzel F5). Soll die Modularisierungseinheit verlassen werden und das nachfolgende Coding angesprungen werden (Tastenkürzel F7).

Tastenkürzel/Shortcuts (F5, F6, F7, F8, etc.)

Suche nach Coding mit strg+f

  • Oft möchte man beim Debuggen spontan eine bestimmte Stelle aufrufen. Hier kann mit der Tastenkombination "strg+f" ein Suchfenster öffnen. Hier ist es oft empfehlenswert die Checkbox "Genauer Wortlaut" rauszunehmen, damit nicht nur nach kompletten Worten gesucht wird, sondern auch Teilstrings von Worten. Wenn man den genauen Wortlaut kennt, sollte man diese Checkbox jedoch auswählen, um die Treffenliste kurz zu halten
  • In "Suchen nach" gibt man den gesuchten String ein. Nach ENTER oder "Weiter suchen" sucht er im aktuellen Programm nach dem String und markiert ihn. Mit "weiter" werden weitere Fundstellen angesprungen.
  • Hier im Beispiel wird nach "fill_itab_primaerver" gesucht und er findet die Form-Routine ""fill_itab_primaerverp", da die Checkbox "Genauer Wortlaut" deaktiviert ist.

DebuggerNew16.jpg

Watchpoint

Reiter "Standard"

DebuggerNew26.jpg

Aufrufhistorie "ABAP und Dynpro-Stack"

Extrem nützlich ist es, dass man an der Stelle, wo der Debugger sich gerade befindet, die Aufrufhistorie des Programmeinheiten (Perform, Methode, Funktionsbaustein, PAI, etc.) zu sehen ist unter "ABAP und Dynpro Stack".

DebuggerAufrufh1.jpg

Es ist auch möglich in der Aufrufhistorie (Stack) rückwärts zu springen. Wie hier zum Beispiel zum Programmereignis "Start-of-Selection". Dann kann man sich hier auch direkt die dort gültigen Variablen anzeigen lassen. Wenn man z. B. den Variableninhalt über den Programmablauf analysieren möchte, kann diese Navigation im Programmablauf einem viel Zeit sparen.

Lokale und Globale Variablen

Ist der obere Reiter "Standard" aktiv, dann kann man unten rechts mit dem Reiter "Locals" sich die lokalen Variablen der Modularisierungseinheit (hier Methode) anschauen und mit dem Reiter "Globals" die globalen Variablen.


An diesem Symbol sieht man, dass hier CV_ERROR ein Changing-Parameter der Methode ist.

DebuggerNew21.jpg


ME ist die Selbstreferenz auf das Objekt, in dem das Coding ausgeführt wird.

DebuggerNew22.jpg


Unter "Globals" sieht man die globalen Variablen des Programms.

DebuggerNew23.jpg


Hier sieht man einige Variablen, die nur innerhalb der Methode lokal definiert sind, z. B. LT_FCAT und LT_SORT.

DebuggerNew24.jpg


In der Methode ALV_FCAT ist ein Returningparameter FT_FCAT zu sehen.

DebuggerNew25.jpg

Variablenwerte im Debugger ändern

Häufig möchte man im Debugger zu Testzwecken Variablen ändern. Dies ist standardmäßig erlaubt im Debugger, sofern es nicht explizit durch die Berechtigungsvergabe ausgeschlossen wird, was bei manchen Kundensystemen aus Sicherheitsgründen gemacht wird.

Hier ist in der Variablen LV_SEE_LUFTFRACHT kein Wert. Durch den Check würde die Routine verlassen. Das möchte man nun nicht.

DebuggerNew12.jpg

Man holt sich die Variable in die Anzeige durch Doppelklick auf die Variable. Nun kann man den Variablenwert ändern durch Klick auf den Bleistift DebuggerNew13.jpg. Im Feld "Wert" wird nun ein "S" eingetragen und mit ENTER bestätigt.

DebuggerNew14.jpg

Der Debugger prüft nun erfolgreich CHECK und der weitere Programmablauf kann ohne Probleme debuggt werden.

DebuggerNew15.jpg

Debuggerdesktop sichern

Debugger - window start max sichten.jpg

Anmerkung: Pro Desktop sind maximal vier Desktopsichten möglich.

Desktop mit arrangierten Sichten sichern/laden

Debugger - Sichten sichern.jpg

Bereits gesicherte Sitzungen, können hier durch den Menüpunkt 'Laden' wieder hergestellt werden.

Debugger - sichten sichern Dialog AnFr.jpg

Der Sitzungsname START_UP ist ein vordefinierter Sitzungsname, der beim Debuggerstart verwendet wird.

Debugging Laufzeitfehler/Shortdump (Transaktion ST22)

Debugger Bugs

Hintergrundjob debuggen

SAP-Popupbildschirm debuggen

Web-Links

SAP-Bibliothek
Debugger (alt & neu)
  • SAP NetWeaver® Process Integration 7.1 SPS 11, November 2010
SAP-Bibliothek
Debugger (alt & neu)
  • SAP NetWeaver® 7.0 einschließlich Enhancement Package 1 Support Package Stack 07 und BI Content Add-On 4 SP 03, Juli 2010
SAP-Bibliothek
Debugger (alt & neu)
Debugger (alt)

Literatur