[英]How to debug remote JVM exposed by ngrok tunnel
我的其中一台机器上有一个 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):java.io.IOException“握手失败 - 连接过早关闭”
在运行 java 进程的机器上,我确保在启动进程之前 5005 端口是打开的。 在使用 IntelliJ 的机器上,我确保 10928 端口已打开。 我必须做什么才能将调试器附加到在我的第二台机器上运行的进程? 任何帮助,将不胜感激。
我找到了解决方案。 问题出在远程调试器配置中。 指定主机时,不得包含协议。 一旦我将tcp://2.tcp.eu.ngrok.io
更改为2.tcp.eu.ngrok.io
,它就起作用了!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.