通常要将调试器附加到正在运行的JVM上,您需要使用以下参数启动JVM:
> java -Xdebug -Xrunjdwp:transport=dt_socket,address=1000,server=y,suspend=n
如果我想要调试一个没有在调试模式下启动的进程,我该怎么办?
这种情况会发生在生产系统(即在没有调试参数的情况下启动)出现“随机”错误(我松散使用此术语)。因此,我无法使用适当的参数重新启动jvm,因为没有人知道如何再次重现该错误。在这种情况下,无法连接到JVM吗?
只是为了澄清,除非已经以调试模式启动,否则无法像jdb这样的工具连接到已经运行的JVM。
来自JVM man页面:
使用jdb的另一种方法是将其附加到已经运行的Java VM上。要使用jdb调试的VM必须使用以下选项启动: