【问题标题】:Debugging - IntelliJ can not connect to debug enabled JVM on a remote server调试 - IntelliJ 无法连接到远程服务器上启用调试的 JVM
【发布时间】:2017-08-25 20:19:11
【问题描述】:

我有一个典型的内部集群,其中包含一个登录节点和多个计算节点。首先,我使用以下参数运行了一个 JVM 实例,让我的 IntelliJ 调试器连接到它。

-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005

这个登录节点有一个可公开访问的地址,我主要通过 ssh 进入该地址以启动作业。但是,当我尝试将我的 IntelliJ 调试器附加到此节点上的 JVM 实例时,连接只是计时它并且它无法连接,而我的 JVM 实例确实以挂起模式启动,等待调试器连接到它。

更新: 最初的问题似乎是我无法访问我的服务器上的任何其他端口,除了我用来 SSH 到它的端口 22。无论如何,我能够创建一个 SOCK5 代理,配置 IntelliJ 以使用该代理,然后成功测试连接,如下所示:

调试器控制台上的输出显示 IntelliJ 成功地能够访问指定主机名上的该端口,尽管是 HTTP 请求而不是 JWP 请求。

但是,当我继续将调试器连接到同一主机:端口组合时,我无法这样做并收到以下错误:

我也尝试设置suspend=n,但无济于事。

【问题讨论】:

  • 你能从运行 IntelliJ IDEA 的机器远程登录到指定的地址/端口吗?如果不是,那是与 IDE 无关的防火墙/网络问题。
  • here 所述,尝试使用suspend=n 启动JVM。
  • @CrazyCoder,请查看我对原始问题所做的更新。
  • @Sam,在设置 suspend=n 时尝试过。没有区别。
  • ssh -L 5005:localhost:5005 haseeb@myserver.com 会将localhost:5005 映射到 myserver.com 上的端口 5005(也在 myserver.com 的 localhost 接口上)。这样,在 IntelliJ IDEA 调试器中,您将连接到 localhost(在主机字段中指定)端口 5005,并且连接将转发到调试器在 localhost:5005 上侦听的远程服务器。有关 SSH 隧道如何工作的更多详细信息,请参阅 here

标签: java debugging intellij-idea jvm ide


【解决方案1】:

ssh -L 5005:localhost:5005 haseeb@myserver.com

localhost:5005 映射到myserver.com 上的端口5005(也在myserver.comlocalhost 接口上)。这样,在 IntelliJ IDEA 调试器中,您将连接到 localhost(在 Host 字段中指定)端口 5005,并且连接将转发到调试器侦听 localhost:5005 的远程服务器.

请参阅here 了解 SSH 隧道如何工作的更多详细信息

【讨论】:

    猜你喜欢
    • 2015-02-14
    • 2014-01-07
    • 1970-01-01
    • 2018-07-01
    • 2017-02-02
    • 2017-04-15
    • 2015-05-30
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多