繁体   English   中英

有哪些有效的方法/工具可以帮助调试Java?

[英]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时。

不仅仅是将调试信息打印到控制台,还可以使用log4j之类的日志系统。

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

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

我的调试类看起来像这样。

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

我强烈建议使用诸如NetBeans或Eclipse之类的IDE。 他们带有调试器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM