【问题标题】:Debugging a remote Java application with Eclipse as the server (Socket listen)使用 Eclipse 作为服务器调试远程 Java 应用程序(Socket 监听)
【发布时间】:2011-10-08 23:31:38
【问题描述】:

我正在尝试从 Eclipse 调试远程 Java 应用程序,Eclipse 充当服务器,而不是充当远程应用程序的客户端。我使用以下 JVM 选项启动远程应用程序,其中“server=n”将导致远程应用程序连接回 Eclipse(Socket Listen),而不是 Eclipse 连接到远程应用程序(Socket Attach)。

-Xdebug -Xrunjdwp:transport=dt_socket,server=n,suspend=n,address=8000

最后,我将 Eclipse 配置为侦听端口,然后启动远程应用程序。该应用程序连接到 Eclipse 并且我的断点被命中。但是,当我使用上述 JVM 选项启动远程应用程序的第二个实例时,应用程序失败并出现以下错误,表明它无法连接到 Eclipse。

ERROR: transport error 202: connect failed: Connection refused 

Eclipses 的远程调试中是否存在一个已知问题,即在给定时间限制只有一个远程应用程序连接到它?

感谢您提供任何见解。

【问题讨论】:

  • 根据我的经验,这适用于所有处于调试模式的 Java 应用程序(不仅仅是 Eclipse)。这不是客户端限制。但我不知道 vm 监视器需要不同的部分。 (也许是不同的调试代理?)

标签: java eclipse remote-debugging


【解决方案1】:

要调试应用程序的第二个实例,您必须使用不同的端口地址(8000 除外)启动第二个实例,并在启动调试会话时引用该新端口号。

【讨论】:

  • Dean,如果调试器是被调试者的客户端,就会出现这种情况。 Java 提供了另一种调试方法,其中被调试者是客户端,调试器是服务器。调试器应在被调试者启动之前侦听端口。我希望调试器在一个固定端口上侦听,并将所有已调试的应用程序连接回同一端口上的调试器。不幸的是,这不起作用,因为我通过实验发现调试器在这种模式下一次只接受一个连接。
  • 确实如此(我不知何故错过了您问题的“使用 Eclipse 作为服务器”部分)。 AFAIK 为了实现这一点,必须启动多个 eclipse 实例,每个端口一次。
【解决方案2】:

是的,在 Run Configurations->Remote Java Application 中有一个选项。

【讨论】:

    猜你喜欢
    • 2016-10-03
    • 2020-08-03
    • 2010-10-02
    • 2014-08-13
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多