通过SSH隧道无法远程调试JVM

6
我需要通过SSH隧道使用远程调试器来调试Java应用程序。我在我的PC上配置了putty,可以使用隧道连接到服务器上运行的任何其他服务,但是Eclipse远程调试器无法连接。
在服务器端,我使用Java 1.6.0_21-b06,并使用以下调试选项启动:
`-Xrunjdwp:transport=dt_socket,address=8686,server=y,suspend=n`
在我的笔记本电脑上,ssh隧道配置如下:
`L8686 IP_ADDR:8686`
当通过SSH隧道进行调试会不会有任何JVM调试器的限制?
还有一件事,当我尝试连接时,在服务器控制台上我可以看到以下日志消息:
`Listening for transport dt_socket at address: 8686`

你是否检查了所有的恶意软件,如防火墙/杀毒软件/病毒? - kan
3个回答

2

我有相同的情况,一切正常运行,这是我运行Java应用程序的方法:

 java -Xmx120m -agentlib:jdwp=transport=dt_socket,server=y,address=8000 -jar bla.jar

其中最相关的部分可能是-agentlib。


1
出于安全考虑,不建议这样做。只允许本地JVM附加并建立SSH隧道到远程主机。 - mhrsalehi

2

你可以尝试使用L8686 localhost:8686,因为JVM可能会拒绝非本地地址的连接。请注意,'localhost'是从服务器的角度看到的地址。


0
该信息与编程有关:

如果虚拟机启动或现有的调试会话被关闭并且虚拟机再次开始侦听调试连接,则通常会出现Listening for transport dt_socket at address: 8686。在服务器上运行tcpdump可能会给出一个线索,即哪个对等方关闭了连接,并在该侧深入研究一下。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接