Eclipse Java远程调试器在VPN上非常慢

时间:2015-02-10 13:55:01

标签: java eclipse debugging vpn

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

任何人都可以解释为什么会这样,即使没有可用的解决方案?考虑到远程调试器的行为,我通过VPN的延迟几乎不是人们期望的。我通过VPN做各种其他的事情,最小的滞后/阻塞。

我真的很难理解为什么远程调试器受到VPN的影响,基本上每个其他网络操作都没问题。

谢谢,

4 个答案:

答案 0 :(得分:10)

感谢您试图帮助,伙计们。幸运的是,受同样问题困扰的我的一位同事深入研究了它。来自我同事的信件:

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

这些能力造成了疯狂的滞后。他已经制定了一个强制禁用这些功能的解决方案,并且调试器的可用性飙升。显然,远程调试器的线程监视功能不再有效,但考虑到之前远程调试的不可用性,这是一个很好的折衷方案。

我将尝试找出他是如何做的,以禁用线程监控功能。

答案 1 :(得分:3)

禁用function f(input, acc) { acc = acc || 'f' if (input === undefined) { return function(a) { return f(a, acc + 'o') } } return acc + input } console.log(f('l')) console.log(f()('')) console.log(f()('l')) console.log(f()()('foo'))确实帮助了我。
在调试透视图中很难发现Show monitor。所以 只需发布链接中缺失的图像。

enter image description here

答案 2 :(得分:0)

通过对一个相当大的项目(几乎100个子项目,ping时间~200-300ms)的非常轻微的测试,与Eclipse相比,Netbeans似乎做得很好。

您可以步进,并且需要几秒钟的时间来更新并附加< 1分钟。

无法使用Eclipse当然很烦人,但它是一个GUI,比普通的JDB更好。

答案 3 :(得分:-1)

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

听起来你需要设置它才能通过VPN调试你的应用程序。顺便说一下,这也是SO posting中的答案。

我希望这有助于你的情况。祝你好运!