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