无法使用任何调试器连接到Glassfish

时间:2012-05-09 12:37:01

标签: java debugging glassfish

我正在尝试将我最好的调试器连接到远程Glassfish实例(通过远程我的意思是不在相同的物理机器上运行,而不是在同一个VM中运行)。

我的glassfish域配置已选中“debug”标志,并且启动期间server.log报告

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

这表明(在我看来),确实启用了调试。

但是,当我尝试连接调试器时,它会失败。以下会话是一个示例(使用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.

什么可能导致这种行为?

修改

请注意,此jdb命令行已作为example of Glassfish debug testing on the web给出,这就是我使用它的原因

另请注意,我正在本地执行此jdb调试会话(也就是说当使用PuTTy连接到该计算机时,因此在运行的Glassifh机器上调用jdb)。

2 个答案:

答案 0 :(得分:0)

由于您在同一台计算机上,请尝试使用jdb -attach 9009

如果这不起作用,请查看jdb documentation,因为它使用的非常不同 准备VM进行调试的选项。

答案 1 :(得分:0)

如果要调试的JVM位于远程计算机(具有不同IP地址的计算机)上,则必须包含主机名或IP地址作为附加选项的一部分。

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

jdb很聪明,但它不会只搜索您的网络以找到等待JPDA客户端的端口。

您可能需要查看此document about jdb