簡體   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