Je sais qu'il y a des JAVA_OPTS à définir pour déboguer à distance un programme Java.Quelles sont les options de ligne de commande Java à définir pour autoriser le débogage à distance de la JVM?
Que sont-ils et que signifient-ils?
Je sais qu'il y a des JAVA_OPTS à définir pour déboguer à distance un programme Java.Quelles sont les options de ligne de commande Java à définir pour autoriser le débogage à distance de la JVM?
Que sont-ils et que signifient-ils?
J'ai this article marqué comme signet lors de la configuration avec Eclipse for Java 5 et ci-dessous.
Fondamentalement run it with:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044
Pour Eclipse avec Java 5 and above, exécutez avec:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=1044
Avant Java 5.0, utilisez -Xdebug
et -Xrunjdwp
arguments. Ces options fonctionneront toujours dans les versions ultérieures, mais fonctionneront en mode interprété au lieu de JIT, qui sera plus lent.
de Java 5.0, il est préférable d'utiliser le -agentlib:jdwp
option unique:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044
Options sur -Xrunjdwp
ou agentlib:jdwp
arguments sont les suivants:
transport=dt_socket
: désigne le mode utilisé pour se connecter à JVM (socket est un bon choix, il peut être utilisé pour déboguer un ordinateur distant)address=8000
: port TCP/IP exposé, pour se connecter depuis le débogueur,suspend=y
: si 'y', dites à la JVM d'attendre que le débogueur soit attaché pour commencer l'exécution, sinon (si 'n'), commence l'exécution immédiatement.Pour Java 1.5 ou plus:
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>
pour Java 1.4:
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>
pour Java 1.3:
java -Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>
Voici la sortie d'un programme simple:
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044 HelloWhirled
Listening for transport dt_socket at address: 1044
Hello whirled
Il y a beaucoup de problèmes d'environnement si vous utilisez Maven. Donc, si vous démarrez votre programme depuis Maven, exécutez simplement la commande mvnDebug
au lieu de mvn
et attachez un débogueur sur le port 8000. Vous vous occupez de tous les problèmes d'environnement.
Depuis Java 9.0 JDWP ne prend en charge que les connexions locales par défaut. http://www.oracle.com/technetwork/java/javase/9-notes-3745703.html#JDK-8041435
Pour le débogage à distance il faut exécuter le programme avec *:
Adresse:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000
Vous êtes tout à fait correct .. J'ai essayé avec ** - Xdebug ** et ** - ** Xrunjdwp mais il n » ai pas t travail. quand j'ai essayé avec ** - Xrunjdwp ** ou ** agentlib: jdwp ** Ça marche.(sur Java 7) – RoboAlex
Cela a seulement fonctionné pour moi quand je mets des citations autour, sinon j'ai eu cette erreur: ERREUR: JDWP Transport non-serveur serveur dt_socket = y suspend = y address = 8000 doit avoir une adresse de connexion spécifiée par le ' address = 'option – Ring
Est-ce que 'Xrunjdwp' est déprécié (ou supprimé?) pourquoi devrions-nous choisir' agentlib: jdwp' par-dessus? – ArtOfWarfare