【发布时间】:2013-01-11 05:14:48
【问题描述】:
如果您使用参数-Xdebug -agentlib:jdwp=transport=dt_socket,suspend=n,server=y,address=9000 运行Java 进程,则一旦调试器附加到该端口,该进程就会停止侦听该端口。然后,一旦调试器分离,您将无法再次连接到它。分离后有什么方法可以附加调试器?还是有一个jdwp代理服务器一直挂在进程上,允许调试器随意挂载和分离?
【问题讨论】:
-
我一直用 JBoss 和 eclipse 调试器来做这个,我可以重新连接就好了。我不知道为什么一旦分离就无法重新连接。您还有其他一些可能对这里产生影响的内容要补充吗?
-
哦,你是对的。我没有意识到在调试器分离后 java 会再次尝试绑定到端口。如果该端口上已经有另一个进程,它只会记录一个错误
ERROR: transport error 202: bind failed: Address already in use -
我需要重新审视我启动所有进程以使它们可调试的方式(我目前在将端口分配给 jdwp 之前搜索高于 9000 的未使用端口,如果端口已分配但该进程是重用当前附加到调试器)。