Welche Java-Befehlszeilenoptionen müssen festgelegt werden, damit JVM remote debuggt werden kann?

Lesezeit: 4 Minuten

Welche Java Befehlszeilenoptionen mussen festgelegt werden damit JVM remote debuggt werden
paulgreg

Ich weiß, es gibt welche JAVA_OPTS um ein Java-Programm remote zu debuggen.

Was sind sie und was bedeuten sie?

Welche Java Befehlszeilenoptionen mussen festgelegt werden damit JVM remote debuggt werden
paulgreg

Verwenden Sie vor Java 5.0 -Xdebug und -Xrunjdwp Argumente. Diese Optionen funktionieren auch in späteren Versionen, aber sie werden im interpretierten Modus statt im langsameren JIT ausgeführt.

Ab Java 5.0 ist es besser, die zu verwenden -agentlib:jdwp Einzeloption:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044

Optionen an -Xrunjdwp oder agentlib:jdwp Argumente sind:

  • transport=dt_socket : bedeutet die Art und Weise, wie eine Verbindung zu JVM hergestellt wird (Socket ist eine gute Wahl, es kann zum Debuggen eines entfernten Computers verwendet werden)
  • address=8000 : Offengelegter TCP/IP-Port, um eine Verbindung vom Debugger herzustellen,
  • suspend=y : Wenn ‘y’, sage der JVM, dass sie warten soll, bis der Debugger angeschlossen ist, um mit der Ausführung zu beginnen, andernfalls (wenn ‘n’), beginne die Ausführung sofort.

  • Du hast genau recht.. Ich habe es mit probiert -Xdebug und -Xrunjdwp aber es hat nicht funktioniert. als ich es mit versuchte -Xrunjdwp oder agentlib:jdwp Es funktioniert. (auf Java 7)

    – RoboAlex

    1. Juni 2012 um 6:02 Uhr

  • Dies funktionierte nur bei mir, wenn ich es in Anführungszeichen setzte, sonst bekam ich diesen Fehler: FEHLER: JDWP-Nicht-Server-Transport dt_socket server=y suspend=y address=8000 must have a connection address selected through the ‘address=’ option

    – Ring

    21. April 2016 um 15:19 Uhr

  • Ist Xrunjdwp veraltet (oder entfernt?), warum sollten wir auswählen agentlib:jdwp darüber?

    – ArtOfWarfare

    29. April 2016 um 17:08 Uhr

  • Ich denke du liegst falsch. Netbeans verwendet -Xdebug -Xrunjdwp beim Debuggen von Maven-Projekten, und sie laufen, als wären sie JITed.

    – Aleksandr Dubinsky

    30. Mai 2016 um 13:47 Uhr

1646354827 658 Welche Java Befehlszeilenoptionen mussen festgelegt werden damit JVM remote debuggt werden
Hans Sjunnesson

Ich habe Dieser Beitrag mit Lesezeichen versehen, um dies für Java 5 und darunter einzurichten.

Grundsätzlich führe es mit aus:

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044

Zum Java 5 und höherführen Sie es aus mit:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044

  • Erwähnenswert ist, dass Sie Ihre Adresse möglicherweise konfigurieren möchten *:1044 um das Remote-Debugging von jedem Computer aus zu ermöglichen

    – Herr Derb

    24. August 2018 um 11:58 Uhr


  • HerrDerb hat recht.. Seit Java 9 hört “address=1044” nicht immer auf allen Interfaces. “address=*:1044” bewirkt, dass sich Java 9+ wie Java 8 verhält …

    – Alfonx

    5. September 2018 um 13:47 Uhr

  • Nur eine Anmerkung: Es ist nicht benötigt um die hinzuzufügen address Parameter. Falls nicht angegeben, wählt der Agent eine zufällige Portnummer aus. Dies kann nützlich sein, wenn Sie mehrere Knoten in derselben Java-Befehlszeile starten.

    – asbachb

    1. Juli 2020 um 14:57 Uhr


  • es ist auch sicherer zu bedienen address=localhost:<debug port> vs nur Auswahl des Ports

    – Entschlüsselt

    5. November 2020 um 23:28 Uhr

Seit Java 9.0 unterstützt JDWP standardmäßig nur noch lokale Verbindungen.
http://www.oracle.com/technetwork/java/javase/9-notes-3745703.html#JDK-8041435

Für das Remote-Debugging sollte man das Programm mit ausführen *: in Adresse:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000

  • Nur eine Anmerkung: Der Oracle-Link besagt, dass dies das gleiche alte Verhalten erreichen wird, aber es ist nicht sicher und wird nicht empfohlen.

    – Chanseok Oh

    7. März 2019 um 18:41 Uhr

  • Ja, ich habe einige Tage damit verschwendet, diese Antwort für docker-compose, docker swarm debug remote with inteliji zu finden, mach einfach genau (mit *:): Adresse=*:5005

    – nobjta_9x_tq

    12. November 2021 um 19:01 Uhr

Welche Java Befehlszeilenoptionen mussen festgelegt werden damit JVM remote debuggt werden
thebiggestlebowski

Für Java 1.5 oder höher:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>

Für Java 1.4:

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>

Für Java 1.3:

java -Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>

Hier ist die Ausgabe eines einfachen Programms:

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044 HelloWhirled
Listening for transport dt_socket at address: 1044
Hello whirled

Welche Java Befehlszeilenoptionen mussen festgelegt werden damit JVM remote debuggt werden
Jovi Qiao

Java

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8001,suspend=y -jar target/cxf-boot-simple-0.0.1-SNAPSHOT.jar

address gibt den Port an, an dem das Debuggen möglich ist

Maven

**Spring Boot-App mit Maven debuggen:

mvn spring-boot:run -Drun.jvmArguments=**"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8001"

1646354828 661 Welche Java Befehlszeilenoptionen mussen festgelegt werden damit JVM remote debuggt werden
BuZZ-dEE

Befehlszeile

-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=PORT_NUMBER

Gradl

gradle bootrun --debug-jvm

Maven

mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=PORT_NUMBER

Hier ist die einfachste Lösung.

Wenn Sie Maven verwenden, sind viele spezielle Umgebungskonfigurationen erforderlich. Wenn Sie also Ihr Programm von maven aus starten, führen Sie einfach die aus mvnDebug Befehl statt mvn, kümmert es sich darum, Ihre App mit konfiguriertem Remote-Debugging zu starten. Jetzt können Sie einfach einen Debugger an Port 8000 anhängen.

Es kümmert sich um alle Umweltprobleme für Sie.

929180cookie-checkWelche Java-Befehlszeilenoptionen müssen festgelegt werden, damit JVM remote debuggt werden kann?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy