我正在尝试使用Java Field Watchpoints
选项调试应用程序。我的变量在第一次出现在我的代码中时被发现(初始化),但在那之后我得到了这个错误:
找不到局部变量“variableName”
那我就没法跟上它的修改了
我一直在搜索和修改我的gradle文件如下:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
debug {
minifyEnabled false
debuggable true
testCoverageEnabled = true
}
}
我的活动版本是debug
(不是发布),所以错误不是来自这里。我正在使用Android Studio 3.6
Canary 11
有人遇到同样的问题吗?
3条答案
按热度按时间r3i60tvu1#
它可能是工具链的某个部分进行的优化,例如删除死代码,转义分析,或者实际上是运行时中的错误,请参阅一些可能性:https://www.guardsquare.com/en/blog/proguard-and-r8
也许对代码进行单元测试并使用调试日志对其进行注解会更成功。
np8igboo2#
这可能是一个有点不同的情况,但消息也可能表明你已经修改了数据查看器的对象/节点是如何在IDE中呈现(特别是在调试时)。
Unable to evaluate the expression Cannot find local variable 'JsonAutoDetect'
我碰巧忘记了我做了一个自定义渲染器来读取Java对象作为JSON。
解决方案是“使用默认渲染器”或只是禁用渲染器。
w3nuxt5m3#
你的变量超出了作用域:如果它是在一个局部范围内声明的,比如一个循环,或者如果是else,或者是一个try块,或者是一个函数中带有大括号的任何类型的块。因此,如果在初始化变量之后,下一个执行的语句位于该块之外,则变量将不再可见并且无法被访问(这是Java中局部变量的工作方式)。所以不是虫子。为了验证你是否可以在类级别声明变量,并在局部块中进行初始化。在局部块之外仍然可以访问该变量。