Depuración remota de una aplicación Java


Tengo una aplicación java ejecutándose en una máquina linux. Corro la aplicación java usando lo siguiente:

java myapp -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000, suspend=n

He abierto el puerto 4000 para TCP en esta máquina Linux. Utilizo eclipse desde la máquina Windows XP e intento conectarme a esta aplicación. He abierto el puerto en windows también.

Ambas máquinas están en la LAN pero parece que no puedo conectar el depurador a la aplicación Java. ¿Qué estoy haciendo mal?

Author: dzidzitop, 2009-06-10

5 answers

Edit: He notado que algunas personas están cortando y pegando la invocación aquí. La respuesta que di originalmente era relevante solo para el OP. Aquí hay un estilo de invocación más moderno (incluido el uso del puerto más convencional de 8000):

java -agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n <other arguments>

La respuesta original sigue.


Prueba esto:

java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n myapp

Dos puntos aquí:

  1. No hay espacios en la opción runjdwp.
  2. Las opciones vienen antes del nombre de la clase. Cualquier argumento que tenga después del nombre de la clase son argumentos a su programa!
 412
Author: Chris Jester-Young,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-09 02:44:01

Para JDK 1.3 o anterior :

-Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6006

Para JDK 1.4

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

Para JDK más nuevo :

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

Cambie el número de puerto según sus necesidades.

De java technotes

A partir de la versión 5.0 se usa la opción-agentlib:jdwp para cargar y especificar opciones al agente JDWP. Para versiones anteriores a 5.0, el Xdebug y Se utilizan las opciones-Xrunjdwp (la implementación 5.0 también admite las opciones-Xdebug y-Xrunjdwp, pero - agentlib: opción jdwp es preferible ya que el agente JDWP en 5.0 utiliza la interfaz JVM TI a la VM en lugar de la antigua interfaz JVMDI)

Una cosa más a tener en cuenta, de JVM Tool interface documentation :

JVM TI se introdujo en JDK 5.0. JVM TI reemplaza la Interfaz Java Virtual Machine Profiler (JVMPI) y la Interfaz Java Virtual Machine Debug (JVMDI) que, a partir de JDK 6, ya no se proporcionan.

 71
Author: Sairam Krish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-02 07:02:01

Pasos:

  1. Inicie su aplicación java remota con opciones de depuración como se dijo en el post anterior.
  2. Configure Eclipse para la depuración remota especificando host y puerto.
  3. Inicie la depuración remota en Eclipse y espere a que la conexión se realice correctamente.
  4. Configurar el punto de interrupción y depurar.
  5. Si desea depurar desde el inicio de la aplicación use suspend=y , esto mantendrá la aplicación remota suspendida hasta que se conecte desde eclipse.

Ver Paso guía paso a paso sobre Java remote debugging para más detalles.

 27
Author: Gaurav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-16 12:09:22

Así es como debe configurar Eclipse Debugger para la depuración remota:

Preferencias de Eclipse:

1.Haga clic en el botón Ejecutar
2.Seleccione las Configuraciones de Depuración
3.Seleccione la "Aplicación Java remota"
4.Nueva Configuración

  • Nombre: GatewayPortalProject
  • Proyecto: GatewayPortal-portlet
  • Tipo de conexión: Enchufe Adjunto
  • Propiedades de conexión: i) localhost ii) 8787

Para JBoss:

1.Cambie /path/toJboss/jboss-eap-6.1/bin/standalone.conf en su máquina virtual de la siguiente manera: Descomente la siguiente línea eliminando el#:

JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n"

Para Tomcat:

En catalina.bat archivo:

Paso 1:

CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

Paso 2:

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

Paso 3: Ejecute Tomcat desde el símbolo del sistema como a continuación:

catalina.sh jpda start

Luego debe establecer puntos de interrupción en las clases Java que desea depurar.

 0
Author: Pritam Banerjee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-28 22:48:22

La mejor opción de depuración es crear registros y analizarlos. Pero en algunos casos necesitamos depurar la aplicación web desplegada en el servidor.

Ver Depurar remotamente una aplicación web java enlace. El flujo completo de depuración remota se describe aquí. Espero que ayude.

 -6
Author: Sulabh Jain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-08 14:46:13