Nic*_*zza 8 java eclipse debugging
我有一个复杂的应用程序与几个不同的JVM.
JVM 1执行大约5分钟的工作,然后触发另一个JVM2来完成一些额外的工作.
我想调试JVM2.所以我在JVM2的启动脚本上打开一个远程套接字调试器:
-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
我设置了这样的Eclipse远程调试会话:
连接类型:标准(套接字连接),主机:localhost,端口:8000
如果我等待JVM2启动,然后启动调试器,它工作正常.
然而,经过5分钟的等待后,点击调试器真的很难得到足够的重视.
如果我在JVM2打开之前启动远程调试器......我明白了
Failed to connect to remote VM. Connection refused.
Connection refused: connect
Run Code Online (Sandbox Code Playgroud)
有没有让远程调试器连续尝试连接?
我尝试使用Eclipse远程调试连接类型:Socket Listen
但这会阻止端口,JVM2在启动时会出现此错误:
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
Run Code Online (Sandbox Code Playgroud)
如何让远程调试器一遍又一遍地尝试?
将评论转化为后来的人们的回答:
可以server=n
在-Xrunjdwp
交换机中指定并将debugee作为客户端连接到调试器服务器.
为了使这项工作,调试器配置应该在eclipse中使用"Socket Listen"选项进行设置,如下所示:
然后可以启动客户端:
java -Xdebug -Xrunjdwp:transport=dt_socket,server=n,suspend=n,address=8000 -jar foo.jar
Run Code Online (Sandbox Code Playgroud)
或类似的.