web-dev-qa-db-fra.com

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 la sortie disant qu'il écoute dt_socket sur 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?

78
victor

Pouvez-vous vérifier si cela fonctionne?

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

catalina.sh jpda start
115
Raghuram

J'ai passé du temps dessus pour obtenir la bonne information.

Alors voici les informations détaillées étape par étape.

Environnement: Windows 7

Tomcat version: 7.0

IDE: Eclipse

Les configurations à ajouter pour permettre le débogage distant avec Tomcat sont

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

Je ne recommande pas la configuration ci-dessus de l'environnement non Windows . Pour ajouter 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 .enter image description here

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

enter image description here

Allez maintenant à l'onglet Arugments dans Editer les propriétés de configuration de lancement, comme indiqué dans la capture d'écran ci-dessous.

enter image description here

La section des arguments GoTo VM ajoute ces lignes.

-Xdebug

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

enter image description here

Il faut maintenant que le bouton de débogage soit disponible dans la barre d’outils Eclipse.

enter image description here

Dans les configurations de débogage, recherchez "Application Java à distance" et double-cliquez dessus.enter image description here

Dans le champ Nom, entrez le nom de votre choix.

Dans le champ de projet à l’aide du bouton Parcourir, sélectionnez le projet pour lequel vous souhaitez effectuer un débogage à distance.

Le nom d'hôte n'est rien d'autre que l'adresse de l'hôte. Ici, je travaille localement, c’est donc "localhost".

Enfin, la valeur de la colonne Port devrait être 8000. Outre les champs de texte Nom et Projet, les deux autres colonnes Hôte et port seront renseignés par Eclipse lui-même si vous ne disposez pas des mêmes valeurs que celles indiquées Vérifiez la capture d'écran pour plus d'informations.enter image description here

Cliquez maintenant avec le bouton droit de la souris sur TomcatServer dans la console du serveur, puis sélectionnez Ajouter et Supprimer du menu contextuel. Dans cette boîte de dialogue, vous pouvez ajouter le projet au serveur.

Maintenant, lancez le serveur Tomcat.

enter image description here

Maintenant, lancez TomCatDebugConfiguration à partir de l’outil de débogage.

Dernier navigateur interne ou externe ouvert et lancez votre projet. Si le contrôle d'exécution atteint les points d'arrêt, Eclipse demandera une perspective de débogage.

46
Ravi MCA

Dans le répertoire bin Tomcat où lecatalina.bat ou le .sh est trouvé (alias {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 de modifier 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 Tomcat et le port de débogage spécifiés ci-dessus.

44
karl

Dans le fichier catalina.bat, veuillez modifier ce qui suit.

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

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

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

  • Étape 4: Créez ensuite une configuration de débogage dans Eclipse

    1. Donnez un nom pour la configuration.
    2. Donnez le project name.
    3. Donnez le type de connexion comme Standard(Socket Attach)
    4. Hôte en tant que localhost
    5. port en tant que 8000 (ou tout autre numéro de port, mais il devrait également être identique ailleurs).
28
RAJ

Permettez-moi de partager le moyen simple d'activer le mode de débogage distant dans Tomcat7 avec Eclipse (Windows). 

Étape 1: ouvrez le fichier bin/startup.bat
Étape 2: ajoutez les lignes ci-dessous pour le débogage avec l’option JDPA (ligne de départ du fichier) 

    set JPDA_ADDRESS=8000  
    set JPDA_TRANSPORT=dt_socket  

Étape 3: dans le même fichier .. aller à la fin du fichier modifier 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, connectez votre projet source par Eclipse IDE avec le client distant. 

step6: Dans Eclipse IDE, accédez à "Configuration de débogage" 

step7: cliquez sur "application Java distante" puis 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. 

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

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

Cordialement..

5
Mayen

Modifier catalina.bat pour ajouter 

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: Ajouter sous la ligne pour exécuter le mode 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
4
shermi

Il suffit d'exécuter ./catalina.sh jpda start (forks) ou ./catalina.sh jpda run (ne se divise pas en fourchette, cela n'est pas mentionné dans l'aide). Toutes les options mentionnées ici sont définies par défaut.

3
atamanroman

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

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

Dans Tomcat 7, catalina.sh a le code suivant:

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

1
Marcelo Salazar

Je rencontrais ce problème en exécutant Tomcat dans un conteneur Docker. Pour résoudre ce problème, veillez à ajouter l'argument '-p 8000: 8000' dans votre commande d'exécution du menu fixe pour exposer ce port à votre ordinateur local. Vous aurez bien sûr besoin du fichier setenv.sh dans votre $ {CATALINA_HOME}/bin/de votre conteneur.

1
Cheen

Tout d’abord, si vous ouvrez catalina.bat avec un éditeur de texte, vous verrez ce qui suit: "Ne définissez pas les variables dans ce script .....". Ne le modifiez donc jamais dans ce script, vous pouvez plutôt effectuer 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 bat, telles que:

    set CATALINA_OPTS = "- Xdebug -Xrunjdwp: transport = dt_socket, adresse = 8000, serveur = y, suspendre = n"

    set JPDA_OPTS = "- agentlib: jdwp = transport = dt_socket, adresse = 8000, serveur = y, suspendre = n"

  3. Enfin, exécutez cela à cmd que: "catalina.bat jpda start"

  4. Dans IDE, créez une configuration de débogage à distance et définissez Host sur l'IP du serveur associé et le port sur 8000.

0
Mustafa Kemal

La plupart des réponses ci-dessus sont correctes, mais rappelez-vous que par défaut, le débogueur n'écoutera que sur localhost. Si vous déboguez un serveur distant vous devrez spécifier l'adresse IP sur laquelle vous souhaitez écouter, par exemple 

JPDA_OPTS = "- agentlib: jdwp = transport = dt_socket, adresse = 10.1.1.33 : 8000, serveur = y, susp = n"

catalina.sh jpda début

Notez que l'adresse est maintenant 10.1.1.33 : 8000

Bien sûr, vous pouvez également vérifier quelle adresse IP est réellement utilisée, en exécutant

netstat -an

sur Windows et Linux et filtrer le port avec find (Win) ou grep (Linux).

0
DAB

La modification du fichier startup.bat avec CATALINA_OPTS ET JPDA_OPTS ne fonctionnait pas pour moi, mais leur ajout à catalina.bat ne fonctionnait pas.

  1. Modifier catalina.bat

CATALINA_OPTS = "- Xdebug -Xrunjdwp: transport = dt_socket, adresse = 8000, serveur = y, suspendre = n"

JPDA_OPTS = "- agentlib: jdwp = transport = dt_socket, adresse = 8000, serveur = y, suspendre = n"

  1. Modifier le fichier startup.bat pour inclure jpda

modifier l'appel "% EXECUTABLE%" démarrer% CMD_LINE_ARGS% en

appelez "% EXECUTABLE%" jpda start% CMD_LINE_ARGS%

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

0
David Stableforth

Pour la version Apache-Tomcat-8.5.28, faites simplement ceci,

catalina.bat jpda start

En tant que paramètres par défaut déjà configurés pour nous dans catalina.bat en tant que

sinon "% JPDA_OPTS%" == "" obtenu pour gotJpdaOpts set JPDA_OPTS = -agentlib: jdwp = transport =% JPDA_TRANSPORT%, adresse =% JPDA_ADDRESS%, serveur = y, suspendre =% JPDA_SUSPEND%

Donc, pas besoin d'une 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. 

0
Lyju I Edwinson

Voir cette réponse pour les problèmes que j'ai rencontrés avec Java 8 et Tomcat 9: Le débogage à distance Java (JPDA) ne fonctionne pas pour moi dans Tomcat 9

Ceci est similaire à l'avertissement de @ DAB et sa solution est probablement plus sûre.

0
TikiTavi