Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
帮助调试Java的有效方法/工具有哪些?_Java_Debugging - Fatal编程技术网

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

帮助调试Java的有效方法/工具有哪些?,java,debugging,Java,Debugging,在PHP中,我总是var\u dump处理所有内容。在Java中,当我调试诸如ImplementBFS之类的程序时。我发现只System.out.println任何东西都非常困难,尤其是当有大量循环时 我认为我的实践和工作流程很差。我可以使用JUnit,但当我必须通过每一个步骤来确保每一个小事情都是正确的或错误的,如果变量设置正确并检查每个部分,我不确定JUnit是否比System.out.println快 我肯定我可能做错了什么,所以我想向社区寻求更好的做法 编辑:我使用Eclipse,只是想

在PHP中,我总是
var\u dump
处理所有内容。在Java中,当我调试诸如ImplementBFS之类的程序时。我发现只
System.out.println
任何东西都非常困难,尤其是当有大量循环时

我认为我的实践和工作流程很差。我可以使用JUnit,但当我必须通过每一个步骤来确保每一个小事情都是正确的或错误的,如果变量设置正确并检查每个部分,我不确定JUnit是否比
System.out.println

我肯定我可能做错了什么,所以我想向社区寻求更好的做法


编辑:我使用Eclipse,只是想让你们知道。然而,我不知道如何利用它的每一个方面。我只是编写代码、调试和编译。有时,当我需要使用JUnit时。

我建议您从开始使用JUnit,而不只是将调试信息打印到控制台,而是使用类似JUnit的日志系统


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

我强烈建议使用NetBeans或Eclipse之类的IDE。它们附带了一个调试器。

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

我的调试类看起来像这样

Debug.java 主程序。 这将提供一个输出,如

控制台输出
[hospitalcase.DbIniParser.readFile(DbIniParser.java:35)]=>hjess密码myFunnyDatabase localhost 3306要进行调试,请使用调试器。对于单元测试,使用单元测试框架。它们是不同的东西。@pst感谢您更改标题!他不应该使用eclipse进行调试(我个人更喜欢Intellij)。这是因为视频展示了调试器的概念,它的使用是Doug所问的。您正在做什么与日志框架的工作非常相似。例如,考虑检查,你应该看看,当然是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 + "");
    }
}
   [...]
    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 <=