Falls man Socket als Transport verwenden muss, sollte man die Art des Transports im entsprechenden JVM-Argument mit dem Namen dt_socket angeben. Falls sich Debugger und Debuggee auf demselben Windows-Rechner befinden, kann man auch den Shared-Memory-Connector mit dem Namen dt_shmem verwenden. Will man seine Anwendung mit einem JPDA-konformen Debugger debuggen, sollte man diesen einfach mit aktiviertem Debug-Modus ausführen und zusätzliche Parameter wie Art des Transports, Hostnamen und Port-Nummern sowie weitere Informationen übergeben. Alle JPDA- und Debugging-Parameter müssen beim Start der Anwendung als Argumente der Java VM übergeben werden.
Um Debugging zu aktivieren, sollte der JDWP-Agent zum Debuggen in die JVM der Anwendung geladen werden. Seit Java 5.0 kann man dies mit der Option -agentlib:jdwp erreichen. Bei älteren Releases als 5.0 werden die Optionen -Xdebug und -Xrunjdwp verwendet. Die 5.0-Implementierung unterstützt außerdem die Optionen -Xdebug und -Xrunjdwp, aber die neuere Option –agentlib:jdwp sollte bevorzugt verwendet werden, da der JDWP-Agent in 5.0 das JVMTI-Interface statt des älteren JVMDI-Interfaces als Verbinndung zur VM verwendet. Es ist empfehlenswert, dem jeweiligen Parameter (-agentlib:jdwp in Java 5.0 oder -Xrunjdwp vor Java 5.0) weitere Suboptionen mitzugeben. Die möglichen Suboptionen sind bei beiden Parametern identisch.
Die Suboptionen werden wie folgt angegeben:
-agentlib:jdwp=<name1>[=<value1>],<name2>[=<value2>]...
oder
-Xrunjdwp:<name1>[=<value1>],<name2>[=<value2>]...
Die folgenden Optionen stehen zur Verfügung:
- help: Gibt einen kurzen Benutzungshinweise aus und beendet die VM.
- server: („n“ oder „y“) Bei „y“ wird auf die Verbindung mit einer Debugger-Anwendung gewartet, ansonsten wird die Verbindung mit der Debugger-Anwendung unter der angegebenen Adresse hergestellt.
- address: Transport-Adresse für die Verbindung. Wenn server=n ist, wird versucht, die Verbindung zur Debugger-Anwendung unter dieser Adresse herzustellen. Wenn server=y ist, wird auf eine Verbindung unter dieser Adresse gewartet.
- timeout: Wenn server=y ist, gibt dies die Zeit in Millisekunden an, die auf die Verbindung mit dem Debugger gewartet wird. Wenn server=n ist, gibt dies den Timeout in Millisekunden an, der für die Verbindung mit dem Debugger verwendet wird.
- suspend: Falls „y“, unterbricht die JVM die Ausführung, bis ein Debugger mit der JVM des Debuggees verbunden ist.
Hier ein paar Beispiele für Kommandozeilen:
-agentlib:jdwp=transport=dt_socket,server=y,address=8000
Wartet auf eine Socket-Verbindung auf Port 8000. Hält die VM an, bis die Klasse main geladen wurde (suspend=y ist Defaulteinstellung). Sobald die Verbindung mit der Debugger-Anwendung hergestellt ist, kann sie einen JDWP-Befehl senden, um die VM wieder zu starten.
-agentlib:jdwp=transport=dt_shmem,server=y,suspend=n
Wählt eine verfügbare Transport-Adresse für Shared Memory und gibt diese an stdout aus. Wartet auf eine Shared-Memory-Verbindung unter dieser Adresse. Erlaubt die Ausführung der VM, ehe die Verbindung zur Debugger-Anwendung hergestellt ist.
-agentlib:jdwp=transport=dt_socket,address=myhost:8000
Stellt die Verbindung zu einer laufenden Debugger-Anwendung per Socket auf dem Host myhost an Port 8000 her. Hält diese VM an, bis die Klasse main geladen wurde.
Neueste Kommentare
Noch keine Kommentare zu Java-Code mit JPDA debuggen: Protokolle vereinfachen den Prozess
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.