2013-07-13 65 views
9

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

+4

这是记录的目的。您可以轻松简单地设置日志记录状态。 –

+2

不明确。你想要做什么?你想如何调试? – fge

+2

我同意@HovercraftFullOfEels。使用日志记录并将日志级别设置为任何你想要的。 –

回答

2

不使用IDE调试

1)你可以写与断言Java程序。当你想要时,你可以启用/禁用它们。

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

+0

我们使用记录器吗? –

+1

轻松配置log4j-1.3alpha0.jar,log4j.properties文件和 b)org.apache.log4j.Logger logs = Logger.getLogger(MyJavaFile.class); logs.info(“这是信息日志”); logs.debug(“this debug logs”); (可以在log.info()中使用所有System.out.pritnln()示例 logs.info(“用户名”+用户名);等等...) 您可以在log4j.properties中指定: log4j.rootLogger =信息 或 log4j.rootLogger = DEBUG – Akshat

+0

@akshat ...感谢它帮了很多...... –

1

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

这就是说,我不知道“打开和关闭调试”的含义。

+1

某些语言在编译时需要调试器支持。不像java那样在运行时。 –

11

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

这是最重要的一点:

运行MyClass的在调试JVM启用:

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

使用JDB调试

jdb -attach jdbconn 

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

+2

原始海报真正想到的可能是:1.)打开和关闭日志输出2.)编译添加调试信息(类似于C/C++)。 – mvw

+0

你很想帮助提问者。但是,仅在某些情况下留下只有链接的答案可能有害。虽然现在你的回答很好,但如果链接永远不会消失,你的回答就会失去它的价值。因此,如果您在回答中总结文章中的内容,这将会很有帮助。请参阅[本](http://goo.gl/wQTjc)问题的澄清。 – pascalhein

1

有两件事情你必须要考虑:

  • 您只需编译一次代码即可获得调试信息;并且默认情况下会生成源文件和行号调试信息(documentation);
  • 当您调用JVM时,是否能够调试

对于Oracle的JVM,这组选项将允许在执行关于12345端口JDWP(Java调试线协议)(TCP)调试器插件:

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

suspend=n;如果你这样做suspend=y,JVM将无法运行,除非你实际连接调试器...

最后,一个很好的链接解释背后JDWP角落和缝隙,JVM [DPT]我:here

Here也jdb的教程,已经被其他答案提及。

相关问题