You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在IDEA中调试Kotlin Coroutines时如何查看局部变量的值?

协程调试局部变量可见性解决方案

一、Kotlin编译器参数配置

Kotlin 1.7.20及以上版本提供了专门的编译参数用于保留挂起函数的局部变量,避免调试时被优化回收:
在项目的构建配置中为DEBUG构建类型添加以下编译参数:

Gradle(Kotlin DSL)配置示例

tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
    kotlinOptions {
        // 仅在DEBUG构建时添加以下参数
        if (project.hasProperty("debugBuild")) {
            freeCompilerArgs += listOf(
                "-Xkeep-suspend-function-local-variables",
                "-Xdebug"
            )
        }
    }
}

安卓项目可直接在对应模块的build.gradle.kts的android配置块下添加:

android {
    buildTypes {
        debug {
            kotlinOptions {
                freeCompilerArgs += listOf(
                    "-Xkeep-suspend-function-local-variables",
                    "-Xdebug"
                )
            }
            // 关闭DEBUG构建的代码混淆和优化
            isMinifyEnabled = false
            isShrinkResources = false
        }
    }
}

二、IDEA调试配置优化

IDEA 2022.2及以上版本内置协程调试支持,开启对应配置即可提升变量可见性:

  • 打开设置 → 构建、执行、部署 → 调试器 → 异步栈跟踪,勾选启用协程调试选项
  • 调试时避免使用「挂起所有线程」类型的断点,选择「挂起当前线程」模式,减少协程上下文丢失概率
  • 若临时需要查看某个被优化的变量,可在代码中对应变量后加一行无副作用的引用代码(如val temp = 目标变量),强制编译器保留该变量

三、注意事项

  • 上述所有配置仅可在开发调试阶段使用,生产构建必须移除相关参数,否则会导致suspend函数额外占用内存、运行性能下降
  • 低于1.7.20的Kotlin版本不支持-Xkeep-suspend-function-local-variables参数,需先升级Kotlin编译器及插件版本

问题现象示例:
变量被优化掉问题的示例图片

内容的提问来源于stack exchange,提问作者Nikita Tukkel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 09:30:04