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

Gefährliche Anzeigen für Passwortmanager Bitwarden verbreiten Malware

Die Hintermänner haben es unter anderem auf Daten von Facebook-Geschäftskonten abgesehen. Opfer werden über angebliche…

3 Tagen ago

Public Cloud: Gartner erwartet 2025 weltweite Ausgaben von 723 Milliarden Dollar

Bis 2027 werden 90 Prozent der Unternehmen eine Hybrid-Cloud-Strategie umsetzen.

3 Tagen ago

iPhone 15 ist bestverkauftes Smartphone im dritten Quartal

Apple belegt in der Statistik von Counterpoint die ersten drei Plätze. Samsungs Galaxy S24 schafft…

3 Tagen ago

So günstig & effizient war Content Produktion noch nie: Neues Content System erobert deutschen Markt

Kontinuierliche Content Produktion und Markenaufbau sind essentieller Pfeiler von langfristigen Unternehmenserfolg. Das ist mittlerweile auch…

3 Tagen ago

Lenovo übertrifft die Erwartungen und hebt Prognose an

KI-Funktionen beschleunigen die Erholung des PC-Markts. Der Nettogewinn legt um 44 Prozent zu, der Umsatz…

4 Tagen ago

Bedrohungsakteure betten Malware in macOS-Flutter-Anwendungen ein

Googles App-Entwickler-Kit dient der Tarnung des schädlichen Codes. Der Sicherheitsanbieter Jamf hält die Schadsoftware für…

4 Tagen ago