chromium/components/tracing/common/tracing_switches.cc

// Copyright 2015 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include "components/tracing/common/tracing_switches.h"

namespace switches {

// Enables background tracing by passing a scenarios config as an argument. The
// config is a serialized proto `perfetto.protos.ChromeFieldTracingConfig`
// defined in
// third_party/perfetto/protos/perfetto/config/chrome/scenario_config.proto.
// protoc can be used to generate a serialized proto config with
// protoc
//   --encode=perfetto.protos.ChromeFieldTracingConfig
//   --proto_path=third_party/perfetto/
//     third_party/perfetto/protos/perfetto/config/chrome/scenario_config.proto
//  < {input txt config}.pbtxt > {output proto config}.pb
const char kEnableBackgroundTracing[] =;

// Enables background tracing by passing legacy trigger rules as an argument.
const char kEnableLegacyBackgroundTracing[] =;

// Causes TRACE_EVENT flags to be recorded from startup.
// This flag will be ignored if --trace-startup or --trace-shutdown is provided.
const char kTraceConfigFile[]               =;

// Causes TRACE_EVENT flags to be recorded from startup. Optionally, can
// specify the specific trace categories to include (e.g.
// --trace-startup=base,net) otherwise, all events are recorded. Setting this
// flag results in the first call to BeginTracing() to receive all trace events
// since startup.
//
// Historically, --trace-startup was used for browser startup profiling and
// --enable-tracing was used for browsertest tracing. Now they are share the
// same implementation, but both are still supported to avoid disrupting
// existing workflows. The only difference between them is the default duration
// (5 seconds for trace-startup, unlimited for enable-tracing). If both are
// specified, 'trace-startup' takes precedence.
//
// In Chrome, you may find --trace-startup-file and
// --trace-startup-duration to control the auto-saving of the trace (not
// supported in the base-only TraceLog component).
const char kTraceStartup[] =;
const char kEnableTracing[] =;

// Causes TRACE_EVENT flags to be recorded from startup, passing a SMB
// handle containing the serialized perfetto config. This flag will be
// ignored if --trace-startup or --trace-shutdown is provided.
const char kTraceConfigHandle[] =;

// Sets the time in seconds until startup tracing ends. If omitted:
// - if --trace-startup is specified, a default of 5 seconds is used.
// - if --enable-tracing is specified, tracing lasts until the browser is
// closed. Has no effect otherwise.
const char kTraceStartupDuration[]          =;

// If supplied, sets the file which startup tracing will be stored into, if
// omitted the default will be used "chrometrace.log" in the current directory.
// Has no effect unless --trace-startup is also supplied.
// Example: --trace-startup --trace-startup-file=/tmp/trace_event.log
// As a special case, can be set to 'none' - this disables automatically saving
// the result to a file and the first manually recorded trace will then receive
// all events since startup.
const char kTraceStartupFile[] =;

// Similar to the flag above, with the following differences:
// - A more detailed basename will be generated.
// - If the value is empty or ends with path separator, the provided directory
// will be used (with empty standing for current directory) and a detailed
// basename file will be generated.
//
// It is ignored if --trace-startup-file is specified.
const char kEnableTracingOutput[] =;

// Sets the output format for the trace, valid values are "json" and "proto".
// If not set, the current default is "proto".
// "proto", unlike json, supports writing the trace into the output file
// incrementally and is more likely to retain more data if the browser process
// unexpectedly terminates.
// Ignored if "trace-startup-owner" is not "controller".
const char kTraceStartupFormat[] =;
const char kEnableTracingFormat[] =;

// If supplied, sets the tracing record mode and options; otherwise, the default
// "record-until-full" mode will be used.
const char kTraceStartupRecordMode[] =;

// Specifies the coordinator of the startup tracing session. If the legacy
// tracing backend is used instead of perfetto, providing this flag is not
// necessary. Valid values: 'controller', 'devtools', or 'system'. Defaults to
// 'controller'.
//
// If 'controller' is specified, the session is controlled and stopped via the
// TracingController (e.g. to implement the timeout).
//
// If 'devtools' is specified, the startup tracing session will be owned by
// DevTools and thus can be controlled (i.e. stopped) via the DevTools Tracing
// domain on the first session connected to the browser endpoint.
//
// If 'system' is specified, the system Perfetto service should already be
// tracing on a supported platform (currently only Android). Session is stopped
// through the normal methods for stopping system traces.
const char kTraceStartupOwner[] =;

// Repeat internable data for each TraceEvent in the perfetto proto format.
const char kPerfettoDisableInterning[] =;

// Sends a pretty-printed version of tracing info to the console.
const char kTraceToConsole[] =;

// Sets a local folder destination for tracing data. This is only used if
// kEnableBackgroundTracing is also specified.
const char kBackgroundTracingOutputPath[] =;

// Configures the size of the shared memory buffer used for tracing. Value is
// provided in kB. Defaults to 4096. Should be a multiple of the SMB page size
// (currently 32kB on Desktop or 4kB on Android).
const char kTraceSmbSize[] =;

// This is only used when we did not set buffer size in trace config and will be
// used for all trace sessions. If not provided, we will use the default value
// provided in perfetto_config.cc
const char kDefaultTraceBufferSizeLimitInKb[] =;

}  // namespace switches