web-dev-qa-db-fra.com

Comment déboguer une application Spring Boot avec Eclipse?

Mon application web Spring Boot fonctionne correctement et j'aimerais la déboguer via Eclipse.

Ainsi, lors du lancement de mon débogueur d’application distant Java, quel port dois-je écouter? Et y a-t-il un paramètre sur mon application Web que je dois définir pour activer le débogage?

91
JeffLL

Pourquoi ne faites-vous pas un clic droit sur la méthode main() et choisissez "Debug As... Java Application"?

153
Dave Syer

Il y a section 19.2 dans Spring Boot Reference qui vous explique comment démarrer votre application avec la prise en charge du débogage à distance activée.

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

Une fois que vous avez démarré votre application, ajoutez simplement Remote Java Configuration de l’application dans les configurations Exécuter/Déboguer, sélectionnez le port/l’adresse que vous avez définie lorsque à partir de votre application, vous êtes libre de déboguer.

83
masster

Solution plus facile:

Au lieu de taper mvn spring-boot:run, tapez simplement mvnDebug spring-boot:run

Vous devrez toujours joindre le débogueur dans Eclipse en créant une nouvelle configuration de débogage pour une "application distante Java" sur le port correspondant.

19
Duran Wesley Harris

Je n'avais pas besoin de configurer le débogage à distance pour que cela fonctionne, j'ai utilisé Maven.

  1. Assurez-vous que le plug-in Maven est installé dans Eclipse.
  2. Cliquez sur Exécuter> Exécuter les configurations> Construction Maven> nouvelle configuration de lancement :
    • Répertoire de base: accédez à la racine de votre projet
    • Objectifs: spring-boot::run.
  3. Cliquez sur Appliquer puis cliquez sur Exécuter .

NB Si votre IDE a des difficultés à trouver le code source de votre projet lors du débogage ligne par ligne, examinez this SO answer pour savoir comment procéder. attachez manuellement votre code source à l'application de débogage.

J'espère que ça aide quelqu'un!

17
DuffJ

Comment déboguer une application Spring Boot de stockage intermédiaire ou de production à distance

Du côté serveur

Supposons que vous avez bien suivi Guide de Spring Boot sur la configuration de votre application Spring Boot en tant que service . Votre artefact d’application réside dans /srv/my-app/my-app.war, accompagné d’un fichier de configuration /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

Lorsque vous redémarrez votre application Spring Boot avec Sudo service my-app restart, le fichier journal situé à l'emplacement /var/log/my-app.log doit contenir une ligne indiquant Listening for transport dt_socket at address: 8002.

Côté client (machine développeur)

Ouvrez un tunnel de transfert de port SSH sur le serveur: ssh -L 8002:localhost:8002 [email protected]. Gardez cette session SSH en cours d'exécution.

Dans Eclipse, dans la barre d’outils, sélectionnez Exécuter -> Configurations de débogage -> sélectionnez Distant Java Application -> cliquez sur le bouton Nouveau -> sélectionnez comme type de connexion standard (Socket Attach) , en tant qu'hôte localhost et en tant que port 8002 (ou tout ce que vous avez configuré dans les étapes précédentes). Cliquez sur Appliquer puis sur Debug .

Le débogueur Eclipse doit maintenant se connecter au serveur distant. Le passage à la perspective Debug devrait afficher la machine virtuelle Java connectée et ses threads. Les points d'arrêt doivent se déclencher dès qu'ils sont déclenchés à distance.

16
Abdull

Exécutez la commande ci-dessous où pom.xml est placé:

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

Et démarrez votre application _ distante Java avec l'option de débogage sur le port 5005

13
Arpit

La meilleure solution à mon avis est d’ajouter un plugin dans le fichier pom.xml, et vous n’avez pas besoin de faire autre chose tout le temps:

<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>
8
krmanish007

Right click on the spring boot project -> debug as -> spring boot App. Placez un point de débogage et appelez l'application depuis un client tel que postman

3
tadtab
  • faites un clic droit sur votre projet et choisissez "Debug As => _ Java application ou Spring Boot App" -capture1 - enter image description here
  • Si vous voulez que votre application marque une pause quelque part dans votre application, double-cliquez sur le côté gauche pour obtenir cette capture 2. enter image description here
  • ensuite, lorsque vous démarrez votre application, utilisez ces flèches pour passer à autre chose (capture 3) enter image description here
3
Abdelwahid Oubaalla

J'ai déjà répondu à cette question, mais j'ai également eu le même problème pour déboguer Springboot + gradle + jHipster,

Généralement, l’application de démarrage Spring peut déboguer par clic droit et par débogage, mais lorsque vous utilisez gradle et que vous avez quelques paramètres de configuration d’environnement supplémentaires, il n’est pas possible de déboguer directement.

Pour résoudre ce problème, Eclipse a fourni une fonctionnalité supplémentaire en tant que Remote Java Application

en utilisant ces fonctionnalités, vous pouvez déboguer votre application.

Suivez l'étape ci-dessous:

lancez votre application gradle avec la commande ./gradlew bootRun --debug-jvm

Maintenant, allez dans Eclipse -> cliquez avec le bouton droit de la souris sur le projet et sur la configuration de débogage -> Remote Java Application.

ajoutez votre hôte et votre port en tant qu'hôte local et votre port en tant que 5005 (par défaut pour le débogage de dégradé, vous pouvez le changer)

Voir pour plus de détails et étape.

2
bharatpatel

Veuillez consulter http://Java.dzone.com/articles/how-debug-remote-Java-applicat pour activer le débogage distant. Si vous utilisez Tomcat pour exécuter votre application, démarrez Tomcat avec des paramètres de débogage distant ou lancez Tomcat avec le support JPDA en utilisant la commande suivante.

Les fenêtres

<Tomcat bin dir>/startup.bat jpda

*rien

<Tomcat bin dir>/startup.sh jpda

cela permettra le débogage distant sur le port 8000

2
Sangram Jadhav

Avec Eclipse ou tout autre IDE, il suffit de cliquer avec le bouton droit de la souris sur votre application de démarrage principale et de cliquer sur "déboguer en tant qu'application Java"

1
adia

Faites un clic droit sur le fichier de classe principale Spring Boot Applications -> sélectionnez Debug As options -> sélectionner application Java

enter image description here Vous pouvez maintenant utiliser les points d'arrêt pour déboguer l'application.

0
Bishal Jaiswal