在调试应用程序时,对于我来说,在断点处停止并评估表达式(例如,运行诸如students.filter { it.age >= 18 }
之类的代码)非常普遍。我不仅习惯这样做,而且到目前为止,我从没有遇到过这样的问题。
但是,在调试期间尝试筛选列表时,我开始遇到一些问题。我的意思是“几个”,因为我遇到的错误开始改变。
起初,在尝试运行未执行的指令时,我陷入了Evaluating...
消息中。指令是这样的:
foo.bar.filter { it.id.toLowerCase() == "someId" }
将foo
作为具有84个元素,kotlin.collections.List
作为对象,将bar
作为字符串的列表(id
)。
我在调试时也遇到了一个问题,那就是在尝试分析变量的属性时,我陷入了一条消息,Collecting data...
我认为问题可能出在我的计算机或手机(内存,处理器...)上,所以我都重启了它们,但问题仍然存在。我认为这不是硬件问题,因为我有一个不错的笔记本电脑(i7,带有16GB内存和一个SDD)和智能手机(Note 9)。我还更改了我使用的电缆,以防万一。 我以为可能是我的Android Studio不是最新版本(版本3.5.1),所以我将其升级到了版本3.6.3,但是问题仍然存在。
我尝试使用仿真器,但是开始收到以下错误:
com.sun.jdi.internalexception: unexpected jdwp error: 23
在某个时候我遇到了另一个错误:
object has been collected
我确定我的问题与GC无关,因为如果我只是评估列表变量而不是尝试对其进行过滤,则它可以工作。当我也尝试评估其属性之一(例如foo.bar
)时,该方法也适用。
我已经与其他android开发人员进行了交谈,但是我唯一能获得的帮助是“尝试重新启动android studio”。