Eclipse Java 远程调试器在 VPN 上速度极慢

Eclipse Java remote debugger extremely slow over VPN

有时我被迫离开办公室工作,这意味着我需要通过 VPN 连接到我的实验室。我注意到在这种情况下使用 Eclipse 进行远程调试非常慢。慢到调试器需要 5-7 分钟才能连接到远程 jvm。连接后,每次单步执行 breakpoints/lines 可能需要 20-30 秒,并且通常会断开连接,让我不得不重新开始。

谁能解释这是为什么,即使没有可用的解决方案?考虑到远程调试器的行为,我通过 VPN 的延迟几乎不符合人们的预期。我用最少的 lag/obstruction 通过 VPN 做各种其他事情。

我真的很难理解为什么远程调试器受到 VPN 的如此困扰,而基本上所有其他网络操作都很好。

谢谢,

你试过这个吗? http://www.gontu.org/how-you-can-debug-a-remote-java-application/

听起来您需要进行此设置才能通过 VPN 调试您的应用程序。顺便说一句,这也在 Stack Overflow posting.

中得到了回答

感谢你们的帮助,伙计们。幸运的是,我的一位同事也被同样的问题困扰,对它进行了深入研究。来自我同事的信件:

“我在我的 Eclipse 和我的 VM 之间设置了一个代理,它从我的 Eclipse 发送到我的 VM 的 JDWP 数据包中打印出命令代码。 http://docs.oracle.com/javase/8/docs/platform/jpda/jdwp/jdwp-protocol.html 页面向我解释了这些命令的含义。 我看到的是:每次我逐步执行代码时,Eclipse 都会向 VM 发送数十个 "thread monitor" - 相关命令。它们与以下 VM 功能相关:canGetMonitorInfo、canGetCurrentContendedMonitor、canGetOwnedMonitorInfo、canGetMonitorFrameInfo

这些功能导致了疯狂的延迟。他制定了一个强制禁用这些功能的解决方案,并且调试器的可用性猛增。显然,远程调试器的线程监控功能不再有效,但考虑到远程调试器以前的不可用,这是一个很好的妥协。

我会尝试找出他究竟做了什么来禁用线程监视器功能。

从对一个相当大的项目(将近 100 个子项目,ping 时间约 200-300 毫秒)的非常轻的测试来看,与 Eclipse 相比,Netbeans 似乎表现不错。

您可以一步到位,只需几秒钟即可在 < 1 分钟内完成更新和附加。

不能使用 Eclipse 当然很烦人,但它是一个 GUI,因此比普通的 JDB 好得多。

禁用 Show monitor 确实帮助了我。
Bottom facing triangle 在调试角度很难发现。所以 只需发布 link.

中缺少的图像