Débogage à distance de Tomcat avec Eclipse

Je n’arrive pas à déboguer l’application tomcat via Eclipse. J’ai mis

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

et puis je lance bin/catalina.sh , où je vois une sortie disant que c’est l’écoute de dt_socket sur le port 8000 . Mais chaque fois que j’essaie de me connecter au port 8000 dans Eclipse (en ajoutant une entrée dans le menu de l’application Java distante), il se plaint d’une connexion refusée. Des idées?

Pouvez-vous vérifier si cela fonctionne?

 JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n" catalina.sh jpda start 

Dans le répertoire bin de tomcat où catalina.bat ou .sh est trouvé (aka {CATALINA_BASE} / bin), éditez (créez s’il n’y en a pas):

 setenv.bat/.sh 

Ajoutez la ligne suivante:

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

C’est tout ce que vous devez faire, vous n’avez pas besoin d’éditer le fichier catalina.bat (ou .sh ).

Voir les commentaires dans catalina.bat ou catalina.sh .

Vous devrez peut-être ajuster la syntaxe pour votre environnement / situation particulier. Par exemple, si vous avez déjà défini CATALINA_OPTS, vous pouvez faire quelque chose comme ceci (dans un environnement Windows):

 set CATALINA_OPTS=%CATALINA_OPTS% -Xdebug -Xrunjdwp:transport=dt_socket,address=8088,server=y,suspend=n 

Pour déboguer depuis Eclipse:

run-> Configurations de débogage …-> Application Java distante-> Nouveau

et spécifiez un nom, le projet que vous déboguez et l’hôte et le port de débogage tomcat spécifiés ci-dessus.

J’ai passé du temps là-dessus pour obtenir la bonne information.

Voici donc les informations détaillées étape par étape.

Environnement: Windows 7

Version TomCat: 7.0

IDE: Eclipse

Les configurations à append pour activer le débogage à distance avec dans tomcat sont

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

Je ne recommande pas la configuration ci-dessus pour l’environnement non Windows. Pour append la configuration ci-dessus, double-cliquez sur le serveur tomcat qui sera disponible dans la vue du serveur. Trouvez la capture d’écran ci-dessous. entrer la description de l'image ici

Ajoutez maintenant la configuration d’environnement d’exécution ci-dessus à tomcat. Pour cette vérification ci-dessous la capture d’écran.

entrer la description de l'image ici

Maintenant, allez à l’onglet Arugments dans Modifier les propriétés de configuration du lancement, comme indiqué dans la capture d’écran ci-dessous.

entrer la description de l'image ici

La section des arguments GoTo VM ajoute ces lignes.

-Xdebug

-agentlib: jdwp = transport = dt_socket, adresse = 8000, serveur = y, suspend = n

entrer la description de l'image ici

Maintenant, vous devez déboguer le bouton disponible sur la barre d’outils Eclipse.

entrer la description de l'image ici

Dans les configurations de débogage, recherchez “Application Java distante” et double-cliquez dessus. entrer la description de l'image ici

Dans le champ Nom, entrez le nom que vous souhaitez.

À partir du champ de projet, en utilisant le bouton Parcourir, sélectionnez le projet que vous souhaitez exécuter avec le débogage à distance.

Le nom d’hôte n’est rien d’autre que l’adresse hôte. Ici je travaille localement donc c’est “localhost”.

Enfin, la colonne Port doit indiquer la valeur 8000. En dehors des champs de texte Nom et Projet, deux autres colonnes, Hôte et Port, seront remplies par Eclipse, sinon vous obtiendrez les mêmes valeurs que celles mentionnées. Vérifiez la capture d’écran pour plus d’informations. entrer la description de l'image ici

Maintenant, cliquez avec le bouton droit sur TomcatServer dans la console du serveur, sélectionnez Ajouter et supprimer du menu contextuel. Dans cette boîte de dialog, vous pouvez append le projet au serveur.

Exécutez maintenant le serveur Tomcat.

entrer la description de l'image ici

Exécutez maintenant le TomCatDebugConfiguration à partir de l’outil de débogage.

Dernière ouverture interne ou externe du navigateur et lancez votre projet. Si le contrôle d’exécution a atteint les points d’arrêt, l’éclipse demandera une perspective de débogage.

Dans le fichier catalina.bat , veuillez modifier le fichier ci-dessous.

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

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

  • Étape 3: Exécutez Tomcat depuis l’invite de commande comme ci-dessous: catalina.sh jpda start

  • Étape 4: Ensuite, dans l’éclipse, créez une configuration de débogage

    1. Donnez un nom pour la configuration.
    2. Donnez le project name du project name .
    3. Indiquez le type de connexion en tant que Standard(Socket Attach)
    4. hôte comme localhost
    5. port comme 8000 (ou tout numéro de port, mais cela devrait être la même chose ailleurs).

Permettez-moi de partager le moyen simple d’activer le mode de débogage à distance dans tomcat7 avec eclipse (Windows).

Étape 1: ouvrir le fichier bin / startup.bat
Étape 2: ajoutez les lignes ci-dessous pour le débogage avec l’option JDPA (il convient de commencer par le fichier)

  set JPDA_ADDRESS=8000 set JPDA_TRANSPORT=dt_socket 

Étape 3: dans le même fichier .. allez à la fin du fichier modifiez cette ligne –

  call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS% instead of line call "%EXECUTABLE%" start %CMD_LINE_ARGS% 

étape 4: exécutez simplement bin> startup.bat (votre serveur Tomcat s’exécute maintenant en mode distant avec le port 8000).

étape 5: après cela, connectons votre projet source par Eclipse IDE avec le client distant.

step6: Dans l’IDE Eclipse, allez dans “Configuration du débogage”

step7: cliquez sur “application Java distante” et cliquez sur “Nouveau”

step8. dans l’onglet “Connect”, définissez la valeur du paramètre

  project= your source project connection Type: standard (socket attached) host: localhost port:8000 

step9: cliquez sur appliquer et déboguer.

Ainsi, votre client distant eclipse est connecté au serveur Tomcat en cours d’exécution (mode de débogage).

J’espère que cette approche pourrait vous aider.

Cordialement..

Modifier catalina.bat pour append

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

et

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

Facultatif: Ajoutez la ligne ci-dessous pour exécuter le mode de débogage par défaut lorsque vous exécutez startup.bat

 call "%EXECUTABLE%" jpda start %CMD_LINE_ARGS% 

Eclipse ou STS sélectionne la configuration de débogage clic droit -> nouveau

 connection type -> Standard socket Attach Port -> 8000 (as given in the CATALINA_OPTS) Host -> localhost or IP address 

Il suffit de lancer ./catalina.sh jpda start (forks) ou ./catalina.sh jpda run (ne pas bifurquer, pas mentionné dans l’aide). Toutes les options mentionnées ici sont des valeurs saines.

Si tout ce qui précède ne fonctionne pas, vous pouvez toujours append au script

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

Dans tomcat 7, catalina.sh a ce code:

 if [ "$1" = "jpda" ] ; then if [ -z "$JPDA_TRANSPORT" ]; then JPDA_TRANSPORT="dt_socket" fi if [ -z "$JPDA_ADDRESS" ]; then JPDA_ADDRESS="8000" fi if [ -z "$JPDA_SUSPEND" ]; then JPDA_SUSPEND="n" fi if [ -z "$JPDA_OPTS" ]; then JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND" fi CATALINA_OPTS="$CATALINA_OPTS $JPDA_OPTS" shift fi 

Ii implique que vous pouvez configurer JPDA avec:

 export JPDA_TRANSPORT=dt_socket export JPDA_ADDRESS=8000 export JPDA_SUSPEND=n 

Ou avec:

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

Et enfin utiliser:

catalina.sh jpda start

Cordialement

Je frappais ce problème en exécutant Tomcat dans un conteneur Docker. Pour résoudre ce problème, assurez-vous d’append l’argument ‘-p 8000: 8000’ dans votre commande docker run pour exposer ce port à votre ordinateur local. Vous aurez bien sûr aussi besoin du fichier setenv.sh dans votre $ {CATALINA_HOME} / bin / dans votre conteneur.

La modification du fichier startup.bat avec CATALINA_OPTS AND JPDA_OPTS ne fonctionnait pas pour moi, mais l’ajoutait à catalina.bat

  1. Modifier catalina.bat

CATALINA_OPTS = “- Xdebug -Xrunjdwp: transport = dt_socket, adresse = 8000, serveur = y, suspend = n”

JPDA_OPTS = “- agentlib: jdwp = transport = dt_socket, adresse = 8000, serveur = y, suspend = n”

  1. Modifier startup.bat pour inclure jpda

changez l’appel “% EXECUTABLE%” start% CMD_LINE_ARGS% à

appelez “% EXECUTABLE%” jpda start% CMD_LINE_ARGS%

Configurez ensuite l’application Java distante dans vos configurations de débogage dans Eclipse.

Tout d’abord, si vous ouvrez catalina.bat avec l’éditeur de texte, vous voyez que: “Ne définissez pas les variables dans ce script …..” Donc, ne le changez jamais dans ce script, vous pouvez faire les étapes suivantes:

  1. Il vous conseille de créer un nouveau fichier bat avec le nom “setenv.bat”.
  2. Ensuite, définissez 2 variables dans ce fichier, par exemple:

    set CATALINA_OPTS = “- Xdebug -Xrunjdwp: transport = dt_socket, adresse = 8000, serveur = y, suspend = n”

    set JPDA_OPTS = “- agentlib: jdwp = transport = dt_socket, adresse = 8000, serveur = y, suspend = n”

  3. Enfin, lancez cela à cmd: “catalina.bat jpda start”

  4. Dans IDE, créez une configuration de débogage à distance et définissez l’hôte sur l’adresse IP et le port du serveur associé à 8000.

Pour la version apache-tomcat-8.5.28, faites ceci,

 catalina.bat jpda start 

Comme parameters par défaut déjà configurés pour nous dans catalina.bat as

sinon “% JPDA_OPTS%” == “” goto gotJpdaOpts set JPDA_OPTS = -agentlib: jdwp = transport =% JPDA_TRANSPORT%, adresse =% JPDA_ADDRESS%, server = y, suspend =% JPDA_SUSPEND%

Donc pas besoin de toute autre configuration. Et lorsque vous exécutez la commande catalina.bat jpda start, vous pouvez voir que le port de débogage 8000 est ouvert.

Pour apache-tomcat-8.5.28

modifier JDPA_OPTS comme ci-dessous puis exécuter comme catalina.bat jpda start

 JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND" JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=8000,server=y,suspend=$JPDA_SUSPEND"