389 Stimmen

Welche Java-Befehlszeilenoptionen müssen gesetzt werden, damit die JVM aus der Ferne debuggt werden kann?

Ich weiß, es gibt einige JAVA_OPTS zu setzen, um ein Java-Programm aus der Ferne zu debuggen.

Was sind sie und was bedeuten sie?

516voto

paulgreg Punkte 17653

Vor Java 5.0, verwenden Sie -Xdebug et -Xrunjdwp Argumente. Diese Optionen werden auch in späteren Versionen noch funktionieren, aber es wird im interpretierten Modus anstelle von JIT laufen, was langsamer sein wird.

Ab Java 5.0 ist es besser, die -agentlib:jdwp einzige Option:

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

Optionen auf -Xrunjdwp ou agentlib:jdwp Argumente sind:

  • transport=dt_socket Socket: bezeichnet die Art und Weise, wie eine Verbindung zur JVM hergestellt wird (Socket ist eine gute Wahl, da es zur Fehlersuche auf einem entfernten Computer verwendet werden kann)
  • address=8000 : Freigegebener TCP/IP-Port, um vom Debugger aus eine Verbindung herzustellen,
  • suspend=y Wenn 'y', soll die JVM warten, bis der Debugger angeschlossen ist, um mit der Ausführung zu beginnen, andernfalls (wenn 'n') wird die Ausführung sofort gestartet.

375voto

Hans Sjunnesson Punkte 21002

Ich habe 本論文 mit Lesezeichen versehen, um dies für Java 5 und darunter einzurichten.

Grundsätzlich führen Sie es mit :

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

Für Java 5 und höher , führen Sie es mit aus:

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

118voto

Antony Shumskikh Punkte 1092

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

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

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

13voto

thebiggestlebowski Punkte 2392

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

10voto

Jovi Qiao Punkte 81

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 Debugging erlaubt wird

Maven

**Spring Boot Anwendung mit Maven debuggen:

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X