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

Android Studio中设置Kotlin断点时如何避免变量被优化掉

解决Android Studio调试Kotlin时本地变量被优化的问题

当调试时遇到states has been optimised out提示,说明编译器为了提升性能,将未被当前断点位置直接引用的局部变量优化掉了。以下是无需临时添加打印或提前断点的永久解决方法:

1. 确保Debug构建变体禁用优化

Debug模式默认会关闭编译优化,但如果手动修改过构建配置,需检查以下项:

  • 打开app模块的build.gradle.kts(或build.gradle),在debug构建类型中确认:
android {
    buildTypes {
        debug {
            // 禁用混淆和资源压缩
            isMinifyEnabled = false
            isShrinkResources = false
        }
    }
}

2. 强制关闭Kotlin编译器优化

在Debug构建配置中添加Kotlin编译参数,彻底禁用编译器优化:

android {
    buildTypes {
        debug {
            kotlinOptions {
                // 关闭所有Kotlin编译器优化
                freeCompilerArgs += "-Xno-optimize"
                // 可选:防止内联函数导致的变量优化
                freeCompilerArgs += "-Xno-inline"
            }
        }
    }
}

修改后点击Sync Project with Gradle Files生效。

3. IDE全局调试配置

通过Android Studio设置直接禁用调试时的Kotlin优化:

  • 打开Settings(File > Settings / Ctrl+Alt+S)
  • 导航到Build, Execution, Deployment > Debugger > Data Views > Kotlin
  • 勾选Disable Kotlin compiler optimizations for debugging选项
  • 点击Apply保存,重启调试会话即可生效

补充说明

以上配置仅对Debug构建生效,不会影响Release版本的性能优化。如果仍有个别变量被优化,可以在变量声明处添加@Suppress("UNUSED_VARIABLE")注解,提示编译器不要优化该变量:

@Suppress("UNUSED_VARIABLE")
val states = mutableListOf<UiState>()

内容的提问来源于stack exchange,提问作者Kevin Worth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 02:58:21