繁体   English   中英

Dart 调试器调用方法不及时

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM