Quais são as opções da linha de comandos Java a definir para permitir que o JVM seja depurado remotamente?

Eu sei que há alguns JAVA_OPTS para configurar remotamente para depurar um programa Java.

O que são e o que significam ?

Author: maksimov, 2008-09-26

6 answers

Tenho este artigo marcado ao configurar isto com o Eclipse para o Java 5 e abaixo.

Basicamente mostra com:

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

Para o Eclipse com Java 5 e acima , Execute-o com:

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

Antes do Java 5.0, use os argumentos -Xdebug e -Xrunjdwp. Estas opções ainda funcionarão em versões posteriores, mas serão executadas em modo interpretado em vez de JIT, que será mais lento.

Do Java 5.0, é melhor usar a opção -agentlib:jdwp única:

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

As opções em -Xrunjdwp ou agentlib:jdwp argumentos são:

  • transport=dt_socket: significa a forma como se liga ao JVM (o socket é uma boa escolha, pode ser usado para depurar um computador distante)
  • address=8000 : porta TCP/IP exposta, para se ligar a partir do depurador,
  • suspend=y: SE 'y', diga ao JVM para esperar até que o depurador esteja ligado para iniciar a execução, caso contrário (se 'n'), inicia a execução imediatamente.
 422
Author: paulgreg, 2016-07-29 13:30:53

Desde que o Java 9. 0 JDWP suporta apenas as ligações locais por omissão. http://www.oracle.com/technetwork/java/javase/9-notes-3745703.html#JDK-8041435

Para depuração remota, deve-se executar o programa com *: no endereço:

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

Para java 1.5 ou superior:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>

Para java 1.4:

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>

Para java 1.3:

java -Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 <YourAppName>

Aqui está a saída de um programa simples:

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
Há muitos problemas ambientais se estiver a usar o Maven. Por isso, se iniciar o seu programa a partir de maven, execute apenas o comando mvnDebug em vez de mvn e anexe um depurador no Porto 8000. Trata de todos os problemas ambientais.
 1
Author: neves, 2017-09-20 18:38:49

Java

Java-Xdebug-Xrunjdwp:transport=dt_socket,server=y,address=8001,suspende=y-jar target/cxf-boot-simple-0.0. 1-SNAPSHOT.jar

address indica o porto em que permitirá depurar

Maven

Depurar a aplicação de arranque de molas com o Maven: mvn spring-boot: run-Drun.jvmArguments= "- Xdebug-Xrunjdwp: transport=dt_socket, server = y, suspende=y, address=8001 "

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