From b8dd6bdd19819b4d33abec57efcacdf8a6a2ddc2 Mon Sep 17 00:00:00 2001 From: Gityuan Date: Fri, 7 Feb 2020 04:33:01 +0800 Subject: [PATCH] support endless recorder for timeline (#47419) --- .../flutter_tools/lib/src/android/android_device.dart | 2 ++ packages/flutter_tools/lib/src/commands/run.dart | 8 ++++++++ packages/flutter_tools/lib/src/device.dart | 3 +++ packages/flutter_tools/lib/src/ios/devices.dart | 1 + 4 files changed, 14 insertions(+) diff --git a/packages/flutter_tools/lib/src/android/android_device.dart b/packages/flutter_tools/lib/src/android/android_device.dart index 7bca5b0b5f..53a0065afd 100644 --- a/packages/flutter_tools/lib/src/android/android_device.dart +++ b/packages/flutter_tools/lib/src/android/android_device.dart @@ -582,6 +582,8 @@ class AndroidDevice extends Device { ...['--ez', 'trace-skia', 'true'], if (debuggingOptions.traceSystrace) ...['--ez', 'trace-systrace', 'true'], + if (debuggingOptions.endlessTraceBuffer) + ...['--ez', 'endless-trace-buffer', 'true'], if (debuggingOptions.dumpSkpOnShaderCompilation) ...['--ez', 'dump-skp-on-shader-compilation', 'true'], if (debuggingOptions.cacheSkSL) diff --git a/packages/flutter_tools/lib/src/commands/run.dart b/packages/flutter_tools/lib/src/commands/run.dart index efd5904ac1..c315ebcf16 100644 --- a/packages/flutter_tools/lib/src/commands/run.dart +++ b/packages/flutter_tools/lib/src/commands/run.dart @@ -102,6 +102,13 @@ class RunCommand extends RunCommandBase { help: 'Enable tracing of Skia code. This is useful when debugging ' 'the GPU thread. By default, Flutter will not log skia code.', ) + ..addFlag('endless-trace-buffer', + negatable: false, + help: 'Enable tracing to the endless tracer. This is useful when ' + 'recording huge amounts of traces. If we need to use endless buffer to ' + 'record startup traces, we can combine the ("--trace-startup"). ' + 'For exemple, flutter run --trace-startup --endless-trace-buffer. ', + ) ..addFlag('trace-systrace', negatable: false, help: 'Enable tracing to the system tracer. This is only useful on ' @@ -350,6 +357,7 @@ class RunCommand extends RunCommandBase { skiaDeterministicRendering: boolArg('skia-deterministic-rendering'), traceSkia: boolArg('trace-skia'), traceSystrace: boolArg('trace-systrace'), + endlessTraceBuffer: boolArg('endless-trace-buffer'), dumpSkpOnShaderCompilation: dumpSkpOnShaderCompilation, cacheSkSL: cacheSkSL, deviceVmServicePort: deviceVmservicePort, diff --git a/packages/flutter_tools/lib/src/device.dart b/packages/flutter_tools/lib/src/device.dart index b1805b961e..c2f33fc72b 100644 --- a/packages/flutter_tools/lib/src/device.dart +++ b/packages/flutter_tools/lib/src/device.dart @@ -525,6 +525,7 @@ class DebuggingOptions { this.skiaDeterministicRendering = false, this.traceSkia = false, this.traceSystrace = false, + this.endlessTraceBuffer = false, this.dumpSkpOnShaderCompilation = false, this.cacheSkSL = false, this.useTestFonts = false, @@ -554,6 +555,7 @@ class DebuggingOptions { skiaDeterministicRendering = false, traceSkia = false, traceSystrace = false, + endlessTraceBuffer = false, dumpSkpOnShaderCompilation = false, verboseSystemLogs = false, hostVmServicePort = null, @@ -571,6 +573,7 @@ class DebuggingOptions { final bool skiaDeterministicRendering; final bool traceSkia; final bool traceSystrace; + final bool endlessTraceBuffer; final bool dumpSkpOnShaderCompilation; final bool cacheSkSL; final bool useTestFonts; diff --git a/packages/flutter_tools/lib/src/ios/devices.dart b/packages/flutter_tools/lib/src/ios/devices.dart index a31fca3088..46124516ed 100644 --- a/packages/flutter_tools/lib/src/ios/devices.dart +++ b/packages/flutter_tools/lib/src/ios/devices.dart @@ -327,6 +327,7 @@ class IOSDevice extends Device { if (debuggingOptions.enableSoftwareRendering) '--enable-software-rendering', if (debuggingOptions.skiaDeterministicRendering) '--skia-deterministic-rendering', if (debuggingOptions.traceSkia) '--trace-skia', + if (debuggingOptions.endlessTraceBuffer) '--endless-trace-buffer', if (debuggingOptions.dumpSkpOnShaderCompilation) '--dump-skp-on-shader-compilation', if (debuggingOptions.verboseSystemLogs) '--verbose-logging', if (debuggingOptions.cacheSkSL) '--cache-sksl',