[英]Dart debugger calling methods untimely
我正在使用 IntelliJ 调试 Flutter/Dart 应用程序,但发生了奇怪的事情:调用了一些方法,但调试器不会在断点处停止。
在花了几个小时之后,我终于明白问题是由调试器本身引起的:为了显示变量的值,它自己调用方法,导致奇怪的行为。 可以做些什么来防止这种情况发生?
/*
Output in Debug:
current: 1
current: 2
current: 3
current: 1
current: 2
current: 3
breakpoint here
current: 1
current: 2
current: 3
current: 1
current: 2
current: 3
current: 1
for: 1
current: 2
for: 2
current: 3
for: 3
Output in Run:
breakpoint here
current: 1
for: 1
current: 2
for: 2
current: 3
for: 3
*/
main() {
var iterable = TestIterable();
print('breakpoint here');
for (var item in iterable) {
print('for: $item');
}
}
class TestIterable extends IterableBase {
@override
Iterator get iterator => TestIterator();
}
class TestIterator extends Iterator {
int _index = 0;
@override
bool moveNext() => _index++ < 3;
@override
get current {
print('current: $_index');
return _index;
}
}
不特定于 IDEA,我可以在Dart 开发工具中看到相同的行为:一旦我尝试检查iterable
变量,代码就会运行并将值打印到控制台:
不确定这是否是预期的,我建议通过向https://github.com/dart-lang/sdk/issues提交问题来联系 Dart 开发团队
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.