Antworten:
Ich habe diesen Artikel mit einem Lesezeichen versehen, um ihn für Java 5 und niedriger einzurichten.
Grundsätzlich läuft es mit :
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044
Führen Sie es für Java 5 und höher aus mit:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=1044
Vor Java 5.0 verwenden -Xdebug
und -Xrunjdwp
Argumente. Diese Optionen funktionieren in späteren Versionen weiterhin, werden jedoch im interpretierten Modus anstelle von JIT ausgeführt, das langsamer ist.
Ab Java 5.0 ist es besser, die -agentlib:jdwp
einzige Option zu verwenden:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044
Optionen -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, kann zum Debuggen eines entfernten Computers verwendet werden)address=8000
: TCP / IP-Port verfügbar gemacht, um eine Verbindung vom Debugger herzustellen, suspend=y
: Wenn 'y', weisen Sie die JVM an, zu warten, bis der Debugger angeschlossen ist, um mit der Ausführung zu beginnen. Andernfalls (wenn 'n') wird die Ausführung sofort gestartet.Xrunjdwp
veraltet (oder entfernt?), Warum sollten wir darüber nachdenken agentlib:jdwp
?
-Xdebug -Xrunjdwp
beim Debuggen von Maven-Projekten verwendet und sie werden so ausgeführt, als wären sie JITed.
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 das Remote-Debugging sollte ein Programm mit der folgenden *:
Adresse ausgeführt werden:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000
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 wird von einem einfachen Programm ausgegeben:
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044 HelloWhirled
Listening for transport dt_socket at address: 1044
Hello whirled
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
** Spring Boot App mit Maven debuggen:
mvn spring-boot:run -Drun.jvmArguments=**"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8001"
Hier ist die einfachste Lösung.
Wenn Sie Maven verwenden, sind viele spezielle Umgebungskonfigurationen erforderlich. Wenn Sie Ihr Programm also von maven aus starten, führen Sie mvnDebug
stattdessen einfach den Befehl ausmvn
wird Ihre App mit konfiguriertem Remote-Debugging gestartet. Jetzt können Sie einfach einen Debugger an Port 8000 anschließen.
Es kümmert sich um alle Umweltprobleme für Sie.
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=PORT_NUMBER
Hier verwenden wir nur einen Socket Attaching Connector, der standardmäßig aktiviert ist, wenn der Transport dt_socket konfiguriert ist und die VM im Server-Debugging-Modus ausgeführt wird.
Weitere Informationen finden Sie unter: https://stackify.com/java-remote-debugging/
*:1044
dass das Remote-Debugging von jedem Computer aus aktiviert wird