flutter / flutter/devtools

Automatically select main isolate instead of the test runner isolate when connecting to test runs

未关闭
#9,747 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
cross-screen P2
主要语言
Dart
星标
1.7k
派生
404
平均合并
6 天 17 小时
30 天内合并 PR
18

描述

I don't know if this is a DevTools issue or something else, but I'm also not sure how to determine which.

When running tests, CPU profiling never seems to collect any data. For example given a sample project with a `bin/main.dart` that calls a function in `lib` that blocks for 5s, and a test that does the same:

## bin/main.dart

```dart
import 'package:cpu_profile/cpu_profile.dart' as cpu_profile;

void main(List arguments) {
print('starting'); // breakpoint
cpu_profile.calculate();
print('done!'); // breakpoint
}
```

## lib/cpu_profile.dart

```dart
int calculate() {
var start = DateTime.now();
while (start.difference(DateTime.now()).inSeconds.abs() < 5) {}
return 6 * 7;
}
```

## test/cpu_profile_test.dart

```dart
import 'package:cpu_profile/cpu_profile.dart' as cpu_profile;
import 'package:test/test.dart';

void main() {
test('calculate', () {
print('starting'); // breakpoint
cpu_profile.calculate();
print('done!'); // breakpoint
});
}
```

For `bin/main.dart`:

- Open `bin/main.dart`
- Add breakpoints on the marked lines
- Run in debug mode and hit the first breakpoint
- Open DevTools CPU profile, enable profiling, and start recording
- Resume execution and wait for it to hit the second breakpoint
- Stop CPU profiling and observe the results

Image

Perform the same steps but using the test instead, and the profiler doesn't show any data:

Image

贡献指南

打开贡献指南

调研方向

按照报告中的断点和 CPU 分析步骤,使用 bin/main.dart 和 test/cpu_profile_test.dart 重现该问题。首先跟踪 DevTools 如何连接到测试运行并选择一个 isolate;当对测试运行进行分析能够捕获 cpu_profile.calculate() 中的工作,并显示类似独立程序的数据时,即表示完成。

由索引模型根据 Issue 内容生成。

评估

技术栈
dart
领域
devtools, performance, testing
Issue 类型
缺陷
难度
3/5
预计耗时
1-2 天
活跃度
冷清
描述清晰度
基本清楚
新手友好度
48/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。