您知道任何 dart 开发工具可以正确查看从 dart VM 导出的时间线信息吗?

Do you know any dart dev tool to properly view exported timeline information from dart VM?

我正在尝试为我们的应用程序创建自动化性能分析测试。目前,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 执行的足够信息。我正在寻找的东西可以为我提供与 Observatory 网页相同的功能,但具有导入的 main.timeline.json 结果。你知道这样的事情吗?

理想情况下,我想打开 Observatory 页面并将此时间线上传到那里,然后能够看到时间线,cpu table,调用树,浏览已执行的代码并查看哪些部分未执行等等。好吧,为实时 VM 做所有我能用 Observatory 运行 做的事情。您有什么想要的工具吗?

问题 2:为什么在这段代码中我有 cpuSamples.samples 空列表,而 cpuSamples.functions 已完全填充?

问题 3:为什么 chrome 开发工具能够使用上述代码中的转储查看我的应用程序函数名称,而 dart 开发工具无法读取这些名称并引用动态库中的编码函数名称 (已编译我的应用程序的 .so 文件)。该应用程序目前处于 运行 --debug 模式,因为我没有物理设备 ATM

在此处与 google 讨论时问题自行解决,因此在线程中寻找解决方案以及源代码: https://github.com/dart-lang/sdk/issues/42591