【问题标题】:Can you attach a debugger to a Java process after detaching?分离后可以将调试器附加到 Java 进程吗?
【发布时间】: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 的未使用端口,如果端口已分配但该进程是重用当前附加到调试器)。

标签: java debugging jdwp


【解决方案1】:

简短的回答是肯定的,您应该能够重新连接。这样做应该没有问题。如果多个应用程序在分离/附加期间尝试绑定到同一个端口,可能会出现竞争条件,但我没有看到任何其他可能的问题。

【讨论】:

    猜你喜欢
    • 2012-01-15
    • 1970-01-01
    • 2012-11-09
    • 2012-09-15
    • 2019-01-31
    • 2019-08-12
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多