Suche
Neues zum Debugging in Eclipse Oxygen

Eclipse IDE Debugging für Java-Entwickler

Sarika Sinha

© Shutterstock / Sadovski

Debugging gehört zu den wichtigsten Skills eines jeden Java-Entwicklers. Wir zeigen, welche grundlegenden Möglichkeiten Eclipse für das Debugging bietet. Außerdem werden fortgeschrittene Techniken besprochen und die Neuerungen zum Thema Debugging in Eclipse Oxygen vorgestellt.

Debugging ist ein Routine-Prozess, bei dem Bugs, Fehler und Abnormalitäten in Programmen lokalisiert und entfernt werden. Für jeden Java-Entwickler ist es unentbehrlich, sich Wissen und Fertigkeiten für effizientes Debuggen anzueignen. Erst so wird es möglich, auch subtilere Bugs zu finden, die während Code Reviews nicht entdeckt wurden oder immer nur dann auftreten, wenn ganz spezielle Bedingungen eintreffen. Die Eclipse Java IDE stellt zahlreiche Debugging Tools zur Verfügung sowie spezielle Views, die in der Debug-Perspektive gruppiert sind und Entwicklern dabei helfen, effizient und effektiv zu debuggen.

Die neueste Version der Eclipse Java Development Tools (JDT) enthält viele Verbesserungen und wurde im Rahmen des Eclipse Oxygen Release Train veröffentlicht. Dieser Artikel beginnt mit einem Guide, um Anfängern beim Debuggen unter die Arme zu greifen. Im zweiten Teil finden Sie fortgeschrittene Tipps zum Thema und erfahren, was Eclipse Oxygen Neues bezüglich Debugging zu bieten hat.

Guide für den Debugging-Schnellstart

Um Ihnen den Einstieg in das Debuggen von Java-Projekten so einfach wie möglich zu machen, haben wir hier ein paar praktische Tipps und Tools für Sie zusammengetragen. Legen wir los:

1. Ein Java-Programm starten und debuggen

Um ein Java-Programm in Eclipse zu debuggen, kann man einfach mit der rechten Maustaste im Package Explorer auf die Java-Editor Klassen-Datei klicken. Anschließend wählt man Debug As → Java Application aus oder nutzt stattdessen den Shortcut Alt + Shift + D, J.

Beide der oben genannten Aktionen erstellen eine neue Debug Launch Configuration und nutzen sie, um die Java-Anwendung zu starten.

In den meisten Fällen können User den Code während des Debuggens editieren und speichern, ohne das Programm neu starten zu müssen. Das funktioniert dank des Supports von HCR (Hot Code Replacement), das gezielt eingeführt wurde, um experimentelles Entwickeln und iteratives Trial-and-Error-Coding zu fördern.

2. Breakpoints

Ein Breakpoint ist ein Signal, das dem Debugger mitteilt, an einem bestimmten Punkt im Code die Ausführung des Programmes anzuhalten.

Um einen Breakpoint in Source Code zu bestimmen, kann man im linken Rand des Java-Editors rechtsklicken und Toggle Breakpoint auswählen. Alternativ kann man auch an dieser Stelle doppelklicken.

 

Die Breakpoints-Ansicht ermöglicht es, Breakpoints zu löschen bzw. zu deaktivieren sowie deren Einstellungen anzupassen.

Alle Breakpoints können aktiviert/deaktiviert werden, indem Skip All Breakpoints benutzt wird. Zudem können Breakpoints auch in den bzw. aus dem Workspace importiert und exportiert werden.

3. Debug-Perspektive

Die Debug-Perspektive bietet weitere Views, die für das Troubleshooting einer Anwendung (z.B. durch Breakpoints, Variablen, Debug, Konsole etc.) genutzt werden können. Wenn ein Java-Programm im Debug-Modus gestartet wird, werden User dazu angehalten, in die Debug-Perspektive zu wechseln.

  • Debug View – Visualisiert den Call Stack und bietet Operationen auf diesem an.
  • Breakpoints View – Zeigt alle Breakpoints an.
  • Variables/Expression View –Zeigt die deklarierten Variablen und ihre Werte. Drücke Strg+Shift+d oder Strg+Shift+i auf einer ausgewählten Variable oder Expression, um deren Wert anzuzeigen. Man kann außerdem eine permanente Überwachung für eine Expression/Variable einrichten, die dann in der Expressions view angezeigt wird, wenn das Debugging an ist.
  • Display View – Erlaubt es, den Wert einer Variable, Expression oder eines ausgewählten Textes während des Debuggens zu inspizieren.
  • Console View – Der Programm-Output wird hier angezeigt.

4. Stepping-Befehle

Die Eclipse-Plattform hilft Entwicklern beim Debuggen, indem Buttons in der Toolbar sowie Key Binding Shortcuts zur Kontrolle der Programm-Ausführung bereitgestellt werden.

Weitere Informationen über das Debugging finden sich unter Eclipse Stepping Commands Help.

Tools für Fortgeschrittene zum Debuggen komplexer Szenarios

Schauen wir uns nun fortgeschrittene Tipps und Tricks für das Debuggen von Java-Projekten an. Die Java Development Tool (JDT) in Eclipse beinhalten viele tolle Weiterentwicklungen für das Debuggen:

1. Watchpoints, Exception Breakpoints, Conditional Breakpoints

a. Watchpoints – Ein Watchpoint ist ein spezieller Breakpoint, der die Ausführung einer Applikation anhält, wann immer sich der Wert einer Expression oder eines Feldes verändert, ohne dass angegeben werden muss, wo das passiert. User können unter Breakpoint Properties angeben, ob sie die Ausführung stoppen wollen, wenn auf die Watch Expression AccessedModified oder beides zutrifft.

b. Exception Breakpoints – Ein Exception Breakpoint wird mittels Add Java Exception Breakpoint für eine „thrown exception“ spezifiziert.

Der Breakpoint für NullPointerException wird immer dann anhalten, wenn diese Exception ausgeworfen wird.

c. Condition Breakpoints – Eclipse User können auch eigene Konditionen erstellen, um die Aktivierung von Breakpoints zu beschränken.

 

Der Breakpoint wird hier nur dann aktiviert, wenn der Wert des Boolean b wahr ist. Man kann zudem einen Hit Count angeben, um die Ausführung beim n-ten Hit des Breakpoints zu stoppen. Der Breakpoint wird solange deaktiviert, bis er entweder neu aktiviert wird, sein Hit-Count verändert wird oder das Programm endet.

2. Remote Debugging

Die Eclipse IDE ermöglicht es auch, Anwendungen zu debuggen, die auf einer anderen Java Virtual Machine (JVM) oder sogar auf einer ganz anderen VM laufen. Man kann eine neue Debug-Konfiguration des Remote Java Application-Typs erstellen. Um Remote Debugging zu ermöglichen, muss man die Java-Anwendung mit bestimmten Flags starten. Der Verbindungstyp kann als „Socket Attach“ oder als „Socket Listen“ spezifiziert werden. „Socket Listen“ unterstützt eine Vielzahl an eingehenden Verbindungen.

Neue Features in Eclipse Oxygen

Im neuesten Eclipse-Java-IDE-Release sind einige weitere nützliche Features für das Debuggen hinzugekommen:

1. Tracepoints

Tracepoints sind ein neues Feature der Eclipse-Plattform, das es Usern erlaubt, Conditional Breakpoints zu setzen, die das Programm nicht anhalten sondern  Nachrichten ausgeben, ohne den Quellcode zu verunreinigen.

Tracepoints werden mithilfe des systrace-Templates erzeugt.

2. Trigger Points

Zudem können User nun Trigger-Points aktivieren. Für die Breakpoints in einem Workspace lässt sich ein Set an Trigger Points definieren.

Die Breakpoints, die von Triggern zunächst deaktiviert wurden, werden erst aktiv, wenn einer der Trigger Points ausgelöst wird. Alle Trigger werden deaktiviert, nachdem ein Trigger Point erreicht wurde. Nach dem Durchlauf sind die Trigger wieder aktiviert.

Jeder Breakpoint kann zum Trigger-Point gemacht werden, indem man in den Breakpoint-Einstellungen im Dialog- oder Detail-Menü der Breakpoints-View die entsprechende Checkbox anwählt.

In der Eclipse-IDE werden Trigger Points mit einem kleinen T gekennzeichnet, während es bei von Triggern unterdrückten Breakpoints ein durchgestrichenes T ist.

3. Logische Strukturen

In der Variablen-View zeigen Collection-Objekte ihre enthaltenen Elemente nun direkt an, statt wie zuvor die interne Struktur. Im Oxygen-Release sind logische Strukturen per Default aktiviert. Um stattdessen die interne Struktur anzuzeigen, kann „Show Logical Structure“ deaktiviert werden.

Im „Show Logical Structure“-Kontextmenü lässt sich die Anzeige je nach Belieben erstellen, anzeigen und bearbeiten.

4. Methoden-Ergebnisse nach Step-Operationen

Eine weitere Neuerung im Oxygen-Release sind Method Results. Während des Debugging wird das erste Methodenergebnis (‚return’ oder ‚throw’), das während der Schritte „Step Into“, „Step Over“ oder „Step Return“ entstanden ist, an der ersten Stelle der Variablen-View angezeigt.

5. Launch Groups

Ebenfalls neu in Oxygen ist, dass der Launch-Configuration-Typ einer Launch Group es ermöglicht, mehrere Launch-Konfigurationen sequentiell zu starten. Dabei sind konfigurierbare Aktionen nach dem Start jedes Gruppenmitglieds möglich. Neue Launch-Gruppen können im Dialog Run → Run Configurations… oder Run → Debug Configurations… erstellt werden.

6. Breakpoints gruppieren und sortieren

In Eclipse Oxygen können Breakpoints nun nach verschiedenen Kategorien gruppiert werden. Die Option „Breakpoint Working Sets“ definiert eine Gruppe an Breakpoints. Auf die Workings Sets lassen sich dann verschiedene Aktionen wie aktiviert / deaktiviert anwenden.

Per Default sind Breakpoints nach ihrem Namen sortiert, was allerdings auch auf den Erstellzeitpunkt geändert werden kann.

Fazit

Damit sind wir mit unserem Rundgang durch die Debugging-Möglichkeiten in Eclipse am Ende angelangt. Wir haben uns die wichtigsten Tools sowie die Neuerungen in Eclipse Oxygen für das Debuggen von Java-Projekten angeschaut. Mehr Informationen zum Thema gibt es auf: Eclipse Remote Debugging Help.

Für eine tiefgehendere Betrachtung empfehlen wir außerdem:

Viel Spaß mit dem Debugging in Eclipse! Eclipse Oxygen steht hier zum Donwload bereit.

eclipseorb_color

Dieser Beitrag wurde ursprünglich in der Juni 2017 Ausgabe des Eclipse Newsletters: Eclipse Oxygen – A Breath of Fresh Air veröffentlicht.

Für mehr Informationen und Artikel abonnieren sie gerne den Eclipse Newsletter.

Geschrieben von
Sarika Sinha
Sarika Sinha
Sarika Sinha arbeitet als Advisory Staff Software Engineer bei IBM.
Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.