我需要通过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调试器是否有任何限制?
还有一件事,当我尝试连接时,在服务器控制台上我可以看到以下log mesage:
Listening for transport dt_socket at address: 8686
答案 0 :(得分:2)
您可以尝试L8686 localhost:8686
,因为JVM可能拒绝来自非本地地址的连接吗?请注意,'localhost'是服务器角度的地址。
答案 1 :(得分:2)
我有相同的场景,一切正常,这是我运行我的Java应用程序的方式:
java -Xmx120m -agentlib:jdwp=transport=dt_socket,server=y,address=8000 -jar bla.jar
可能最相关的部分是-agentlib。
答案 2 :(得分:0)
如果VM已启动或现有调试会话已关闭且VM再次开始侦听调试连接,则通常会发生Listening for transport dt_socket at address: 8686
。也许在服务器上运行tcpdump
可以给出一个线索,哪个对等体关闭连接并且在那一侧看起来更深一些。