Intellij Idea 简明教程

Intellij Idea - Debugging

调试器可以使应用程序调试更为容易。通过使用调试器,可以停止程序在某个时间点的执行、检查变量、深入某项功能、并执行许多操作。IntelliJ 提供内置的 Java 调试器。

Breakpoints

断点允许停止程序在某个时间点的执行。可以通过将鼠标悬停在编辑器的边距区域上并单击该区域来设置断点。

以红色圆圈符号表示断点。考虑在第 3 行设置断点。

breakpoint

考虑以下步骤来进一步了解断点的工作方式 -

  1. 右键单击红色圆圈符号。

  2. Select the More options.

  3. 只需单击同一符号即可删除断点。

按照以下步骤来启动调试器 -

  1. 导航到“运行”菜单。

  2. Select the Debug option.

Step into

在调试过程中,如果遇到一个函数并且选择了进入操作,则调试器将如同该函数启用了调试那样在该函数的每个点停止程序执行。

例如,当程序执行到达第 9 行并且如果我们选择进入操作时,它将在 sayGoodBye() 函数中的每行停止执行。

program execution

Step out

“跳出”操作与“进入”操作完全相反。例如,如果您在上述场景中执行“跳出”操作,那么调试器将返回 sayGoodBye() 函数并在第 10 行开始执行。

step out

Step over

“跨步执行”操作不会进入函数,而是会跳转到代码的下一行。例如,如果您在第 9 行并执行“跨步执行”操作,那么它将把执行移动到第 10 行。

step over

Resume Program

“继续程序”操作将通过忽略所有断点来继续执行程序。

breakpoints

Stop action

“停止”操作有助于停止调试器。

stop action

Smart step into

在调试过程中,我们有时可能会到达调用多个方法的一行代码。在调试这些代码行时,调试器通常允许我们使用 step into 并引导我们遍历所有子函数,然后返回到父函数。但是,如果我们只想进入一个子函数怎么办?使用智能单步进入,它允许我们选择要进入的函数。

现在,让我们用以下代码行创建一个 Java 类:

public class HelloWorld {
   public static void main(String[] args) {
      allFunctions();
   }
   static void allFunctions() {
      System.out.println(function1() + " " + function2() + " " + function3());
   }
   static String function1() {
      return "function1";
   }
   static String function2() {
      return "function2";
   }
   static String function3() {
      return "function3";
   }
}

在上面的代码中, allFunctions() 调用了 3 个附加函数。让我们在这个函数中设置断点。按照以下步骤执行智能单步进入:

  1. Go to run

  2. Select smart step into.

  3. 选择要采用的子函数。

child function

Inspecting variables

在调试过程中,IntelliJ 在编辑器窗口本身中显示变量的值。我们还可以在调试窗口中查看相同的信息。

inspecting variables

Evaluate expression

“求值表达式”允许动态求值表达式。按照以下步骤执行此操作:

  1. Start application in debugger

  2. Navigate to Run→Evaluate expression.

  3. 输入表达式。在下面给出的示例中,变量‘i’的当前值为 0;因此,表达式‘i > 100’将求值为 false

evaluate expression