我正在尝试为我们的应用程序创建自动性能分析测试。目前 dart 允许收集 cpu 样本和时间线信息并将其转储到 json 文件中。例子:
driver = await FlutterDriver.connect(printCommunication: true).timeout(appConnectTimeout);
vms = await vmServiceConnectUri(vmUrl);
isolate = await driver.appIsolate.loadRunnable();
expect((await vms.setFlag("profiler", "true")), isA<Success>());
await driver.startTracing();
...
CpuSamples cpuSamples = await vms.getCpuSamples(
(await vms.getVM()).isolates.first.id,
isolate.startTime.microsecondsSinceEpoch,
(new DateTime.now()).microsecondsSinceEpoch
);
flutter_timeline.Timeline timeline = await driver.stopTracingAndDownloadTimeline();
await TimelineSummary.summarize(timeline).writeTimelineToFile("main", pretty: true);
但是只能在 chrome 开发人员工具中查看 timeline.json 文件,这些工具没有提供有关 dart 执行的足够信息。我正在寻找能够为我提供与天文台网页相同的功能但具有导入main.timeline.json
结果的东西。你知道这样的事吗?
理想情况下,我想打开 Observatory 页面并将这个时间线上传到那里,并能够看到时间线、cpu 表、调用树、浏览已执行的代码并查看哪些部分未执行等。好吧,做我能做的所有事情为实时虚拟机运行的天文台。你有什么工具吗?
问题 2:为什么在这段代码中我有 cpuSamples.samples 空列表,而 cpuSamples.functions 已完全填充?
问题 3:为什么 chrome 开发工具能够使用上面代码中的转储查看我的应用程序函数名称,而 dart 开发工具无法读取这些并引用动态库中的编码函数名称(我的应用程序的编译 .so 文件)。该应用程序现在以 --debug 模式运行,因为我没有物理设备 ATM