首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何让Eclipse远程调试器在JVM最终连接之前一直监听端口?

如何让Eclipse远程调试器在JVM最终连接之前一直监听端口?
EN

Stack Overflow用户
提问于 2014-08-20 05:44:34
回答 1查看 9.8K关注 0票数 8

我有一个包含几个不同JVM的复杂应用程序。

JVM1完成大约5分钟的工作,然后启动另一个JVM2来做一些额外的工作。

我想调试JVM2。所以我在JVM2的启动脚本上打开了一个远程套接字调试器:

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

我将Eclipse远程调试会话设置如下:

连接类型:标准(套接字连接),主机:本地主机,端口: 8000

如果我等待JVM2启动,然后启动调试器,它工作得很好。

然而,在长达5分钟的等待之后,真的很难引起足够的注意来点击调试器。

如果我在JVM2打开之前启动远程调试器...我得到了

代码语言:javascript
运行
复制
Failed to connect to remote VM. Connection refused.
Connection refused: connect

有没有办法让远程调试器不断尝试连接?

我尝试使用Eclipse Remote Debug Connection Type:Socket Listen,但这会阻塞端口,并且JVM2在启动时会显示以下错误:

代码语言:javascript
运行
复制
FATAL ERROR in native method: JDWP No transports initialized, jvmtiError=JVMTI_ERROR_INTERNAL(113)
ERROR: transport error 202: bind failed: Address already in use ["transport.c",L41]
ERROR: JDWP Transport dt_socket failed to initialize, TRANSPORT_INIT(510) ["debugInit.c",L500]
JDWP exit error JVMTI_ERROR_INTERNAL(113): No transports initialized

如何让远程调试器一遍又一遍地尝试?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-20 15:18:59

把评论变成对后来来的人的回答:

可以在-Xrunjdwp开关中指定server=n,并让被调试者作为客户端连接到调试器服务器。

要实现这一点,应该使用eclipse中的"Socket Listen“选项来设置调试器配置,如下所示:

然后,可以使用以下命令启动客户端:

代码语言:javascript
运行
复制
java -Xdebug -Xrunjdwp:transport=dt_socket,server=n,suspend=n,address=8000 -jar foo.jar

或者类似的。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25393488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档