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
相关产品推荐
相关产品推荐

