remoto remote modo mkyong intellij how for enable debug debugging tomcat

debugging - remote - tomcat debug port default



Tomcat no se apagó (7)

Cuando agrego las siguientes opciones de Java para habilitar la depuración:

JAVA_OPTS="$JAVA_OPTS -noverify -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005"

Me aparece el siguiente error cada vez que trato de cerrar el tomcat:

ERROR: transport error 202: bind failed: Address already in use ["transport.c",L41] ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510) ["debugInit.c",L500] JDWP exit error JVMTI_ERROR_INTERNAL(113): No transports initializedFATAL ERROR in native method: JDWP No transports initialized, jvmtiError=JVMTI_ERROR_INTERNAL(113)


El problema es que su tomcat todavía se está ejecutando en el puerto de depuración (5005) o en algún otro servicio que se ejecute en el mismo puerto (5005).

Si tomcat aún se está ejecutando, puedes matarlo

  • si está en el entorno Linux ps-ef | grep java , e identifica la identificación del proceso. y mata el proceso usando sudo kill -9 .
  • Si en el entorno de Windows llegó al administrador de tareas y matar el proceso de Tomcat y Java.

Ahora debería poder iniciar el servidor en estado de depuración sin ningún problema.

Esto puede suceder en la prueba de la unidad de depuración a través de la herramienta (eclipse) que se ha ejecutado a través del maven. Para sole esto puedes hacer fluir el mismo proceso.

Primero cierre el Eclipse y mate también el proceso de java y vuelva a iniciarlo.


Está intentando depurar tomcat al inicio, por lo que se une al puerto 5005 cuando se inicia el jvm.

Cuando ejecuta catalina.sh stop , inicia otra jvm que también intenta vincularse al puerto 5005.

Necesitas mover los argumentos de depuración a la ejecución e iniciar los argumentos (en catalina.sh ) de tomcat, ponerlos directamente en el JAVA_OPTS es la causa del problema que estás teniendo.


Esto se debe a que ambas aplicaciones están escuchando el mismo número de puerto, es decir, 8000 mientras se ejecuta en modo de depuración.

Una solución rápida es cambiar el puerto de depuración a 8001 en startup.bat

SET DEBUGPORT=8001


Gracias por una agradable breve explicación, PHath! Siguiendo su consejo, encontré que la mejor manera de resolver el problema es simplemente usar CATALINA_OPTS en lugar de JAVA_OPTS .

Al mirar en catalina.sh, se puede ver que CATALINA_OPTS solo se usa con los comandos "start" y "start-security", mientras que JAVA_OPTS también se usa con el comando "stop" (al menos con Tomcat 6.0.33 en openSUSE 12.1).

Al menos si tiene instalado Tomcat en Linux utilizando un administrador de paquetes, entonces la modificación de la variable CATALINA_OPTS en /etc/tomcat6/tomcat6.conf (o cualquier ruta en su distribución) es más limpia que cambiar el script catalina.sh directamente, para el administrador de paquetes asume que el usuario solo cambia los archivos de configuración y quebrantar esta suposición puede ocasionar problemas al actualizar los paquetes Tomcat (por ejemplo, configuraciones perdidas porque el archivo catalina.sh se sobrescribe).

Creo que uno debería preferir CATALINA_OPTS sobre JAVA_OPTS no solo para JDWP, sino también para muchas otras opciones: por ejemplo, si uno usa la opción de tamaño de montón -Xmx ... entonces sería razonable ponerlo en CATALINA_OPTS, como el comando "detener" no necesita mucho montón.


Parece que el puerto 5005 ya está en uso. Verifique los puertos abiertos con el comando netstat .

Esto puede deberse a que ya has abierto Tomcat. Verifica tus procesos.


Parece que está iniciando Tomcat con el Depurador habilitado. Esto hace que la JVM se una al Proceso de Depuración. Sin embargo, en catalina.sh hay una declaración de caso para inicio, detención, reinicio, etc., etc. Emitir el comando de detención aún agrega esto ya que es parte de su Global JAVA_OPTS e intenta iniciar el depurador escuchando en el mismo puerto para el comando de apagado. Si elimina la dirección = 50005 de su JAVA_OPTS o usa los comandos jdpa de inicio para iniciar la máquina virtual con el depurador, esto solucionará su problema.

Observe catalina.sh por defecto en la última distribución de Tomcat si necesita una copia limpia. Parece que alguien ha realizado cambios dentro de los suyos que no son válidos y hacen que JDPA se ejecute al iniciar, detener, cualquier comando emitido.


configure JPDA_ADDRESS = 8001 en catalina.bat, es decir, puerto de depuración y cambie los 3 puertos en server.xml