Debugging Dart调试器过早地调用方法
我正在用IntelliJ调试一个颤振/飞镖应用程序,我有一些奇怪的事情发生: 调用了某些方法,但调试器不会在断点处停止 在浪费了几个小时之后,我终于明白问题是由调试器本身引起的: 为了显示变量的值,它自己调用方法,导致奇怪的行为。 可以采取什么措施来防止这种情况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
/*
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开发团队