2012-05-09 15 views
5

Estoy tratando de conectar mi mejor depurador a una instancia remota de Glassfish (por control remoto me refiero a no ejecutar en la misma máquina física, y no solo en la misma máquina virtual).No se puede conectar a Glassfish usando cualquier depurador

Mi configuración del dominio GlassFish tiene la bandera "depuración" está marcada, y los informes server.log durante el inicio

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

Lo que indica (en mi opinión), la depuración es, en efecto permitido.

Sin embargo, cuando intento conectar un depurador, falla. La siguiente sesión es un ejemplo (hecho con PuTTy):

$ jdb -connect com.sun.jdi.SocketAttach:port=9009 
java.net.ConnectException: Connection refused 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) 
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:385) 
    at java.net.Socket.connect(Socket.java:529) 
    at com.sun.tools.jdi.SocketTransportService.attach(SocketTransportService.java:204) 
    at com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingConnector.java:98) 
    at com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingConnector.java:72) 
    at com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnection.java:358) 
    at com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:168) 
    at com.sun.tools.example.debug.tty.Env.init(Env.java:64) 
    at com.sun.tools.example.debug.tty.TTY.main(TTY.java:1010) 

Fatal error: 
Unable to attach to target VM. 

¿Qué podría causar ese comportamiento?

EDITAR

Aviso este jdb de línea de comandos se ha dado como un example of Glassfish debug testing on the web, aquí es por lo que utilicé

Observe también que estoy haciendo esta sesión jdb depuración local (que es decir cuando conectado a esa máquina usando PuTTy, por lo que invoca jdb en la máquina Glassifh se está ejecutando).

+1

Puede ejecutar 'ps -ef | grep java' como una prueba de cordura rápida que glassfish está comenzando con tus parámetros jvm. ¿También un netstat para el estado de ese puerto? – nsfyn55

+1

Cuando dijiste 'ejecutando me refiero a no ejecutar', ¿te refieres a esto 'por REMOTO quiero decir no ejecutar'? – vkraemer

+0

@vkraemer De hecho. Cambié la pregunta en consecuencia. – Riduidel

Respuesta

0

Dado que está en la misma máquina, intente con jdb -attach 9009.

Si eso no funciona, eche un vistazo al jdb documentation porque usa opciones muy diferentes para preparar la máquina virtual para la depuración.

0

Si la JVM que desea depurar está en una máquina remota (una máquina con una dirección IP diferente) debe incluir el nombre de host o la dirección IP como parte de la opción adjuntar.

jdb -attach <hostname-or-address>:<port-number> 

jdb es inteligente, pero no buscará en su red sólo para encontrar un puerto que está a la espera de un cliente JPDA.

Quizás desee consultar este document about jdb.

Cuestiones relacionadas