web-dev-qa-db-fra.com

comment déboguer une application printanière avec gradle

Je travaille sur l'application Spring et j'ai besoin de passer par une méthode de contrôleur pour voir comment cela fonctionne. Je travaille dans Eclipse et je construis mon application avec gradle bootRun commande.

Comment l'exécuter en mode débogage?

j'ai essayé gradle bootRun --debug mais c'est juste le journal de débogage, pas le mode de débogage

j'ai essayé gradle help --task bootRun _ cela me donne des informations sur la tâche que j’ai vue --debug-jvm option mais quand je lance gradle bootRun --debug-jvm l'application ne démarre pas

31
rigby

Après avoir exécuté gradle bootRun --debug-jvm l'application est suspendue jusqu'à ce que vous connectiez votre débogueur au port sur lequel il est en train d'écouter (port 5005).

49
dankirkd

En réponse à la réponse de dankdirkd ci-dessus: ( comparer )

gradle bootRun --debug-jvm

va faire fonctionner la construction de gradle en mode debug. Ce n'est probablement pas ce que vous voulez. Vous voulez que la tâche springBoot lance votre application en mode débogage.

La tâche de démarrage du ressort étend la tâche gradle JavaExec . Vous pouvez configurer la tâche bootRun dans votre fichier build.gradle pour ajouter une configuration de débogage comme celle-ci:

bootRun {
  jvmArgs=["-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=32323"]
}

Pour build.gradle.kts, cela ressemblerait à ceci (avec le mode suspension désactivé):

tasks {
    val bootRun by getting(BootRun::class) {
        jvmArgs=listOf("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=32323")
    }
}

Si votre serveur est dans un nuage et que vous souhaitez déboguer à partir d'une machine locale, vous devez vous assurer qu'il autorise les connexions depuis l'extérieur. Utilisez la configuration ci-dessous dans ce cas

tasks {
val bootRun by getting(BootRun::class) {
    jvmArgs=listOf("-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=0.0.0.0:32323")
    }
}

Notez que l'adresse est maintenant 0.0.0.0:port _ au lieu de port

21
rexford