Remote Debugging mit Eclipse
Tutorial: Remote Debugging mit Eclipse
Einführung
Nicht jedes Java Programm kann auch direkt aus Eclipse und damit per Mausklick im Debug Modus gestartet werden. Dennoch ist es möglich, den Eclipse-Debugger zu nutzen, um Java-Programme zu untersuchen. Hierzu kann die JVM, die das Programm ausführt, so konfiguriert werden, daß Eclipse mit einer Remote Debugging Session mit der Virtual Machine verbunden werden kann.
Java Startparameter
Damit die Möglichkeit besteht, die JVM remote zu debuggen, muß diese per Startparameter dazu gebracht werden, einen Remote Debugging Port zu öffnen.
Wird das Java-Programm über die Kommandozeile gestartet, dann können dem 'java'-Aufruf direkt folgende Parameter übergeben werden:
java -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 ....
- suspend=y/n
- bestimmt ob die JVM mit der Ausführung wartet, bis sich ein Debugger mit ihr verbunden hat oder nicht
- address=5005
- legt den Port fest, über den sich der Debugger mit der JVM verbinden kann.
Wird das Programm nicht über die Konsole, sondern über ein ANT-Skript gestartet, so werden die Parameter dem Java Target in dem entsprechenden Build-Skript übergeben.
<java classname="org.cocome.tradingsystem.inventory.application.ApplicationFactory" fork="true"> <jvmarg value="-Xdebug"/> <jvmarg value="-Xnoagent"/> <jvmarg value="-Djava.compiler=NONE"/> <jvmarg value="-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"/> ... </java>
Die Parameter haben die gleiche Bedeutung wie bei dem direkten Aufruf über die Kommandozeile.
Eclipse Remote Debugging Session
Um eine Remote Debugging Session in Eclipse zu starten sollte ein Projekt im Workspace selektiert werden. Wenn möglich jenes, das auch den Code des zu untersuchenden Programms enthält. Danach wählt man im Menü den Punkt Run -> Debug. Ein neues Fenster wird geöffnet, in welchem man eine neue Remote-Debugging-Konfiguration anlegen kann. Das folgende Bildschirm-Photo zeigt eine Beispielkonfiguration, die den gleichen Port wie zuvor bei den Startparametern verwendet.
Unter dem Reiter Source können die Quellen des zu debuggenden Programms definiert werden.
Um eine bestimmte Code Stelle zu untersuchen, empfiehlt es sich, dort einen Breakpoint anzulegen. Dies geschieht, indem man den Code im Eclipse Java Editor öffnet und über einen Mausklick in den linken Randbereich einen Breakpoint anlegt.
Wird diese Stelle bei der Verarbeitung erreicht, so fragt Eclipse, ob man zu der Debug-Perspektive wechseln möchte (sofern man sich nicht bereits in dieser befindet, oder den Wechsel bereits vorher dauerhaft abgelehnt oder bestätigt hat). In dieser Perspektive ermöglicht der Debug View eine Sicht auf alle laufenden Threads der JVM, und die Verarbeitung kann mittels der Icons am oberen Rand Schritt für Schritt fortgesetzt werden.
Darüber hinaus können die einzelnen Variabeln, die in dem aktuellen Code-Ausschnitt sichtbar sind, in der Variables View samt ihrem Inhalt betrachtet werden.
Weitergehende Informationen
Für die Bildschirm-Photos wurde Eclipse in der Version 3.2.2 Build M20070212-1330 verwendet.
Soll mehr als eine JVM debugged werden, so ist zu beachten, daß unterschiedliche Ports sowohl in den Java-Aufrufen, als auch in den einzelnen Debuggern definiert werden müssen.
Weitergehende Informationen sind auch auf der Eclipse Website zu finden.