Android Studio 2.1调试器不显示局部变量

31

我正在尝试在Android Studio中进行网络调试。我通过端口5555连接,并且通常可以逐步执行断点。但是,有时要执行一行代码需要几分钟的时间,另一个问题是我看不到任何非成员变量。我只能看到this对象,但无法看到方法内的任何变量。如何启用它?

enter image description here

正如您所看到的,我正在方法中,并且至少已经初始化了活动对象,但在变量监视器中却看不到它。

更新:

使用USB调试时问题仍然存在。没有可见的局部变量,即使在调试过程中尝试评估表达式也是如此:

enter image description here

Android Studio 2.1,Gradle 2.1.0,Java 1.8


当您单击this左侧的+时,它不会显示this内的变量吗? - AgileNinja
1
存在变量,但例如activity是一个函数变量,它绝对不应该在这里声明,记得要在下面声明。 - 4ndro1d
你是对的!我刚试了一下,activity被列在this下面而不是内部。我很困惑。 - AgileNinja
我刚刚发现,即使切换回USB,问题仍然存在... T_T - 4ndro1d
这个问题是因为新的Jackson编译器吗?我刚开始遇到这个非常恼人的问题,它严重拖慢了我的开发速度。 - Gubatron
9个回答

19

我也遇到了同样的问题。

Android Studio中存在一个缺陷,请参阅https://code.google.com/p/android/issues/detail?id=93730

他们建议在build.gradle(app)中删除某些内容,这对我来说解决了问题。

android {
    buildTypes {
        debug {
            ...
            testCoverageEnabled true
        }
    }
}

3
测试覆盖率应该为 false。 - hyena
它对我有效,谢谢。似乎我们不能同时使用测试覆盖率和调试,真是不方便。 - Phong Nguyen

15
很久以来我一直在解决同样的问题,后来我发现我运行的是发布版本而不是调试版本。
Android Studio中默认情况下可能没有打开构建变体窗口。转到“工具窗口 - >构建变体”。在构建变量窗口中,选择适当的构建。
在您的app.gradle文件中,请确保在要调试的构建变体中将debuggable设置为true:
android {

   // ...

   buildTypes {

      release {
         // ...
      }

      debug {
         debuggable true
      }

   }

   // ...

}
如果您想调试您的发布版本,可以将debuggable true添加到您的发布版本中。
希望这可以帮助!

3
这个答案的第一段说得非常准确。我也遇到了同样的问题。唉! - Christian.D
非常乐意帮忙! - Orlando G Rodriguez

5

我尝试将testCoverageEnabled设置为false,但这对我没有用。在我的情况下,我的调试模式启用了ProGuard,禁用它(即将minifiyEnabled设置为false)是唯一让我能够再次在调试时看到本地变量的方法。


2
在我的情况下,这是因为我忘记了我的构建变量设置为release。切换变量回到debug并重新运行可以正确显示本地变量。最初的回答。

1

对于我来说,我必须将 testCoverageEnabled 设置为 false,就像这样:

android {
    buildTypes {
        debug {
            ...
            testCoverageEnabled false
        }
    }
}

当我将此设置为true时,我无法获取本地变量。

我已经尝试了上述解决方案,但对我没有用,仍然存在问题。 - Sagar

0

我进行了一些试错尝试,并通过附件中的设置使其工作。值得一提的是,我使用的是最新版本的Android Studio 3.3.1和gradle版本4.6。

enter image description here

enter image description here


欢迎来到SO。您应该1)嵌入这些图像2)如果它们不可用,提供一些文本答案。 - m02ph3u5

-1

我曾经遇到过同样的问题。我完全重新安装了我的IDE,问题就消失了。我希望我的方法能够帮到你。


你可能只需要进行更新,重新安装已为你完成。 - Nickmccomb

-1

虽然这不是解决这个问题的永久方法,但在尝试其他答案无效后,我最常见的解决方法就是重新启动我的电脑。


-3

Java 1.8不支持访问变量值。

将Gradle更新到2.2.0-beta3版本:

在你的gradle-wrapper.properties文件中进行更新。

distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip

在你的项目的 build.gradle 文件中。
dependencies {
    classpath 'com.android.tools.build:gradle:2.2.0-beta3'
}

等等,什么?使用Java 1.8时我不能进行调试?那Gradle的更改有什么作用? - 4ndro1d
1
你可以使用Java 1.8进行调试,但只能使用Gradle版本2.2.0或更高版本。 - Cris Grange
4
请重新措辞此回答,以免引起误解。 - Andrew S

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接