llms.txt: machine-readable documentation index. Markdown version of this page is also available.

IntelliJ IDEA 2026.3 Help

教程:调试您的第一个 Kotlin 应用程序

您已经 创建并运行了您的 Kotlin 应用程序。 假设发现它的运行方式不符合预期。 例如,它会返回错误的值,或因异常而崩溃。 看起来代码中存在错误,是时候进行调试了。

什么是调试?

广义而言,调试是检测并纠正程序中错误的过程。

将会处理不同类型的错误。 其中一些错误很容易捕获,例如语法错误,因为编译器会处理它们。 另一种简单情况是,可以通过查看堆栈跟踪快速识别错误,这有助于找出原因。

但是,有些错误可能很棘手,需要很长时间才能找到并修复。 例如,程序早期出现的细微逻辑错误可能要到很久以后才会显现出来,因此很难理清问题。

这就是 调试器 派上用场的地方。 它是一种工具,可通过洞察程序的内部操作来高效查找错误。 这可以通过在指定点暂停执行、分析程序状态,并在必要时逐步推进执行来实现。 调试时,可以完全掌控一切。 本教程介绍一个基本的调试场景,帮助入门。

检查代码

让我们尝试一个简单的调试案例。 假设我们有以下应用程序:

fun main(args: Array<String>) { println("Average finder v0.1") val avg = findAverage(args) println("The average is $avg") } fun findAverage(input: Array<String>): Double { var result = 0.0 for (s in input) { result += s.toDouble() } return result }

该程序应计算作为命令行实参传入的所有值的平均值。

可以编译并运行且没有问题;但是,结果并不符合预期。 例如,当我们传递 1 2 3 作为输入时,结果是 6.0。

首先,需要思考错误可能来自哪里。 我们可以假设问题不在 print 语句中。 很可能,意外结果来自于我们的 findAverage 函数。 为了找出原因,让我们在运行时检查其行为。

设置断点。设置断点? no period? Title: 设置断点l?

要调查此错误,需要在程序到达产生错误结果的那段代码时暂停程序。 这是通过设置 断点 来完成的。 断点指示程序将暂停的代码行,以便检查其状态。

  • 点击 findAverage 函数被调用的行的边距。

    在调用 findAverage 方法的行上设置了断点

以调试模式运行程序

现在让我们以调试模式启动程序。

由于运行和调试程序时需要传递实参,请将它们添加到 运行/调试配置 中。

  1. 点击装订区域中的 运行 图标,然后选择 修改运行配置。

    装订区域中的运行按钮
  2. 在 程序参数 字段中输入 1 2 3。 应用更改并关闭对话框。

    在 Program arguments 字段中输入实参
  3. 点击 运行 按钮,该按钮位于 main 函数/方法旁。 从菜单中选择 调试。

    点击装订区域中的运行按钮后,会出现包含运行/调试选项的菜单

调试器会话将启动,并使用给定实参执行程序。

分析程序状态

调试器会话启动后,程序会正常运行,直到命中断点。 发生这种情况时,IntelliJ IDEA 会暂停程序,高亮显示程序暂停的行,并显示 调试 工具窗口。

调试工具窗口出现。 带有断点的行被高亮显示

高亮显示的行尚未执行。 程序现在正在等待进一步指令。 暂停状态允许检查保存程序状态的变量。

由于 findAverage 函数/方法尚未被调用,其所有局部变量如 结果 尚未进入作用域,不过,可以检查 args 数组的内容 (args 位于 main 函数/方法的作用域内)。 变量内容会在使用 args 的位置内联显示:

内联调试会在使用相应变量的那一行直接显示变量值

还可以在 调试 工具窗口的 线程与变量 选项卡上获取当前处于作用域内的所有变量信息。

变量值显示在变量面板中

逐步执行程序

既然已经熟悉 调试 工具窗口,现在是时候步入 findAverage 函数/方法并了解其内部发生的情况了。

  1. 要步入函数/方法,请点击 步入 按钮,该按钮位于 调试 工具窗口的工具栏上,或按 F7。

    位于调试工具窗口顶部的步入按钮

    编辑器中的高亮显示会移动到另一行,因为执行点向前推进了一步。

  2. 让我们继续步进,看看局部变量 结果 是如何声明的,以及它在循环的每次迭代中如何变化。 点击 步入 ,直到看到变量 秒 的值为 "3"。

    内联调试有助于获取变量值信息

    现在变量 秒 包含值 "3"。 将被转换为 Double 并添加到 结果 中,后者当前的值为 3.0。 到目前为止没有错误。 总和计算正确。

  3. 再执行两步会到达 return 语句,这时可以看到遗漏之处。 正在返回 结果 ,其值为 6.0 ,但没有将其除以输入数量。 这就是程序输出不正确的原因。

    result 的值按原样返回,不会除以参数的数量
  4. 让我们更正该错误。 将 return result 行替换为包含正确计算公式的代码:

    return result / input.size

停止调试会话并重新运行程序

为检查程序是否正常工作,让我们停止调试器会话并重新运行程序。

  1. 在 调试 工具窗口工具栏中,点击 停止 或按 Ctrl+F2。

    使用调试工具窗口左侧的停止按钮停止调试器会话
  2. 点击 运行 按钮,该按钮位于 main 函数/方法旁。 从菜单中选择 运行。

    点击装订区域中的运行按钮后,会出现包含运行/调试选项的菜单
  3. 请验证程序现在是否正常运行。

    程序现在输出 2.0
2026年 11月 3日