L.Raed
Ludwig-Maximilians-Universitt Mnchen a u Institut fr Informatik u Programmierung und Softwaretechnik Prof. Wirsing
L.Raed (LMU/PST)
1 / 37
Inhaltsverzeichnis
1
Debugging Motivation und Einfhrung u Beispiel Debug Perspectives Perspective Uberblick Debug View Variables View Breakpoints View Expressions View Debug Editor View Display View Debugging Techniken Wichtige Techniken Technik 1: Single Stepping Technik 2: Resuming Execution Technik 3: Breakpoints kongurieren
L.Raed (LMU/PST) Einheit 06: Debugging in Eclipse January 22, 2010 2 / 37
Debugging
Motivation
Testen mit JUnit
JUnit testet lediglich die Erfllung von einer Menge von Tests. u Tritt ein Fehler auf, so kann JUnit nicht das WARUM antworten. JUnit Fehlermeldung, besagen WAS falsch war, nicht WARUM. Das Suchen nach dem WARUM kann sehr schwer und komplex sein.
L.Raed (LMU/PST)
3 / 37
Debugging
Einfhrung in Debugging u
L.Raed (LMU/PST)
4 / 37
Debugging
Beim Auftreten von logischen Fehlern. JUnit fehlgeschlagen: Fehler werden nicht auf Anhieb gefunden! JUnit erfolgreich: Trotzdem unerklrliches Fehlverhalten tritt auf! a Die Ausfhrung wird bei Fehler verursachende Stellen gestoppt. u Die aktuellen Werte der Feld-und Lokalvariablen werden betrachtet. Anhand der aktuellen Werte der Variablen werden Fehler gefunden. Debugging benutzt Breakpoints um die Ausfhrung zu stoppen. u Erreicht der Compiler einen Breakpoint, wird die Ausfhrung gestoppt. u Debugging starten: Breakpoints setzen dann Debugging starten.
L.Raed (LMU/PST)
5 / 37
Debugging
Beispiel
Debugging Beispiel
1
Breakpoints setzen
Doppelklick den Marker Bar links zum Code. ODER: verdchtigen Code markieren: Run Toggle Line Breakpoint a
Debugging starten
Run Debug As Java Application.
L.Raed (LMU/PST)
6 / 37
Debugging
Beispiel
L.Raed (LMU/PST)
7 / 37
Debugging
Beispiel
Breakpoints setzen
Doppelklick den Marker Bar links zum Code. ODER: verdchtigen Code markieren: Run Toggle Line Breakpoint. a Ein Breakpoint erscheint im Marker Bar links zum Code. (Zeile 8)
L.Raed (LMU/PST)
8 / 37
Debugging
Beispiel
Debugging starten
1 2
Run Debug (F11) ODER Debug As Java Application . ODER: Debugsymbol Dreieck Pfeil Debug As Java Application .
L.Raed (LMU/PST)
9 / 37
Debug Perspectives
Perspective Uberblick
L.Raed (LMU/PST)
10 / 37
Debug Perspectives
Perspective Uberblick
L.Raed (LMU/PST)
11 / 37
Debug Perspectives
Debug View
Debug View
1 2 3 4 5
Editor Bereich(links): enthlt Eintrgen zu dem debugging Programm a a Resume Button: startet das Ausfhren erneut an. u Suspend Button: hlt die Ausfhrung(z.B. bei unendlichen Schleifen). a u Terminate Button: stoppt das Debugging. STEP Techniken: zum Springen zwischen den Codezeilen.
L.Raed (LMU/PST) Einheit 06: Debugging in Eclipse January 22, 2010 12 / 37
Debug Perspectives
Debug View
Drop To Frame:
Springt zu dem selektierten Stack in dem Editor Bereich. Funktioniert nicht beim top Frame und Native Methoden!
Debug Perspectives
Variables View
Variables View
Variables View
ist im uberlappenden View Fenster(rechts oben). listet alle lokalen Variablen und deren aktuellen Werte (Name, Value)
Debug Perspectives
Breakpoints View
Breakpoints View
Breakpoints View
ist im uberlappenden View Fenster(rechts oben). listet alle Breakpoints: Klasse[line:nr] -methode. verwaltet die gesetzten Breakpoints in dem Code.
Debug Perspectives
Breakpoints View
L.Raed (LMU/PST)
16 / 37
Debug Perspectives
Expressions View
Expressions View
Expressions View
WindowShow ViewExpressions erscheint im uberlappenden View Fenster(rechts oben).
L.Raed (LMU/PST)
17 / 37
Debug Perspectives
Expressions View
L.Raed (LMU/PST)
18 / 37
Debug Perspectives
Debug Editor View ist das Quellcode Fenster (mitte links) Debug Editor View zeigt den Code und wo der Compiler gerade ist.
L.Raed (LMU/PST) Einheit 06: Debugging in Eclipse January 22, 2010 19 / 37
Debug Perspectives
L.Raed (LMU/PST)
20 / 37
Debug Perspectives
L.Raed (LMU/PST)
21 / 37
Debug Perspectives
L.Raed (LMU/PST)
22 / 37
Debug Perspectives
Display View
Display View
Displays View
Window Show View Display erscheint im untern View Fenster neben Console/Task View.
Debug Perspectives
Display View
L.Raed (LMU/PST)
24 / 37
Debugging Techniken
Wichtige Techniken
Wichtige Techniken
SINGLE STEPPING mit den 5 Stepping Methoden. RESUMING EXCUTION bis zum nchsten Breakpoint. a BREAKPOINT KONFIGURATION: (Breakpoint Hit, Bedingungen) JUnit-Fehlermeldung lassen vermuten, wo man Breakpoints setzen soll. Soll/Ist Vergleich lassen vermuten, wo man Breakpoints setzen soll. 5! soll 120, ist 0. Breakpoint: return x*berechneFakultaetVom(x-1). In Variables View: Werte der Variablen ndern, Programm testen. a Im Debug-Editor: Code dort anpassen/ndern, Programm testen. a In Expressions View: Expressions evaluairen.
L.Raed (LMU/PST)
25 / 37
Debugging Techniken
(Step into F5): Springt zu der nchsten Anweisung. a (Step over F6): Springt uber die nchste Anweisung. a (Step Return F7):fhrt Methode aus und springt zurck. u u (Drop To Frame): Springt zu dem selektierten Stack im Editor. (Use Step Filters): bercksichtigt Filter Kongurationen. u Stepping Methoden sind sehr langsam und mhsam u Stepping Methoden sind sehr genau und grndlich u Step Into, Step Over und Step Return werden huftig verwendet. a Use Step Filters wird zur Verfeinerung mit Filter benutzt. Filter: WindowsPreferencesJavaDebugSTEP Filtering Drop To Frame: bestimmte Schritt(e) zurck kehren. u
L.Raed (LMU/PST)
26 / 37
Debugging Techniken
Springt zur nchsten -ausgewhlten- Anweisung. a a Bei Methodenaufruf-Anweisung wird rein in die Methode gesprungen. Die erste Anweisung der aufgerufenen Methode wird ausgefhrt. u Nchste Step-Into springt zur nchsten Zeile in der Methode, usw. a a Ist die Methode zu Ende, springt die Ausfhrung zur } u Alle lokalen Variablen der Methode erscheinen in Variables-View. Nchste Step-Into springt zur Anweisung nach dem Methodenaufruf. a
Alle -aufgerufenen- Methoden werden grndlich untersucht! u Step Into hilfreich, wenn man alles sehr grndlich untersuchen will. u
Sehr aufwendig, da die Ausfhrung Zeile fr Zeile luft/stoppt. u u a Bei bereits erfolgreichen getesteten Methoden macht dies wenig Sinn!
Einheit 06: Debugging in Eclipse January 22, 2010 27 / 37
L.Raed (LMU/PST)
Debugging Techniken
L.Raed (LMU/PST)
28 / 37
Debugging Techniken
Konstruktur wird aufgerufen und Feldvariablen automatisch initialisiert. Im Variables View: this anklicken: x=10, y=20, z=0 (Feldvariablen) Die Ausfhrung stoppt bei dem Breakpoint ohne sie auszufhren. u u Also t1 in Zeile 18 ist im Variables View noch nicht zu sehen!
L.Raed (LMU/PST)
29 / 37
Debugging Techniken
Breakpoint Anweisung wird ausgewertet (Zeile 18: int t1=5) Die neue lokale Variable erscheinen im Variables View (t1=5) Die Ausfhrung springt zur nchsten Anweisung Zeile 19 und stoppt. u a
L.Raed (LMU/PST)
30 / 37
Debugging Techniken
L.Raed (LMU/PST)
31 / 37
Debugging Techniken
L.Raed (LMU/PST)
32 / 37
Debugging Techniken
Set up die Debug Perspective: varialbe markieren Rechter Mausklick Watch (Dies addiert die Vairablewert zu dem Expression View) Resume Button anklicken: Code wird bis zum nchsten Breakpoint a ausgefhrt und dort gestoppt. u
L.Raed (LMU/PST)
33 / 37
Debugging Techniken
Macht Sinn bei einem Code, der n mal hinter einander aufgerufen wird. Z.B. bei Schleifen, Iterationen, rekursive Methoden Ein Breakpoint in dem Breakpoint View auswhlen Rechter a Mausklick Properties Enable Hit Count aktivieren die Zahn n eingeben.
L.Raed (LMU/PST)
34 / 37
Debugging Techniken
Multithreaded Debugging Watchpoints: Feldvariable markieren: run Toggle Watchpoint Method Breakpoint: Methodenaufruf markieren: run Toggle Method Breakpoint. Dies macht Sinn beim Aufruf von Methoden, deren Sourccode nicht vorliegt. Z.B. aus JAR Files. Exception Breakpoint. stoppt das Programm, wenn Exceptions eintreten: run Toggle Exception. Dann erscheint eine Liste von mglichen Exception. o
L.Raed (LMU/PST)
35 / 37
Debugging Techniken
Neu Expression hinzufgen: Expressions View Editor rechter u Mausklick run Add Watch Expression Variablenwert nderen: Variable View value Wert anklicken a ndern. a
L.Raed (LMU/PST)
36 / 37
Debugging Techniken
Hot Code Replacement (ab JRE 1.4+) = In JDT Debugging Editor den Wert einer Variable ndern. a Project Build Automatically aktivieren. Editiere eine Variable ndere ihren Wert Sepcihern Resume a execution
L.Raed (LMU/PST)
37 / 37