什么是有效的方法/工具来帮助调试Java?

时间:2011-12-17 08:43:16

标签: java debugging

在PHP中,我始终只是var_dump一切。在Java中,当我调试一个程序,如实现BFS。我发现只需要System.out.println一切都非常困难,特别是当有大量的循环时。

我认为我的练习和工作流程很差。我可以使用JUnit,但是当我必须完成每一步以确保每个小事都是真或假并且变量设置正确并检查每个部分时,我不确定JUnit是否比{{1更快}}

我确信自己可能做错了,所以我想向社区提出更好的做法。

编辑:我使用Eclipse,只是为了让你们知道。但是,我不知道如何利用它的每个方面。我只是编写代码,调试和编译。有时JUnit,当我被要求使用它时。

4 个答案:

答案 0 :(得分:3)

我建议你从"Using the eclipse debugger"

开始

答案 1 :(得分:2)

不要只是将调试信息打印到控制台,而是使用log4j之类的日志记录系统。

这提供了动态日志级别,日志记录可以通过配置发送到一组旋转文件。 (即,在开发过程中记录大量数据,只记录生产中的错误,而无需更改课程代码。)

答案 2 :(得分:1)

我对Java编码还很陌生,但我发现创建Debug类并调用它而不是进行大量System.out.println调用非常有用。

我的debuging课看起来像这样......

Debug.java

   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 + "");
    }
}

所以从程序中调用它

DbIniParser.java ..

   [...]
    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

答案 3 :(得分:0)

我强烈建议使用NetBeans或Eclipse等IDE。它们带有调试器。