Depuração remota de uma aplicação Java

Tenho uma aplicação java a correr na máquina linux. Executei a aplicação java usando o seguinte:

java myapp -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000, suspend=n

abri a porta 4000 para o TCP nesta máquina Linux. Eu uso o eclipse da máquina Windows XP e tento conectar-me a esta aplicação. Também abri a porta nas janelas.

ambas as máquinas estão na LAN, mas não consigo ligar o depurador à aplicação Java. O que estou a fazer de errado?

Author: dzidzitop, 2009-06-10

5 answers

Edit: eu notei que algumas pessoas estão cortando e colando a invocação aqui. A resposta que dei inicialmente era apenas relevante para a operação. Aqui está um estilo mais moderno de Invocação (incluindo o uso do porto mais convencional de 8000):

java -agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n <other arguments>

Segue-se a resposta Original.


Tenta isto:

java -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000,suspend=n myapp
Dois pontos:
  1. sem espaços na opção runjdwp.
  2. as opções vêm antes do nome da classe. Quaisquer argumentos que tenha após o nome da classe são argumentos para o seu programa!
 412
Author: Chris Jester-Young, 2015-08-09 02:44:01

Para JDK 1.3 ou anterior:

-Xnoagent -Djava.compiler=NONE -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=6006

Para JDK 1, 4

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

Para o JDK mais recente:

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

Por favor, mude o número do Porto com base nas suas necessidades.

De java technotes

A partir de 5.0 a opção-agentlib: jdwp é usada para carregar e especificar opções para o agente da JDWP. Para versões anteriores a 5.0, o-Xdebug e - As opções Xrunjdwp são usadas (a implementação 5.0 também suporta as opções-Xdebug e-Xrunjdwp, mas as mais recentes - agentlib: a opção jdwp é preferível, uma vez que o agente JDWP em 5.0 usa a interface JVM TI para a VM rather than the older JVMDI interface)

Mais uma coisa a notar, de documentação da interface de ferramentas JVM:

A JVM TI foi introduzida na JDK 5.0. JVM TI substitui o Java Virtual Machine Profiler Interface (JVMPI) e o Java Virtual Machine Debug Interface (JVMDI) que, a partir de JDK 6, não são mais fornecidos.

 71
Author: Sairam Krish, 2014-08-02 07:02:01

Passos:

  1. Inicie a sua aplicação java remota com opções de depuração, tal como referido na publicação acima.
  2. Configurar o Eclipse para depuração remota, indicando a máquina e o porto.
  3. iniciar a depuração remota no Eclipse e esperar que a ligação tenha sucesso.
  4. Configurar o ponto de paragem e depuração.
  5. Se quiser depurar desde o início da aplicação use suspens=y, isto irá manter a aplicação remota suspensa até que se ligue ao eclipse.

Ver passo a passo no Java remote debugging para mais detalhes.

 27
Author: Gaurav, 2013-05-16 12:09:22

É assim que deve configurar o depurador Eclipse para depuração remota:

Configuração Do Eclipse:

1.Carregue no botão Executar
2.Seleccione as configurações de depuração
3.Seleccione a "aplicação Java remota"
4.Nova Configuração

  • Nome : GatewayPortalProject
  • projecto: GatewayPortal-portlet
  • Tipo De Ligação: 'Socket Attached'
  • Propriedades Da Ligação: i) localhost ii) 8787

Para JBoss:

1.Alterar o /path/toJboss/jboss-eap-6.1/bin/standalone.conf na sua vm da seguinte forma:: Descomentar a seguinte linha removendo o#:

JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,address=8787,server=y,suspend=n"

Para O Tomcat :

In catalina.bat ficheiro:

Passo 1:

CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"

Passo 2:

JPDA_OPTS="-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n"

Passo 3: Executar o Tomcat a partir da linha de comandos abaixo:

catalina.sh jpda start

Então você precisa definir pontos de paragem nas classes Java que deseja depurar.

 0
Author: Pritam Banerjee, 2016-06-28 22:48:22

A melhor opção de depuração é criar registos e analisar registos. Mas em alguns casos precisamos depurar aplicação web implantada no servidor.

Ver depurar remotamente uma aplicação web java ligação. O fluxo completo de depuração remota está descrito aqui. Espero que ajude.

 -6
Author: Sulabh Jain, 2017-07-08 14:46:13