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.
中缺少的图像
有时我被迫离开办公室工作,这意味着我需要通过 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.