我正在尝试将我最好的调试器连接到远程 Glassfish 实例(远程我的意思是不在同一台物理机器上运行,不仅不在同一台虚拟机上)。
我的 glassfish 域配置检查了“调试”标志,并且 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 命令行已作为Glassfish 网络调试测试的示例给出,这就是我使用它的原因
另请注意,我正在本地执行此 jdb 调试会话(也就是说,当使用 PuTTy 连接到该机器时,因此在运行 Glassifh 的机器上调用 jdb)。