Debugging Dart调试器过早地调用方法

Debugging Dart调试器过早地调用方法,debugging,flutter,intellij-idea,dart,Debugging,Flutter,Intellij Idea,Dart,我正在用IntelliJ调试一个颤振/飞镖应用程序,我有一些奇怪的事情发生: 调用了某些方法,但调试器不会在断点处停止 在浪费了几个小时之后,我终于明白问题是由调试器本身引起的: 为了显示变量的值,它自己调用方法,导致奇怪的行为。 可以采取什么措施来防止这种情况 /* Output in Debug: current: 1 current: 2 current: 3 current: 1 current: 2 current: 3 breakpoint here current: 1 curr

我正在用IntelliJ调试一个颤振/飞镖应用程序,我有一些奇怪的事情发生: 调用了某些方法,但调试器不会在断点处停止

在浪费了几个小时之后,我终于明白问题是由调试器本身引起的: 为了显示变量的值,它自己调用方法,导致奇怪的行为。 可以采取什么措施来防止这种情况

/*
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;
  }
}
/*
调试中的输出:
电流:1
电流:2
当前:3
电流:1
电流:2
当前:3
断点在这里
电流:1
电流:2
当前:3
电流:1
电流:2
当前:3
电流:1
适用范围:1
电流:2
适用时间:2
当前:3
适用时间:3
运行中的输出:
断点在这里
电流:1
适用范围:1
电流:2
适用时间:2
当前:3
适用时间:3
*/
main(){
变量iterable=可测试();
打印('此处断点');
for(iterable中的var项){
打印($item');
}
}
类可测试扩展IterableBase{
@凌驾
迭代器get Iterator=>TestIterator();
}
类TestIterator扩展迭代器{
int _指数=0;
@凌驾
bool moveNext()=>_index++<3;
@凌驾
跟上潮流{
打印('当前:$\索引');
回归指数;
}
}

并非特定于IDEA,我可以在Dart开发工具中看到相同的行为:只要我尝试检查
iterable
变量,代码就会运行并将值打印到控制台:

不确定这是否是预期的,我建议通过将问题提交给Dart开发团队来联系Dart开发团队