【发布时间】:2026-02-24 23:20:07
【问题描述】:
我的 Java 程序是否可以在调试模式下启动第二个 JVM(通过 ProcessBuilder,例如运行 javaw.exe),以便它出现在 Eclipse 的调试窗口中?
如果有,怎么做?
【问题讨论】:
-
不是重复的,请阅读整个问题。这是一个 Eclipse 特有的问题。
标签: java eclipse debugging jvm
我的 Java 程序是否可以在调试模式下启动第二个 JVM(通过 ProcessBuilder,例如运行 javaw.exe),以便它出现在 Eclipse 的调试窗口中?
如果有,怎么做?
【问题讨论】:
标签: java eclipse debugging jvm
实现您(可能)想要的一种可能方法:启用第二个 jvm 进行远程调试。据我记得,您可以告诉 jvm 等到远程调试器连接到会话。然后,在生成“child jvm”之后,在 eclipse 中启动一个远程调试会话。
This is the set of parameters for a classic VM:
java -Xdebug -Xnoagent -Djava.compiler=NONE
-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005 ...
(suspend=y 告诉 jvm 等待调试器,5005 是本例中的端口)
Starting from JavaSE 1.5, these were replaced with a standardized parameter:
java -agentlib:jdwp=transport=dt_socket,address=localhost:9009,server=y,suspend=y
【讨论】:
如果你正在开发一个 Eclipse 插件,你可以使用 Eclipse 的机制来启动一个新的应用程序,基本上是使用 DebugUITools
org.eclipse.debug.core.DebugPlugin.launch(configuration, "debug");
我曾经用它在调试模式下启动应用程序,它按预期工作,包括完全支持在 eclipse 中设置的断点、变量内省等。如果这是你正在寻找的,你应该试一试。
【讨论】: