Quelles sont les options de ligne de commande Java à définir pour permettre le débogage à distance de la JVM?


Je sais qu'il y a des JAVA_OPTS à définir pour déboguer à distance un programme Java.

Que sont-ils et que signifient-ils ?

Author: maksimov, 2008-09-26

6 answers

J'ai cet article mis en signet sur la configuration avec Eclipse pour Java 5 et ci-dessous.

Fondamentalement exécuter avec:

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

Pour Eclipse avec Java 5 et supérieur , exécutez-le avec:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=1044
 217
Author: Hans Sjunnesson, 2017-03-17 07:58:17

Avant Java 5.0, utilisez les arguments -Xdebug et -Xrunjdwp. Ces options fonctionneront toujours dans les versions ultérieures, mais elles fonctionneront en mode interprété au lieu de JIT, qui sera plus lent.

À partir de Java 5.0, il est préférable d'utiliser l'option unique -agentlib:jdwp:

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

Options sur -Xrunjdwp ou agentlib:jdwp arguments sont :

  • transport=dt_socket: signifie la manière utilisée pour se connecter à la JVM (socket est un bon choix, il peut être utilisé pour déboguer un ordinateur distant)
  • address=8000: Port TCP/IP exposé, à connectez-vous 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'), démarre l'exécution immédiatement.
 422
Author: paulgreg, 2016-07-29 13:30:53

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 *: dans l'adresse:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:8000
 15
Author: Antony Shumskikh, 2018-01-23 08:17:04

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
 7
Author: thebiggestlebowski, 2016-10-28 13:40:52

Il y a beaucoup de problèmes d'environnement si vous utilisez Maven. Donc, si vous démarrez votre programme à partir de maven, exécutez simplement la commande mvnDebug à la place de mvn et attachez un débogueur sur le port 8000. Il vous prenez soin de tous les problèmes d'environnement.

 1
Author: neves, 2017-09-20 18:38:49

Java

Java -Xdebug -Xrunjdwp:transport=dt_socket,serveur=y,address=8001,de suspendre=y -pot cible/cxf-boot-simple-0.0.1-INSTANTANÉ.jar

address spécifie le port auquel il permettra de déboguer

Maven

Déboguer l'application Spring Boot avec Maven: mvn printemps-boot:run-Drun.jvmArguments="-Xdebug -Xrunjdwp:transport=dt_socket,serveur=y,suspendre=y,address=8001"

 1
Author: Jovi Qiao, 2018-04-02 08:21:23