【问题标题】:How to debug a Java program without using an IDE?如何在不使用 IDE 的情况下调试 Java 程序?
【发布时间】:2013-07-13 13:12:18
【问题描述】:

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

【问题讨论】:

  • 这就是日志记录的目的。您可以轻松简单地设置日志记录状态。
  • 不清楚。你到底想做什么?你想怎么调试?
  • 我同意@HovercraftFullOfEels。使用日志记录并将日志级别设置为您想要的任何内容。
  • 谢谢@HovercraftFullOfEels 我会试试...
  • 不能在编译时开启和关闭调试,所以这不是你必须避免的。 (可以关闭调试信息,但很少需要这样做)

标签: java


【解决方案1】:

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。

【讨论】:

  • 原发帖者真正想到的可能的事情:1.) 打开和关闭日志输出 2.) 添加调试信息进行编译(类似于 C/C++)。
  • 很高兴您能帮助提问者。但是,在某些情况下,只留下一个链接的答案可能是有害的。虽然你现在的答案很好,但如果链接死了,你的答案就会失去它的价值。因此,如果您在答案中总结文章中的内容,将会很有帮助。请参阅this 问题以获得澄清。
【解决方案2】:

您必须考虑两件事:

  • 您只需编译一次代码即可获得调试信息;并且默认生成源文件和行号调试信息(documentation);
  • 调试与否的能力在您调用 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 背后的角落和缝隙:here

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

【讨论】:

    【解决方案3】:

    使用 jdb 从命令行调试。

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

    【讨论】:

    • 某些语言需要在编译时请求调试器支持。不像 java 那样在运行时。
    【解决方案4】:

    不使用IDE调试

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

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

    【讨论】:

    • 我们如何使用记录器??
    • 您可以轻松配置 log4j-1.3alpha0.jar 、 log4j.properties 文件和 b) org.apache.log4j.Logger logs = Logger.getLogger(MyJavaFile.class); logs.info("这是信息日志"); logs.debug("这个调试日志"); (所有 System.out.pritnln() 都可以在 log.info() 示例 logs.info(" user name "+username); ect...) 中使用 log4j.properties 你可以指定:log4j.rootLogger=INFO或 log4j.rootLogger=DEBUG
    猜你喜欢
    • 1970-01-01
    • 2010-09-27
    • 2015-08-17
    • 2015-07-06
    • 1970-01-01
    • 2011-07-04
    • 2020-03-27
    • 2021-09-04
    • 1970-01-01
    相关资源
    最近更新 更多