Eu tenho um aplicativo java em execução na máquina linux. Eu executo o aplicativo java usando o seguinte:
java myapp -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=4000, suspend=n
Abri a porta 4000 para TCP nesta máquina Linux. Eu uso o eclipse da máquina Windows XP e tento conectar-me a este aplicativo. Eu abri a porta no Windows também.
Ambas as máquinas estão na LAN, mas não consigo conectar o depurador ao aplicativo Java. O que estou fazendo de errado?
java
debugging
remote-debugging
dzidzitop
fonte
fonte
Respostas:
Edit: notei que algumas pessoas estão cortando e colando a invocação aqui. A resposta que dei originalmente era relevante apenas para o OP. Aqui está um estilo de chamada mais moderno (incluindo o uso da porta mais convencional do 8000):
A resposta original segue.
Tente o seguinte:
Dois pontos aqui:
runjdwp
opção.fonte
-agentlib
opção de estilo mais recente para o seu prazer de cortar e colar. :-)Para o JDK 1.3 ou anterior:
Para JDK 1.4
Para o JDK mais recente:
Altere o número da porta com base nas suas necessidades.
De java technotes
Mais uma coisa a ser observada, na documentação da interface da JVM Tool :
fonte
Passos:
Consulte o guia Passo a passo sobre depuração remota do Java para obter detalhes completos.
fonte
Resposta que abrange Java> = 9:
Para Java 9+, a opção JVM precisa de uma pequena alteração prefixando o endereço com o endereço IP da máquina que hospeda a JVM, ou apenas
*
:Isso ocorre devido a uma alteração observada em https://www.oracle.com/technetwork/java/javase/9-notes-3745703.html#JDK-8041435 .
Para Java <9, o número da porta é suficiente para conectar.
fonte
Eu gostaria de enfatizar que a ordem dos argumentos é importante .
Para mim, o
java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000 -jar app.jar
comando abre a porta do depurador ,mas o
java -jar app.jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000
comando não .fonte
É assim que você deve configurar o Eclipse Debugger para depuração remota:
Configurações do Eclipse:
1.Clique no botão Run
2.Selecione as configurações de depuração
3.Selecione “Remote Java Application”
4.New Configuration
Para o JBoss:
1. Altere
/path/toJboss/jboss-eap-6.1/bin/standalone.conf
na vm da seguinte maneira: Remova o comentário da seguinte linha removendo o #:Para o Tomcat:
No arquivo catalina.bat :
Passo 1:
Passo 2:
Etapa 3: Execute o Tomcat no prompt de comando, como abaixo:
Então você precisa definir pontos de interrupção nas classes Java que deseja depurar.
fonte
JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=n
ps desculpe pelas edições, lutando com o formatador.