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

Я пытаюсь создать автоматический тест профилирования производительности для нашего приложения. На данный момент 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, которые не предоставляют достаточно информации о выполнении дротика. Я ищу то, что предоставит мне те же возможности, что и веб-страница Обсерватории, но с импортированнымиmain.timeline.jsonполученные результаты. Вы знаете что-нибудь подобное?

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

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

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

1 ответ

Решение

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

Другие вопросы по тегам