这是我的问题.更具体地说,我正在尝试习惯Eclipse的调试器,我想知道在某些情况下打印到控制台是否仍然完成,或者它是否被认为是一种应该完全避免的不良做法.还有什么可以被认为是整体调试的好方法?
Meh*_*dad 10
请System.err.println()改用.
为什么?
System.out.println()经常被重定向到文件或其他输出,而这几乎总是打印在控制台上.它更容易调试,也是正确的方法.
编辑(警告:主观):
因为你问过是否System.out.println应该完全避免:我不相信你必须经常避免的任何事情,无论是使用goto,使用BSOD使计算机崩溃,还是其他什么.有时你只需要一种快速而又肮脏的方式来快速完成小事情,而且很明显,你花费1小时就不值得尝试以"正确"的方式做事,而不是5 - 无论多么好的"好"方式,都能解决问题.在决定是否应该使用某些东西时使用你的判断,但从不为自己设定规则,比如"我永远不会使用goto!".:)
编辑2(示例):
假设您正在调试崩溃的驱动程序,并且您怀疑if正在执行不应执行的语句.而不是花费三个小时来找出如何使用ZwRaiseHardError来显示消息框,而只是KeBugCheck在内部调用if并使darned系统崩溃.当然,你会重新启动,但除非重启需要几个小时,否则你只需要节省很多时间.
最好的选择是日志库(当然,这会为您的项目增加额外的依赖性).例如,查看commons-logging.主要优点是您可以在DEBUG级别编写调试消息,并且在部署代码时,您只需将记录器配置为跳过这些消息(而不是在代码中搜索所有出现的System.out.println) .另一个很大的优点是记录器通常可以配置为在任何地方写入(甚至发送电子邮件或SMS),而无需触及您的代码.