jdk - ¿Cuáles son las opciones de línea de comandos de Java para configurar para permitir que JVM sea depurada de forma remota?
java 8 (6)
Sé que hay algunos JAVA_OPTS para configurar para depurar remotamente un programa Java.
¿Qué son y qué significan?
Java
java -Xdebug -Xrunjdwp: transporte = dt_socket, servidor = y, dirección = 8001, suspender = y -jar destino / cxf-boot-simple-0.0.1-SNAPSHOT.jar
address
especifica el puerto en el que permitirá la depuración.
Maven
Depure Spring Boot con Maven: mvn spring-boot: ejecute -Drun.jvmArguments = "-Xdebug -Xrunjdwp: transport = dt_socket, server = y, suspend = y, address = 8001"
Antes de Java 5.0, use los argumentos -Xdebug
y -Xrunjdwp
. Estas opciones aún funcionarán en versiones posteriores, pero se ejecutarán en modo interpretado en lugar de JIT, que será más lento.
Desde Java 5.0, es mejor usar la opción única de -agentlib:jdwp
:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044
Las opciones en los -Xrunjdwp
o agentlib:jdwp
son:
-
transport=dt_socket
: significa la forma en que se usa para conectarse a JVM (el socket es una buena opción, se puede usar para depurar una computadora distante) -
address=8000
: puerto TCP / IP expuesto, para conectarse desde el depurador, -
suspend=y
: si ''y'', dile a la JVM que espere hasta que el depurador esté conectado para comenzar la ejecución; de lo contrario (si ''n''), comienza la ejecución de inmediato.
Desde Java 9.0 JDWP solo admite conexiones locales de forma predeterminada. http://www.oracle.com/technetwork/java/javase/9-notes-3745703.html#JDK-8041435
Para la depuración remota se debe ejecutar el programa con *:
en la dirección:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000
Hay muchos problemas ambientales si está utilizando Maven. Entonces, si inicia su programa desde maven, simplemente ejecute el comando mvnDebug
en lugar de mvn
y adjunte un depurador en el puerto 8000. Usted se encarga de todos los problemas ambientales.
Para java 1.5 o superior:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>
Para java 1.4:
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>
Para Java 1.3:
java -Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>
Aquí está la salida de un programa simple:
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044 HelloWhirled
Listening for transport dt_socket at address: 1044
Hello whirled
Tengo este artículo marcado en la configuración de Java 5 y más abajo.
Básicamente ejecutarlo con :
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044
Para Java 5 y superior , ejecútalo con:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=1044