Eu sei que há alguns JAVA_OPTS
para definir para depurar remotamente um programa Java.
O que são e o que significam?
Eu tenho este artigo marcado como configuração para Java 5 e abaixo.
Basicamente, execute-o com :
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=1044
Para Java 5 e superior , execute-o com:
-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=1044
*:1044
para permitir a depuração remota de qualquer computadorAntes do Java 5.0, uso
-Xdebug
e-Xrunjdwp
argumentos. Essas opções ainda funcionarão em versões posteriores, mas serão executadas no modo interpretado em vez do JIT, que será mais lento.No Java 5.0, é melhor usar a
-agentlib:jdwp
opção única:As opções
-Xrunjdwp
ouagentlib:jdwp
argumentos são:transport=dt_socket
: significa a maneira usada para conectar-se à JVM (o soquete é uma boa escolha, pode ser usado para depurar um computador distante)address=8000
: Porta TCP / IP exposta, para conectar-se a partir do depurador,suspend=y
: se 'y', diga à JVM para aguardar até que o depurador seja anexado para iniciar a execução; caso contrário (se 'n'), inicia a execução imediatamente.fonte
Xrunjdwp
obsoleto (ou removido?) Por que nós escolhemosagentlib:jdwp
sobre ele?-Xdebug -Xrunjdwp
ao depurar projetos do Maven e eles são executados como se fossem um JIT.Como o Java 9.0 JDWP suporta apenas conexões locais por padrão. http://www.oracle.com/technetwork/java/javase/9-notes-3745703.html#JDK-8041435
Para depuração remota, deve-se executar o programa com o
*:
endereço:fonte
Para java 1.5 ou superior:
Para java 1.4:
Para java 1.3:
Aqui está a saída de um programa simples:
fonte
Java
address
especifica a porta na qual permitirá depurarMaven
** Depure o aplicativo Spring Boot com o Maven:
fonte
Aqui está a solução mais fácil.
Existem muitas configurações especiais de ambiente necessárias se você estiver usando o Maven. Portanto, se você iniciar o programa a partir do maven, basta executar o
mvnDebug
comando em vez demvn
, ele cuidará de iniciar o aplicativo com a depuração remota configurada. Agora você pode simplesmente conectar um depurador na porta 8000.Ele cuidará de todos os problemas ambientais para você.
fonte
Linha de comando
Gradle
Maven
fonte
Aqui, apenas usamos um conector de conexão de soquete, que é ativado por padrão quando o transporte dt_socket está configurado e a VM está sendo executada no modo de depuração do servidor.
Para obter mais detalhes, você pode consultar: https://stackify.com/java-remote-debugging/
fonte