Passei algum tempo pra fazer isso funcionar, mas finalmente consegui. Debugar (depurar) em um servidor remoto é bastante útil e economiza bastante tempo. No meu caso, tenho uma lib (jar) que é importada no projeto, e a única forma de debugar ela com o projeto rodando, foi utilizando o debug remoto (mesmo estando no mesmo servidor).
É bastante interessante utilizar um Tomcat que foi instalado separadamente, e não o que foi instalado com o NetBeans. No meu caso, não instalei do repositório (apt, yum etc.), mas baixei o pacote compactado no site e extraí na pasta /opt/tomcat6.
O procedimento foi testado no Linux Mint Debian Edition (LMDE), mas muito provavelmente funcionará em outras distribuições, especialmente Debian e Ubuntu. A versão do NetBeans é a 7.1.1 e o Tomcat 6.0.35.
Vá no Terminal e digite o seguinte comando
sudo java -jar -Xdebug -Djava.compiler=NONE -Xrunjp:transport=dt_socket,server=y,suspend=n,address=7001 -Duser.dir="/opt/tomcat6" -Djava.endorsed.dirs="/opt/tomcat6/common/endorsed" "/opt/tomcat6/bin/bootstrap.jar" start
Lembre-se de substituir pelos diretórios corretos para o seu caso.
Se a mensagem "INFO: Server startup in X ms" apareceu, quer dizer que até aí deu tudo certo.
Depois é só ir no NetBeans para anexar o depurador. Acesse o menu "Depurar" (em inglês deve ser "Debug") e depois "Anexar Depurador" (em inglês deve estar como "Attach Debugger").
Coloque a porta 7001 e o host deve ser a máquina onde está o tomcat (o IP ou o nome). E pronto. Agora é só abrir sua aplicação e colocar os pontos de interrupção onde você quizer!
Informação adicionada em 26/12/2012:
Graças à colaboração (através dos comentários) de Afonso, vou mostrar uma forma bem mais simples (e que resolverá seu problema caso não esteja conseguindo debugar)
Ao invés de chamar o tomcat através da linha abaixo:
sudo java -jar -Xdebug -Djava.compiler=NONE -Xrunjp:transport=dt_socket,server=y,suspend=n,address=7001 -Duser.dir="/opt/tomcat6" -Djava.endorsed.dirs="/opt/tomcat6/common/endorsed" "/opt/tomcat6/bin/bootstrap.jar" start
Simplesmente adicione ao catalina.sh, logo após os comentários (linhas que começam com #), a linha abaixo:
CATALINA_OPTS=”-Xdebug -Xrunjdwp:transport=dt_socket,address=7001,server=y,suspend=n”
E reinicie seu Tomcat. O resto dos passos você pode fazer da mesma forma, e assim você poderá depurar/debugar suas classes remotamente!
Fonte: http://ahm507.blogspot.com.br/2006/12/netbeans-remote-debugging.html
dezembro 26th, 2012 on 10:30
Inicialmente não funcionou, pois estava dando esse erro:
Error occurred during initialization of VM
Could not find agent library jp on the library path, with error: libjp.so: cannot open shared object file: No such file or directory
Completei o procedimento usando as instruções contidas aqui: https://bowerstudios.com/node/647
Além disso, alterei para a JDK da Oracle (estava usando OpenJDK), mas não sei se isso fez diferença.
Vou colar abaixo o conteudo do artigo:
You can connect a Netbeans debugger to an external version of Tomcat by doing the following
Enable the debugging port on Tomcat:
In ${Tomcat.home}/bin/catalina.sh, add the following line:
CATALINA_OPTS=”-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n”
Start/restart tomcat.
Now, in Netbeans and with your project open:
Debug < Attach Debugger
Options in the Dialog: (These options tested for a local version of Tomcat…)
Debugger: Java Debugger JPDA
Connector: Socket Attach
Transport: dt_socket
Host: localhost
Port: 8000
Set some breakpoints in your code.
Go do stuff in your App.
Debug!
janeiro 23rd, 2013 on 12:06
Testei e funcionou perfeitamente. Porém, ao anexar o depurador, utilizei o ip ao invés do nome do pc remoto.