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