Débogage à distance d'une application Java


J'ai une application java fonctionnant sur une machine linux. J'exécute l'application java en utilisant ce qui suit:

java myapp -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000, suspend=n

J'ai ouvert le port 4000 pour TCP sur cette machine Linux. J'utilise eclipse à partir de la machine Windows XP et j'essaie de me connecter à cette application. J'ai également ouvert le port dans Windows.

Les deux machines sont sur le réseau local mais je n'arrive pas à connecter le débogueur à l'application Java. Ce que je fais mal?

Author: dzidzitop, 2009-06-10

5 answers

Edit: J'ai remarqué que certaines personnes coupent et collent l'invocation ici. La réponse que j'ai donnée à l'origine était pertinente pour le PO seulement. Voici un style d'invocation plus moderne (y compris en utilisant le port plus conventionnel de 8000):

java -agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n <other arguments>

Réponse originale suit.


, Essayez ceci:

java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n myapp

Deux points ici:

  1. Aucun espace dans l'option runjdwp.
  2. Les options viennent avant le nom de la classe. Tous les arguments que vous avez après le nom de la classe sont arguments à votre programme!
 412
Author: Chris Jester-Young, 2015-08-09 02:44:01

Pour JDK 1.3 ou une version antérieure:

-Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6006

Pour JDK 1.4

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

Pour JDK plus récent:

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

, Veuillez modifier le numéro de port en fonction de vos besoins.

À Partir de java technotes

À partir de la version 5.0, l'option-agentlib: jdwp est utilisée pour charger et spécifier options pour la JDWP de l'agent. Pour les versions antérieures à 5.0, le-Xdebug et Les options-Xrunjdwp sont utilisées (l'implémentation 5.0 prend également en charge les options-Xdebug et-Xrunjdwp, mais les plus récentes - agentlib: l'option jdwp est préférable car l'agent JDWP dans 5.0 utilise l'interface JVM TI pour VM plutôt que l'ancienne interface JVMDI)

Une autre chose à noter, à partir de Documentation de l'interface de l'outil JVM :

JVM TI a été introduit à JDK 5.0. JVM TI remplace l'interface Java Virtual Machine Profiler (JVMPI) et l'Interface Java Virtual Machine Debug (JVMDI) qui, à partir de JDK 6, ne sont plus fournies.

 71
Author: Sairam Krish, 2014-08-02 07:02:01

Étapes:

  1. Démarrez votre application java distante avec les options de débogage comme indiqué dans le post ci-dessus.
  2. Configurez Eclipse pour le débogage à distance en spécifiant l'hôte et le port.
  3. Démarrez le débogage à distance dans Eclipse et attendez que la connexion réussisse.
  4. Configurez le point d'arrêt et déboguez.
  5. Si vous souhaitez déboguer à partir du début de l'application , utilisez suspend=y, cela maintiendra l'application distante suspendue jusqu'à ce que vous vous connectiez à partir d'eclipse.

Voir Étape guide étape par étape sur Java remote debugging pour plus de détails.

 27
Author: Gaurav, 2013-05-16 12:09:22

Voici comment configurer le débogueur Eclipse pour le débogage à distance:

Eclipse Paramètres:

1.Cliquez sur le bouton Exécuter
2.Sélectionnez les configurations de débogage
3.Sélectionnez l'application Java distante
4.Nouvelle configuration

  • Nom: GatewayPortalProject
  • Projet: GatewayPortal-portlet
  • Type de connexion: Prise Joindre
  • Propriétés de connexion: i) localhost ii) 8787

Pour JBoss:

1.Modifiez le {[4] } dans votre machine virtuelle comme suit: Décommentez la ligne suivante en supprimant le#:

JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n"

Pour Tomcat :

Dans catalina.chauve-souris fichier :

É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

Ensuite, vous devez définir points d'arrêt dans les classes Java que vous souhaitez déboguer.

 0
Author: Pritam Banerjee, 2016-06-28 22:48:22

La meilleure option de débogage est de créer des journaux et d'analyser des journaux. Mais dans certains cas, nous devons déboguer l'application Web déployée sur le serveur.

VoirDéboguer à distance une application Web java lien. Le flux complet de débogage à distance est décrit ici. J'espère que ça aidera.

 -6
Author: Sulabh Jain, 2017-07-08 14:46:13