Sé que hay algunos JAVA_OPTS
para configurar para depurar remotamente un programa Java.
¿Qué son y qué significan?
Tengo este artículo marcado como favorito para configurar esto para Java 5 y siguientes.
Básicamente ejecútalo con :
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044
Para Java 5 y superior , ejecútelo con:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=1044
*:1044
para habilitar la depuración remota desde cualquier computadoraAntes de Java 5.0, uso
-Xdebug
y-Xrunjdwp
argumentos. Estas opciones seguirán funcionando 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
-agentlib:jdwp
opción única:Las opciones
-Xrunjdwp
oagentlib:jdwp
argumentos son:transport=dt_socket
: significa la forma en que se conecta 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 es 'y', dígale a la JVM que espere hasta que se adjunte el depurador para comenzar la ejecución; de lo contrario (si 'n'), comienza la ejecución de inmediato.fuente
Xrunjdwp
desuso (o eliminado)? ¿Por qué lo elegiríamosagentlib:jdwp
?-Xdebug -Xrunjdwp
al depurar proyectos de Maven, y se ejecutan como si estuvieran JIT.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 un programa con la
*:
dirección de entrada:fuente
Para java 1.5 o superior:
Para java 1.4:
Para java 1.3:
Aquí está la salida de un programa simple:
fuente
Java
address
especifica el puerto en el que permitirá depurarMaven
** Depurar la aplicación Spring Boot con Maven:
fuente
Aquí está la solución más fácil.
Hay muchas configuraciones especiales de entorno necesarias si está utilizando Maven. Entonces, si inicia su programa desde maven, simplemente ejecute el
mvnDebug
comando en lugar de hacerlomvn
, se encargará de iniciar su aplicación con la depuración remota configurada. Ahora puede adjuntar un depurador en el puerto 8000.Se encargará de todos los problemas ambientales para usted.
fuente
Línea de comando
Gradle
Maven
fuente
Aquí solo usamos un conector de conexión de socket, que está habilitado de forma predeterminada cuando se configura el transporte dt_socket y la VM se ejecuta en el modo de depuración del servidor.
Para obtener más detalles, puede consultar: https://stackify.com/java-remote-debugging/
fuente