使用 IntelliJ IDEA 调试协程 – 教程
本教程演示如何创建 Kotlin 协程并使用 IntelliJ IDEA 对其进行调试。
本教程假设您已预先了解协程的概念。
创建协程
在 IntelliJ IDEA 中打开一个 Kotlin 项目。如果您还没有项目,请创建一个。
要在 Gradle 项目中使用
kotlinx.coroutines库,请将以下依赖项添加到build.gradle(.kts)中:kotlindependencies { implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2") }groovydependencies { implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2' }对于其他构建系统,请参阅
kotlinx.coroutinesREADME 中的说明。打开
src/main/kotlin中的Main.kt文件。src目录包含 Kotlin 源代码文件和资源。Main.kt文件包含将打印Hello World!的示例代码。更改
main()函数中的代码:- 使用
runBlocking()代码块来包装协程。 - 使用
async()函数创建协程以计算延迟值a和b。 - 使用
await()函数等待计算结果。 - 使用
println()函数将计算状态和乘法结果打印到输出。
kotlinimport kotlinx.coroutines.* fun main() = runBlocking<Unit> { val a = async { println("I'm computing part of the answer") 6 } val b = async { println("I'm computing another part of the answer") 7 } println("The answer is ${a.await() * b.await()}") }- 使用
点击 Build Project (构建项目) 构建代码。

调试协程
在包含
println()函数调用的行设置断点:
点击屏幕顶部运行配置旁的 Debug (调试),以调试模式运行代码。

Debug 工具窗口出现:
- Frames 选项卡包含调用堆栈。
- Variables 选项卡包含当前上下文中的变量。
- Coroutines 选项卡包含有关正在运行或已挂起协程的信息。它显示有三个协程。 第一个的状态为 RUNNING,另外两个的状态为 CREATED。

点击 Debug 工具窗口中的 Resume Program (恢复程序) 来恢复调试器会话:

现在 Coroutines 选项卡显示如下内容:
- 第一个协程的状态为 SUSPENDED – 它正在等待数值以便进行乘法运算。
- 第二个协程正在计算
a的值 – 它的状态为 RUNNING。 - 第三个协程的状态为 CREATED,且尚未开始计算
b的值。
点击 Debug 工具窗口中的 Resume Program (恢复程序) 来恢复调试器会话:

现在 Coroutines 选项卡显示如下内容:
- 第一个协程的状态为 SUSPENDED – 它正在等待数值以便进行乘法运算。
- 第二个协程已计算出它的值并消失。
- 第三个协程正在计算
b的值 – 它的状态为 RUNNING。
使用 IntelliJ IDEA 调试器,您可以深入了解每个协程以调试代码。
被优化的变量
如果您使用 suspend 函数,在调试器中,您可能会在变量名旁边看到 “was optimized out” 文本:

此文本表示变量的生存期已缩短,该变量已不再存在。调试包含优化变量的代码非常困难,因为您看不见它们的值。您可以使用 -Xdebug 编译器选项禁用此行为。
切勿在生产环境中使用此标志:
-Xdebug可能会导致内存泄漏。
