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