generate java spring eclipse debugging spring-boot

java - generate - ¿Cómo se puede depurar la aplicación Spring Boot con Eclipse?



spring boot war (10)

Cómo depurar una aplicación remota de etapas o producción Spring Boot

Lado del servidor

Supongamos que ha seguido con éxito la guía de Spring Boot sobre la configuración de su aplicación Spring Boot como servicio . El artefacto de su aplicación reside en /srv/my-app/my-app.war , acompañado de un archivo de configuración /srv/my-app/my-app.conf :

# This is file my-app.conf # What can you do in this .conf file? The my-app.war is prepended with a SysV init.d script # (yes, take a look into the war file with a text editor). As my-app.war is symlinked in the init.d directory, that init.d script # gets executed. One of its step is actually `source`ing this .conf file. Therefore we can do anything in this .conf file that # we can also do in a regular shell script. JAVA_OPTS="-agentlib:jdwp=transport=dt_socket,address=localhost:8002,server=y,suspend=n" export SPRING_PROFILES_ACTIVE=staging

Cuando reinicie su aplicación Spring Boot con sudo service my-app restart , entonces en su archivo de registro ubicado en /var/log/my-app.log debe aparecer una línea que diga Listening for transport dt_socket at address: 8002 .

Cliente-lado (máquina del desarrollador)

Abra un túnel de reenvío de puertos SSH al servidor: ssh -L 8002:localhost:8002 [email protected] . Mantenga esta sesión SSH ejecutándose.

En Eclipse, desde la barra de herramientas, seleccione Ejecutar -> Configuraciones de depuración -> seleccione Aplicación Java remota -> haga clic en el botón Nuevo -> seleccione como Tipo de conexión estándar (Socket Attach) , como host local host y como puerto 8002 (o lo que sea que tenga) configurado en los pasos anteriores). Haga clic en Aplicar y luego en Depurar .

El depurador de Eclipse ahora debe conectarse al servidor remoto. El cambio a la perspectiva de depuración debería mostrar la JVM conectada y sus subprocesos. Los puntos de interrupción deberían dispararse tan pronto como se desencadenen de forma remota.

Spring Boot web My Spring Boot funciona perfectamente y me gustaría depurarla a través de Eclipse.

Entonces, cuando ejecute mi depurador de la Aplicación Java Remota, ¿qué puerto debería escuchar? ¿Y hay alguna configuración en mi aplicación web que deba configurar para habilitar la depuración?


¿Por qué no simplemente haces clic derecho en el método main() y eliges "Debug As... Java Application" ?


Con eclipse o cualquier otro IDE, simplemente haga clic derecho en su aplicación principal de arranque de primavera y haga clic en "depurar como aplicación Java"


Consulte http://java.dzone.com/articles/how-debug-remote-java-applicat para habilitar la depuración remota. Si está utilizando tomcat para ejecutar su aplicación, inicie tomcat con parámetros remotos de depuración o puede iniciar tomcat con soporte JPDA utilizando el siguiente comando.

Windows

<tomcat bin dir>/startup.bat jpda

*nada

<tomcat bin dir>/startup.sh jpda

esto habilitará la depuración remota en el puerto 8000


Ejecutar debajo del comando donde se coloca pom.xml :

mvn spring-boot:run -Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005"

Y inicie su aplicación java remota con la opción de depuración en el puerto 5005


Esta pregunta ya está respondida, pero también tengo el mismo problema para depurar Springboot + gradle + jHipster,

La aplicación de inicio de Spring en su mayoría puede depurarse haciendo clic con el botón derecho y depurar, pero cuando se usa gradle, con algunos ajustes de parámetros de entorno adicionales, no se puede depurar directamente.

Para resolver esto, Eclipse proporcionó una característica adicional como Aplicación Java Remota

mediante el uso de estas características puede depurar su aplicación.

Sigue el paso siguiente:

ejecuta tu aplicación gradle con ./gradlew bootRun --debug-jvm command

Ahora vaya a eclipse -> haga clic derecho en proyecto y configuración de depuración -> Aplicación Java remota.

agregarle host y puerto como localhost y puerto como 5005 (predeterminado para depuración de gradle, puede cambiarlo)

Refer para obtener más detalles y paso.


Hay una sección 19.2 en Spring Boot Reference que le informa sobre cómo iniciar su aplicación con el soporte de depuración remota habilitado.

$ java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=8000,suspend=n / -jar target/myproject-0.0.1-SNAPSHOT.jar

Después de iniciar la aplicación, simplemente agregue la configuración de la Aplicación Java Remota en las configuraciones Ejecutar / Depurar, seleccione el puerto / dirección que definió al iniciar su aplicación, y luego podrá depurarla.


La mejor solución en mi opinión es agregar un complemento en pom.xml, y no necesita hacer nada más todo el tiempo:

<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <jvmArguments> -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9898 </jvmArguments> </configuration> <executions> <execution> <goals> <goal>repackage</goal> </goals> </execution> </executions> </plugin>


No necesité configurar la depuración remota para que funcione, utilicé Maven.

  1. Asegúrese de tener el plugin Maven instalado en Eclipse.
  2. Haga clic en Ejecutar> Ejecutar configuraciones> Maven Build> nueva configuración de inicio :
    • Directorio base: busque la raíz de su proyecto
    • Objetivos: spring-boot::run .
  3. Haga clic en Aplicar y luego en Ejecutar .

NÓTESE BIEN. Si su IDE tiene problemas para encontrar el código fuente de su proyecto al realizar la depuración línea por línea, eche un vistazo a esta respuesta SO para averiguar cómo adjuntar manualmente su código fuente a la aplicación de depuración.

¡Espero que esto ayude a alguien!


Una solución más fácil:

En lugar de escribir mvn spring-boot:run , simplemente escriba mvnDebug spring-boot:run

Deberá adjuntar el depurador en Eclipse creando una nueva configuración de depuración para una "aplicación Java remota" en el puerto correspondiente.