[英]What are effective methods/tools to aid in debugging Java?
在PHP中,我始终只是var_dump
一切。 在Java中,当我调试诸如BFS的程序时。 我发现仅对System.out.println
所有操作都非常困难,尤其是在存在大量循环的情况下。
我认为我的练习和工作流程很差。 我可以使用JUnit,但是当我必须完成每个步骤以确保每个小事情是对还是错,并且如果变量设置正确并检查每个部分时,我不确定JUnit是否比System.out.println
更快。 System.out.println
我确定自己可能做错了事,所以我想向社区寻求更好的做法。
编辑:我使用Eclipse,只是为了让大家知道。 但是,我不知道如何利用它的各个方面。 我只是编写代码,调试和编译。 有时,当我需要使用JUnit时。
我建议您从“使用Eclipse调试器”开始
不仅仅是将调试信息打印到控制台,还可以使用log4j之类的日志系统。
这提供了动态日志级别,并且可以通过配置将日志记录发送到一组旋转文件中。 (即在开发过程中记录大量数据,并且仅记录生产中的错误而不必更改课程代码。)
我对Java编码还很陌生,但是我发现创建一个Debug
类并调用它而不是进行很多System.out.println
调用非常有帮助。
我的调试类看起来像这样。
public class Debug {
private static boolean debugActive = true;
public static void setDebug(boolean debug) {
Debug.debugActive = debug;
}
public static void print(String str) {
if (debugActive) {
StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace();
StackTraceElement e = stacktrace[2];
String methodName = e.getMethodName();
System.out.print("[" + e + "]");
System.out.print(" => " + str);
System.out.println(" <= ");
}
}
public static void print(int x) {
print(x + "");
}
}
所以从程序中调用
[...]
Debug.print(DB_User);
Debug.print(DB_Pass);
Debug.print(database);
Debug.print(host);
Debug.print(port);
[...]
Debug.setDebug(true);
DbIniParser ini = new DbIniParser();
ini.readFile();
Debug.setDebug(false);
这提供了一个输出。
[hospitalcase.DbIniParser.readFile(DbIniParser.java:35)] => hjess <=
[hospitalcase.DbIniParser.readFile(DbIniParser.java:36)] => password <=
[hospitalcase.DbIniParser.readFile(DbIniParser.java:37)] => myFunnyDatabase <=
[hospitalcase.DbIniParser.readFile(DbIniParser.java:38)] => localhost <=
[hospitalcase.DbIniParser.readFile(DbIniParser.java:39)] => 3306 <=
通过使用类本身,可以将输出更改为日志文件或其他内容。
请注意,我只用了3个月就完成了编程,所以这种方法可能不是最佳选择,但是我发现它相当有用,而不是每次都执行System.out.print
。
我强烈建议使用诸如NetBeans或Eclipse之类的IDE。 他们带有调试器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.