Ich weiß, dass einige JAVA_OPTS
festgelegt werden müssen, um ein Java-Programm remote zu debuggen.
Was sind sie und was bedeuten sie?
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
*:1044
dass das Remote-Debugging von jedem Computer aus aktiviert wirdVor 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:Optionen
-Xrunjdwp
oderagentlib: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.quelle
Xrunjdwp
veraltet (oder entfernt?), Warum sollten wir darüber nachdenkenagentlib: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:quelle
Für Java 1.5 oder höher:
Für Java 1.4:
Für Java 1.3:
Hier wird von einem einfachen Programm ausgegeben:
quelle
Java
address
Gibt den Port an, an dem das Debuggen möglich istMaven
** Spring Boot App mit Maven debuggen:
quelle
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.
quelle
Befehlszeile
Gradle
Maven
quelle
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/
quelle