Réponses:
J'ai cet article mis en signet sur la configuration de cela pour Java 5 et ci-dessous.
Exécutez-le essentiellement avec :
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044
Pour Java 5 et supérieur , exécutez-le 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 elles s'exécuteront en mode interprété au lieu de JIT, qui sera plus lent.
Depuis Java 5.0, il est préférable d'utiliser la -agentlib:jdwp
seule option:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1044
Les options -Xrunjdwp
ou agentlib:jdwp
arguments sont:
transport=dt_socket
: signifie le moyen utilisé pour se connecter à la JVM (le 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 immédiatement l'exécution.Xrunjdwp
obsolète (ou supprimé?) Pourquoi le choisirions-nous agentlib:jdwp
?
-Xdebug -Xrunjdwp
lors du débogage des projets Maven, et ils fonctionnent comme s'ils étaient JIT.
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 l' *:
adresse in:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000
Pour java 1.5 ou supérieur:
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
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8001,suspend=y -jar target/cxf-boot-simple-0.0.1-SNAPSHOT.jar
address
spécifie le port sur lequel il permettra le débogage
** Déboguer l'application Spring Boot avec Maven:
mvn spring-boot:run -Drun.jvmArguments=**"-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8001"
Voici la solution la plus simple.
De nombreuses configurations spéciales d'environnement sont nécessaires si vous utilisez Maven. Donc, si vous démarrez votre programme à partir de maven, exécutez simplement la mvnDebug
commande à la place de mvn
, il se chargera de démarrer votre application avec le débogage à distance configuré. Maintenant, vous pouvez simplement attacher un débogueur sur le port 8000.
Il s'occupera de tous les problèmes environnementaux pour vous.
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=PORT_NUMBER
Ici, nous utilisons simplement un connecteur de connexion de socket, qui est activé par défaut lorsque le transport dt_socket est configuré et que la machine virtuelle s'exécute en mode de débogage du serveur.
Pour plus de détails, vous pouvez vous référer à: https://stackify.com/java-remote-debugging/
*:1044
pour activer le débogage à distance à partir de n'importe quel ordinateur