Java-Code mit JPDA debuggen: Protokolle vereinfachen den Prozess

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.

Page: 1 2 3

ZDNet.de Redaktion

Recent Posts

Microsoft stellt kleines KI-Modell Phi-3 Mini vor

Seine Trainingsdaten umfassen 3,8 Milliarden Parameter. Laut Microsoft bietet es eine ähnliche Leistung wie OpenAIs…

5 Tagen ago

Google schließt kritische Sicherheitslücke in Chrome

Sie erlaubt eine Remotecodeausführung außerhalb der Sandbox. Betroffen sind Chrome für Windows, macOS und Linux.

6 Tagen ago

Microsoft beseitigt Fehler im März-Sicherheitsupdate für Exchange Server

Probleme treten vor allem bei Nutzern von Outlook Web Access auf. Das optionale Hotfix-Update für…

6 Tagen ago

Neue iPads: Apple kündigt Event für 7. Mai an

Die Einladung zeigt einen zeichnenden Apple Pencil. Der wiederum deutet auf neue iPads hin. Es…

6 Tagen ago

EU-Parlament stimmt für Recht auf Reparatur

Die Richtlinie erhält 584 Ja-Stimmen und 3 Gegenstimmen. Das „Recht auf Reparatur“ beinhaltet unter bestimmten…

7 Tagen ago

Forscher entwickeln Exploits per GPT-4 aus Sicherheitswarnungen

Die Tests basieren auf tatsächlich existierenden Sicherheitslücken. GPT-4 erreicht eine Erfolgsquote von 87 Prozent. Alle…

1 Woche ago