更新时间:2022-09-01 10:48:37 来源:极悦 浏览2472次
在Java中怎么debug?极悦小编来告诉大家。
1.设置一个实际的调试断点。这可以通过双击代码的左边框或右键单击左边框(行号旁边)并选择“切换开/关”来完成
2.如何在Debug模式下启动程序。所以大家都熟悉main方法了。
右键单击“Main”方法->选择运行方式-> Java应用程序。
但这次我们将选择 Debug 作为 Java 应用程序,而不是使用 Run as Java 应用程序。
右键单击 Main 方法 -> 选择调试为 -> Java 应用程序。
它切换到不同的视角。这称为调试透视图,您将在此处看到。调试视角。实际上,这只是代码的不同视图,可以让您更好地调试。因此,这只是进行调试的一种更简单的方法。它向您显示您的变量(在右上角)以及您的程序可能在其中运行(或暂停)的任何线程。
如您所见,我们在调试模式下运行我们的程序,现在我们有一条突出显示的绿线,表示 Java 代码实际上已暂停并等待执行这行代码。好吧,这很酷。我们如何真正告诉它执行那行代码?在屏幕顶部,ares 控件允许我们控制调试流程。所以这里我们有 Resume 按钮。所以如果我点击这个。它基本上会运行代码,直到它遇到另一个断点或直到执行完成。终止按钮,这是不言自明的。它将停止调试模式,它实际上会在您所在的位置终止程序。所以它实际上不再执行代码,它只会停止,退出。不会再发生什么了。
现在我们有了“步入”。现在这个,我不经常使用它,因为有时你会进入 Java 的细节代码。您将进入实际的 Java 类文件。我可能可以向您展示那是什么样的,但我还不想这样做。我很少使用它。
通常我使用“Step Over”,这意味着执行这行代码,然后继续下一行。所以如果我现在这样做。如果我单击“Step Over”,它将执行这整行代码,这将反过来实例化这个类。现在,在实例化这个类时,代码必须进入文件 IO 类的构造函数并执行构造函数内的代码。嗯,这正是我们在FileIO. 这个 publicFileIO是构造函数,这里的代码是该构造函数内部的所有内容。因为我们在第 16 行设置了一个断点,所以代码应该在第 16 行停止。所以让我们看看这是否真的发生了。
让我们回到这里。我要点击“Step Over”,然后就可以了。所以现在代码已经执行了我们的文件 IO 构造函数的实例化。它被声明为我们的BufferedReader,它执行了 try 块的第一部分。现在我们正在等待实例化BufferedReader. 然后它FileReader用我们传入的文件名实例化 a 。
在调试模式下,真正的好处是我们可以将鼠标悬停在变量上,它实际上会向我们显示该变量的值是什么。让我提出来,你去。
因此,我们根据传递给此构造函数的参数设置变量,该构造函数在我的程序中看到。所以我实际上将它硬编码为 C:aFile.txt。所以我要继续“跨过”这条线。会发生一些有趣的事情。让我们看看会发生什么。你本来希望转到下一行,但它却跳进了我们的 catch 块。
现在它为什么要这么做?嗯,那是因为现在在我当前的配置中,我根本没有将 aFile.txt 存储在 C 驱动器中。该文件不存在。那么会发生什么?好吧,它会抛出一个异常。所以 Java 会抛出一个异常,因为我们将这一行包裹在我们的 try 块中。然后它将进入 catch 块并捕获FileNotFoundException. 所以我们有一个FileNotFoundException我们实际上已经分配给一个变量名e.
同样,在调试模式下,您可以将鼠标悬停在变量上,它会向您显示有关该特定变量的所有信息。因此,我们将其视为FileNotFoundException. 我们看到一条详细的消息说,C:\aFile.txt(系统找不到指定的文件),我们有一个原因和所有这些东西。准确地知道问题出在哪里会很有帮助,这里的这一行e.printStackTrace()只会将有关错误的所有重要信息输出到我们的控制台中。
现在,“Resume”并让它执行其余的代码,这样现在代码就会流出完成。您现在看到线程已终止并且我们完成了。
所以这是一个非常简单的“如何调试”示例,但它是如此强大的工具,在我们完成这里之前,现在真的很快。
右键单击“Main”方法->转到调试为-> Java应用程序。
所以我们在这里为第一行设置了断点,就像之前一样,将进入“Step Into”。
当点击它时,你会看到会发生什么。我们现在进入了一个ClassLoader.class文件,它是 Java lang 包的一部分,对我们没有多大帮助。我猜这段代码是由制作 Java 的人编写的,他们的代码破坏这个代码的可能性非常小。所以它变得非常复杂。
右键单击“main”方法->选择调试为-> Java应用程序->跳过或恢复
这并不重要,因为有第二个断点。如果恢复,会到这里,所以现在文件应该存在那里。
所以让“跳过”这个,然后你就可以了。所以现在如果我们将鼠标悬停在BufferedReader,我们就有了一些东西。而且我们能够不断地跳过代码。现在我们进入我们的while循环,您会看到它转到第一个System.out为文件准备好的行,这是文件中的第 1 行。
我们再次说“step over”,我们会看到一些控制台输出,所以这是了解代码如何流动的好方法。很有用。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习