[ Service / Timeline ] Enable Compiler, Dart, and GC timeline streams when --observe is provided
TEST=pkg/vm_service/test_timeline_default_streams_test.dart
Fixes https://github.com/flutter/devtools/issues/3444
Change-Id: I3f772a54a512eb836e3e7279ee8d4d3437473393
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/255181
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
diff --git a/pkg/dartdev/lib/src/commands/run.dart b/pkg/dartdev/lib/src/commands/run.dart
index 48c4291..f029757 100644
--- a/pkg/dartdev/lib/src/commands/run.dart
+++ b/pkg/dartdev/lib/src/commands/run.dart
@@ -92,6 +92,14 @@
'Print a warning when an isolate pauses with no attached debugger'
' when running with --enable-vm-service.',
)
+ ..addOption(
+ 'timeline-streams',
+ help: 'Enables recording for specific timeline streams.\n'
+ 'Valid streams include: all, API, Compiler, CompilerVerbose, Dart, '
+ 'Debugger, Embedder, GC, Isolate, VM.\n'
+ 'Defaults to "Compiler, Dart, GC" when --observe is provided.',
+ valueHelp: 'str1, str2, ...',
+ )
..addSeparator(
'Other debugging options:',
)
diff --git a/pkg/vm_service/test/timeline_default_streams_test.dart b/pkg/vm_service/test/timeline_default_streams_test.dart
new file mode 100644
index 0000000..cbed7b7
--- /dev/null
+++ b/pkg/vm_service/test/timeline_default_streams_test.dart
@@ -0,0 +1,32 @@
+// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+// VMOptions=--observe --no-pause-isolates-on-exit
+
+import 'dart:developer';
+
+import 'package:test/test.dart';
+import 'package:vm_service/vm_service.dart';
+import 'package:vm_service/vm_service_io.dart';
+
+main() {
+ late VmService service;
+ setUp(() async {
+ ServiceProtocolInfo serviceInfo = await Service.getInfo();
+ // Wait for VM service to publish its connection info.
+ while (serviceInfo.serverUri == null) {
+ await Future.delayed(Duration(milliseconds: 10));
+ serviceInfo = await Service.getInfo();
+ }
+ service =
+ await vmServiceConnectUri(serviceInfo.serverWebSocketUri!.toString());
+ });
+
+ tearDown(() => service.dispose());
+
+ test('Check default timeline streams set by --observe', () async {
+ final flags = await service.getVMTimelineFlags();
+ expect(flags.recordedStreams, containsAll(['Compiler', 'Dart', 'GC']));
+ });
+}
diff --git a/runtime/bin/main_options.cc b/runtime/bin/main_options.cc
index fa8401a..f561942 100644
--- a/runtime/bin/main_options.cc
+++ b/runtime/bin/main_options.cc
@@ -163,6 +163,7 @@
" --pause-isolates-on-exit\n"
" --pause-isolates-on-unhandled-exceptions\n"
" --warn-on-pause-with-no-debugger\n"
+" --timeline-streams=\"Compiler, Dart, GC\"\n"
" This set is subject to change.\n"
" Please see these options (--help --verbose) for further documentation.\n"
"--write-service-info=<file_uri>\n"
@@ -204,6 +205,7 @@
" --pause-isolates-on-exit\n"
" --pause-isolates-on-unhandled-exceptions\n"
" --warn-on-pause-with-no-debugger\n"
+" --timeline-streams=\"Compiler, Dart, GC\"\n"
" This set is subject to change.\n"
" Please see these options for further documentation.\n"
#endif // !defined(PRODUCT)
@@ -377,6 +379,7 @@
vm_options->AddArgument("--pause-isolates-on-unhandled-exceptions");
vm_options->AddArgument("--profiler");
vm_options->AddArgument("--warn-on-pause-with-no-debugger");
+ vm_options->AddArgument("--timeline-streams=\"Compiler,Dart,GC\"");
#if !defined(DART_PRECOMPILED_RUNTIME)
dfe()->set_use_incremental_compiler(true);
#endif // !defined(DART_PRECOMPILED_RUNTIME)