有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何调试ngrok隧道暴露的远程JVM

我的一台机器上有一个java进程,监听端口4502。我已经使用ngrok创建了一个隧道,这样我就可以在我的开发机器上访问应用程序。我面临的问题是将调试器连接到远程JVM

以下是我正在使用的调试java配置:

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

以下是应用程序隧道的ngrok配置:

ngrok http 4502

以下是通往JVM的隧道的ngrok配置(我也尝试了http协议,但没有成功):

ngrok tcp 5005

ngrok为tcp隧道输出以下内容:

Forwarding tcp://2.tcp.eu.ngrok.io:10928 -> 127.0.0.1:5005

使用IntelliJ,我将远程调试配置为:

Debugger mode: Attach to remote JVM
Host: tcp://2.tcp.eu.ngrok.io
Port: 10928

启动调试器时出现以下错误:

运行“调试作者桌面”时出错:无法打开调试器端口(tcp://2.tcp.eu.ngrok.io:10928):爪哇。伊奥。IOException“握手失败-连接过早关闭”

在运行java进程的机器上,我确保在启动进程之前5005端口已打开。在使用IntelliJ的机器上,我已确保10928端口已打开。我必须做什么才能将调试器附加到第二台机器上运行的进程?任何帮助都将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    我找到了解决办法。问题出在远程调试器配置中。指定主机时,不能包含协议。一旦我把tcp://2.tcp.eu.ngrok.io改成2.tcp.eu.ngrok.io,它就成功了