Знаете ли вы какой-нибудь инструмент разработчика dart для правильного просмотра экспортированной информации о временной шкале из виртуальной машины dart?

Я пытаюсь создать автоматизированный тест профилирования производительности для нашего приложения. На данный момент dart позволяет собирать образцы процессора и информацию о временной шкале, а также выгружать их в файл 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);    

Но просмотреть файл timeline.json можно только в инструментах разработчика Chrome, которые не предоставляют достаточно информации о выполнении дротика. Что я ищу что-то, что предоставит мне те же возможности, что и веб-страница Observatory, но с импортированными main.timeline.json результатами. Вы знаете что-нибудь подобное?

В идеале я хотел бы открыть страницу Observatory и загрузить туда эту временную шкалу, чтобы иметь возможность видеть временную шкалу, таблицу процессоров, дерево вызовов, перемещаться по исполняемому коду и видеть, какие части не были выполнены и т. д. Ну, делать все, что я могу сделать с Обсерватория работает для живой виртуальной машины. Есть ли у вас какие-либо инструменты в виду?

Вопрос 2: Почему в этом коде у меня есть пустой список cpuSamples.samples, в то время как cpuSamples.functions полностью заполнен?

Вопрос 3: Почему инструменты chrome dev могут видеть имена функций моего приложения, используя дамп из приведенного выше кода, в то время как инструменты dart dev не могут их читать и ссылаться на закодированные имена функций в динамической библиотеке (скомпилированный файл .so моего приложения). Приложение пока работает в режиме --debug, потому что у меня нет банкомата физического устройства.


person Artur Korobeynyk    schedule 26.06.2020    source источник


Ответы (1)


Проблема исчезла сама собой при обсуждении ее с Google здесь, поэтому ищите решение в теме вместе с исходным кодом: https://github.com/dart-lang/sdk/issues/42591

person Artur Korobeynyk    schedule 08.07.2020