algumas notas de computação e tecnologia
Debug remoto de Java no Eclipse
O Debugger Java, além de permitir o debug local das aplicações Java, permite também conectar-se a uma aplicação rodando em servidor remoto e fazer o debug remotamente. Isto pode ser de grande ajuda em certos casos!
Aqui eu irei explicar o básico da configuração deste debug remoto, exemplificarei com o JBoss 5.x e mostrarei um passo-a-passo de como realizar o debug remoto pelo Eclipse!
Habilitando o Remote Debug
Para habilitar o debug remoto na JVM, é preciso executá-la com alguns parâmetros de configuração específicos. São eles:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5251
Um pouco sobre estes parâmetros:
- -Xdebug: inicializa a JVM em modo de debug;
- -Xrunjdwp: carrega bibliotecas específicas para o tipo de conexão que desejamos fazer ao debugger:
- transport=dt_socket: indica que queremos nos conectar ao Debugger através de um socket;
- address=5251: diz que nos conectaremos na porta 5251 (pode configurar outra, a padrão é 1044);
- suspend=n: indica se a JVM deve ser suspensa, isto é, ela só irá executar a aplicação quando algum debugger se conectar; isto é útil quando queremos debugar uma aplicação desde a sua inicialização, por exemplo.
Para conectar-se à aplicação utilizando o jdb.exe, que vem com a instalação padrão do JDK, basta executar no prompt de comandos o comando:
jdb -attach 5251
Alternativamente, você pode utilizar o Eclipse para se conectar à aplicação e fazer o debug em modo gráfico! Veja abaixo como fazer!
Habilitando o Debug no JBoss Application Server:
No JBoss 5.1, para incluir os parâmetros de configuração da JVM vistos acima, você precisa editar o arquivo de configuração do servidor run.conf.bat (Windows, run.conf em Unix), que se encontra na pasta bin, dentro da pasta de instalação do JBoss. Neste arquivo, existem as linhas de configuração do debug, que vêm comentadas por padrão:
# Sample JPDA settings for remote socket debugging
#JAVA_OPTS=”$JAVA_OPTS -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n”
Descomente a segunda linha. Lembre-se de configurar a porta para a que você deseja usar na conexão! Além disso, nesta linha não está presente a configuração -Xdebug, que ativa o modo de debug da JVM. Portando adicione-a, ficando assim:
# Sample JPDA settings for remote socket debugging
JAVA_OPTS=”$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,address=5251,server=y,suspend=n”
Alterado isto, basta rodar o servidor que você verá estas opções sendo carregadas na sua inicialização:
C:\Users\thiago.carvalho>run Calling C:\Aplicativos\jboss\jboss-5.1.0.GA-jdk6\jboss-5.1.0.GA\bin\run.conf.bat =============================================================================== JBoss Bootstrap Environment JBOSS_HOME: C:\Aplicativos\jboss\jboss-5.1.0.GA-jdk6\jboss-5.1.0.GA JAVA: c:\Program Files\Java\jdk1.6.0_11\\bin\java JAVA_OPTS: -Dprogram.name=run.bat -Xms128M -Xmx300M -XX:MaxPermSize=192M -Dsun.rmi.dgc.client.gcInterval=600000 -Dsun.rmi.dgc.server.gcInterval=600000 -Dorg.jboss.resolver.warning=true -Xdebug -Xrunjdwp:transport=dt_socket,address=5251,server=y,suspend=n -server CLASSPATH: C:\Aplicativos\jboss\jboss-5.1.0.GA-jdk6\jboss-5.1.0.GA\bin\run.jar =============================================================================== Listening for transport dt_socket at address: 5251 19:33:50,594 INFO [ServerImpl] Starting JBoss (Microcontainer)...
Note que já que a JVM é carregada ela já passa a escutar na porta configurada para debug!
Configurando o Eclipse para conectar-se e debugar remotamente uma aplicação:
Os passos são os seguintes:
- Acessar a tela de configurações de debug do Eclipse;
- Criar uma nova configuração de debug;
- Configurar para debug remoto do nosso projeto Java.
1. Acessar a tela de configurações de debug do Eclipse:
2. Criar uma nova configuração de debug:
Selecione o tipo de configuração de debug desejado: Remote Java Application. Como segue:
3. Configurar para debug remoto do nosso projeto Java:
Agora configuramos o projeto que será debugado, o host onde o projeto está rodando na JVM em modo de debug, o tipo de conexão (socket attach) e a porta de comunicação. Note que se você precisar debugar mais de um projeto rodando nesta mesma JVM, se eles estiverem abertos no seu workspace do Eclipse, eles serão automaticamente acessados durante o debug!
Após isso, você pode inserir esta nova configuração de debug nas Favoritas, para poder acessá-las mais rapidamente. No Tutorial sobre integração do TortoiseHg ao Eclipse, é detalhado a adição de uma configuração de lançamento de ferramenta externa ao Favoritos. A adição de favoritos ao Debug é semelhante, portanto você pode se guiar pelas telas daquele Tutorial para fazer a mesma coisa aqui, se achar necessário!
Publicações relacionadas:
| Imprimir artigo | Este artigo foi escrito por Thiago Carvalho em 3 de maio de 2010 às 12h34min, e está arquivado em Eclipse, Java, JBoss. Siga quaisquer respostas a este artigo através do RSS 2.0. Você pode deixar uma resposta ou fazer um trackback do seu próprio site. |


