Java API在运行的JVM中打开调试

时间:2011-08-03 23:35:30

标签: java debugging jpda

是否有一种编程方式可以在正在运行的JVM实例中打开调试?我正在寻找一个可以生成运行JVM的API,一个调试服务器。 API将相当于

-Xdebug -Xrunjdwp:transport=dt_socket,address=<host:port>,server=y,suspend=n. 

3 个答案:

答案 0 :(得分:1)

这是不可能的。 JVM必须从一开始就知道它处于调试模式。它的运行速度稍慢,但是为外部进程提供调试信息和断点,这在JVM已经启动时是不可能的。

答案 1 :(得分:1)

您可以使用Visual VM附加到任何正在运行的JVM。请务必下载1.3.2版并安装所有插件。

答案 2 :(得分:0)

提问者引用的调试端口用于源代码调试,例如使用Eclipse调试器。 VisualVM的端口是JMX端口,它接受一组不同的JVM选项。但也有例外:JRockit的Mission Control使用jdwp端口而不是JMX端口。

是的,您可以在代码中动态加载JMX调试器。它很复杂但OSGI可以动态加载这个我相信。 For example, here is a reference to Jetty project doing this.