J’ai une application java exécutée sur une machine Linux. Je lance 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 de la machine Windows XP et tente de me connecter à cette application. J’ai également ouvert le port dans Windows.
Les deux machines sont sur le LAN mais je n’arrive pas à connecter le débogueur à l’application Java. Qu’est-ce que je fais mal?
Edit: J’ai remarqué que certaines personnes collent l’invocation ici. La réponse que j’ai initialement donnée était pertinente pour l’OP uniquement. Voici un style d’appel plus moderne (y compris l’utilisation du port plus conventionnel de 8000):
java -agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n
La réponse originale suit.
Essaye ça:
java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n myapp
Deux points ici:
runjdwp
. Pour JDK 1.3 ou version antérieure:
-Xnoagent -Djava.comstackr=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 les nouveaux JDK:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=6006
Veuillez modifier le numéro de port en fonction de vos besoins.
Des notes techniques java
A partir de la version 5.0, l’option -agentlib: jdwp est utilisée pour charger et spécifier les options pour l’agent JDWP. Pour les versions antérieures à la version 5.0, les options -Xdebug et -Xrunjdwp sont utilisées (l’implémentation 5.0 prend également en charge les options -Xdebug et -Xrunjdwp, mais l’option -agentlib: jdwp est préférable car l’agent JDWP 5.0 utilise l’interface JVM TI pour la machine virtuelle plutôt que l’ancienne interface JVMDI)
Une autre chose à noter, de la documentation de l’interface de JVM Tool :
JVM TI a été introduit chez JDK 5.0. JVM TI remplace l’interface JVMPI (Java Virtual Machine Profiler) et l’interface JVMDI (Java Virtual Machine Debug Interface) qui, à partir de JDK 6, ne sont plus fournies.
Pas:
Voir le guide étape par étape sur le débogage Java à distance pour plus de détails.
Voici comment configurer Eclipse Debugger pour le débogage à distance:
Paramètres Eclipse:
1.Cliquez sur le bouton Exécuter
2.Sélectionnez les configurations de débogage
3.Sélectionnez “Application Java distante”
4. Nouvelle configuration
Pour JBoss:
Modifiez le /path/toJboss/jboss-eap-6.1/bin/standalone.conf
dans votre vm 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 le fichier catalina.bat :
É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 des points d’arrêt dans les classes Java que vous souhaitez déboguer.
La meilleure option de débogage consiste à créer des journaux et à parsingr les journaux. Mais dans certains cas, nous devons déboguer une application Web déployée sur un serveur.
Voir Débogage à distance d’un lien d’ application Web Java . Le stream complet du débogage à distance est décrit ici. J’espère que ça va aider.