如何在 Java 程序中打开和关闭调试?如何在不重新编译 java 程序的情况下打开和关闭调试?
4 回答
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。
您必须考虑两件事:
- 您只需编译一次代码即可获得调试信息;并且默认生成源文件和行号调试信息(文档);
- 当您调用 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 的教程,其他答案已经提到过。
使用 jdb 从命令行进行调试。
话虽这么说,我不知道“关闭和打开调试”是什么意思。
不使用IDE调试
1)你可以用断言编写你的java程序。您可以随时启用/禁用它们。
2) 你可以使用用 log4j.properties 配置的日志。在您的 Java 程序中,您可以随时指定信息和调试日志,当您想要显示调试或信息日志等时,您可以在 log4j.properties 中进行简单配置...