专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 Eclipse调试的方法

Eclipse调试的方法

更新时间:2022-01-18 11:04:33 来源:动力节点 浏览2389次

基本概念

Eclipse 对调试应用程序有很好的支持。它可视化逐步执行并帮助我们发现错误。

为了演示 Eclipse 中的调试功能,我们将使用一个示例程序PerfectSquareCounter。该程序计算给定数字下的完美平方总数,甚至完美平方数:

public class PerfectSquareCounter {
    static int evenPerfectSquareNumbers = 0;
    public static void main(String[] args) {
        int i = 100;
        System.out.println("Total Perfect Squares: " + calculateCount(i));
        System.out.println("Even Perfect Squares : " + evenPerfectSquareNumbers);
    }
    public static int calculateCount(int i) {
        int perfectSquaresCount = 0;
        for (int number = 1; number <= i; number++) {
            if (isPerfectSquare(number)) {
                perfectSquaresCount++;
                if (number % 2 == 0) {
                    evenPerfectSquareNumbers++;
                }
            }
        }
        return perfectSquaresCount;
    }
    private static boolean isPerfectSquare(int number) {
        double sqrt = Math.sqrt(number);
        return sqrt - Math.floor(sqrt) == 0;
    }
}

(1)调试模式

首先,我们需要在 Eclipse 中以调试模式启动 Java 程序。这可以通过两种方式实现:

右键单击编辑器并选择Debug As -> Java Application(如下图所示)

从工具栏调试程序(在下面的屏幕截图中突出显示)

(2)断点

我们需要定义程序执行应该暂停以进行调查的点。这些称为断点,适用于方法。它们也可以在执行之前或执行期间随时定义。

基本上,有 3 种方法可以在程序中添加断点:

右键单击该行对应的标记栏(垂直标尺),然后选择 Toggle Breakpoint(如下图所示)

在编辑器中按Ctrl+Shift+B在必要的行上

双击所需行对应的标记栏(垂直标尺)

(3)代码流控制

现在调试器在给定的断点处停止,我们可以继续执行进一步的操作。

让我们假设调试器当前按照下面的屏幕截图在第 16 行定位:

最常用的调试选项是:

Step Into (F5) -此操作进入当前行中使用的方法(如果有);否则,它继续到下一行。在此示例中,它将采用方法isPerfectSquare()中的调试器

Step Over (F6) –此操作处理当前行并进入下一行。在此示例中,这将执行方法isPerfectSquare()并继续执行下一行

Step Return (F7) -此操作完成当前方法并将我们带回调用方法。因为在这种情况下,我们在循环中有一个断点,它仍然在方法中,否则它会回到主方法

Resume (F8)——这个操作将继续执行直到程序结束,除非我们遇到任何进一步的断点

(4)调试视角

当我们在调试模式下启动程序时,Eclipse 会提示选择切换到调试透视图。Debug 透视图是一些有用的视图的集合,可帮助我们可视化调试器并与调试器交互。

我们也可以随时手动切换到 Debug 透视图。

以下是其中包含的一些最有用的视图:

调试视图——这显示了不同的线程和调用堆栈跟踪

变量视图——这显示了任何给定点的变量值。如果我们需要查看静态变量,我们需要明确指定

断点——这显示了不同的断点和观察点(我们将在下面看到)

Debug Shell – 这允许我们在调试时编写和评估自定义代码(稍后会介绍一个示例)

技巧

在本节中,我们将介绍一些有助于我们在 Eclipse 中进行调试的重要技术。

(1)变量

我们可以在 Variables 视图下看到执行过程中变量的值。为了查看静态变量,我们可以选择下拉选项Java -> Show Static Variables。

使用变量视图,可以在执行期间将任何值更改为所需值。

例如,如果我们需要跳过一些数字并直接从数字 80 开始,我们可以通过更改变量number的值来实现:

(2)检查值

如果我们需要检查 Java 表达式或语句的值,我们可以在编辑器中选择特定的表达式,右键单击,然后检查,如下所示。一个方便的快捷方式是在表达式上按 Ctrl+Shift+I 以查看值:

如果我们需要永久检查这个表达式,我们可以右键单击并观察。现在,它被添加到 Expressions 视图中,并且可以在不同的运行中看到这个表达式的值。

(3)调试外壳

在调试会话的上下文中,我们可以编写和运行自定义代码来评估可能性。这是在调试外壳中完成的。

例如,如果我们需要交叉检查sqrt功能的正确性,我们可以在 Debug Shell 中进行。在代码上,右键单击 -> Inspect以查看值:

(4)条件断点

在某些情况下,我们只想针对特定条件进行调试。我们可以通过以下两种方式之一向断点添加条件来实现这一点:

右键单击断点并选择断点属性

在断点视图中,选择断点并指定条件

例如,我们可以指定断点,仅当number等于 10 时才暂停执行:

(5)观察点

断点用于方法, 观察点用于类级变量。在当前示例中,evenPerfectSquareNumbers声明上的断点称为观察点。现在,每次在观察点上访问或修改字段时,调试器都会暂停执行。

这是默认行为,可以在观察点的属性中进行更改。

在这个例子中,每次完美平方为偶数时,调试器都会停止执行:

(6)触发点

假设我们正在调试具有大量源代码的应用程序中的复杂问题。由于断点分散,调试器将继续暂停流程。

当一个断点被标记为触发点时,意味着其余的断点只有在这个断点被命中时才会被启用。

例如,在下面的屏幕截图中,isPerfectSquare()上的断点应该在循环中的每次迭代中被命中。但是,我们已将calculateCount()方法上的断点指定为触发点以及条件。

因此,当迭代计数达到 10 时,这将触发其余的断点。因此,从现在开始,如果isPerfectSquare()上的断点被命中,执行将暂停:

(7)远程调试

最后,如果应用程序在 Eclipse 之外运行,我们仍然可以使用上述所有功能,前提是远程应用程序允许调试。在 Eclipse 中,我们将选择Debug 作为 Remote Java Application。

结论

在本快速指南中,我们了解了在 Eclipse IDE 中调试程序的基础知识和不同的技术。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>