13

如何在 Java 程序中打开和关闭调试?如何在不重新编译 java 程序的情况下打开和关闭调试?

4

4 回答 4

18

Java 虚拟机的设置允许附加调试器,例如 jdb。请参阅 http://docs.oracle.com/javase/7/docs/technotes/tools/windows/jdb.html

这是重要的一点:

在启用调试的 JVM 中运行 MyClass:

java -agentlib:jdwp=transport=dt_shmem,address=jdbconn,server=y,suspend=n MyClass

使用 jdb 调试器

jdb -attach jdbconn 

注意:这些选项设置用于通过共享内存连接本地机器上的 JVM <-> 调试器,其他有用的设置允许通过网络套接字连接到远程机器上的 JVM。

于 2013-07-13T13:19:32.463 回答
2

您必须考虑两件事:

  • 您只需编译一次代码即可获得调试信息;并且默认生成源文件和行号调试信息(文档);
  • 当您调用 JVM 时,是否可以进行调试是受控的。

对于 Oracle 的 JVM,这组选项将允许插入在端口 12345 (TCP) 上实现 JDWP(Java 调试有线协议)的调试器:

-Xdebug -Xrunjdwp:server=y,suspend=n,transport=dt_socket,port=12345

注意suspend=n; 如果这样做suspend=y,除非您实际连接调试器,否则 JVM 将不会运行...

最后,一个很好的链接解释了 JDWP、JVM[DPT]I 背后的角落和缝隙:这里

也是 jdb 的教程,其他答案已经提到过。

于 2013-07-13T13:33:11.897 回答
1

使用 jdb 从命令行进行调试。

话虽这么说,我不知道“关闭和打开调试”是什么意思。

于 2013-07-13T13:14:06.207 回答
0

不使用IDE调试

1)你可以用断言编写你的java程序。您可以随时启用/禁用它们。

2) 你可以使用用 log4j.properties 配置的日志。在您的 Java 程序中,您可以随时指定信息和调试日志,当您想要显示调试或信息日志等时,您可以在 log4j.properties 中进行简单配置...

于 2013-07-13T13:30:42.573 回答