PerfettoTrace

@RequiresApi(value = 23)
@ExperimentalPerfettoCaptureApi
public final class PerfettoTrace


Summary

Public constructors

Public methods

final @NonNull String

Absolute file path of the trace.

static final void
record(
    @NonNull String fileLabel,
    @NonNull List<@NonNull String> appTagPackages,
    String userspaceTracingPackage,
    Function1<@NonNull PerfettoTraceUnit> traceCallback,
    @NonNull Function0<Unit> block
)

Record a Perfetto System Trace for the specified block.

static final void
record(
    @NonNull String fileLabel,
    @NonNull PerfettoConfig config,
    @NonNull String highlightPackage,
    String userspaceTracingPackage,
    Function1<@NonNull PerfettoTraceUnit> traceCallback,
    @NonNull Function0<Unit> block
)

Record a Perfetto System Trace for the specified block, with a fully custom Perfetto config, either text or binary.

Public constructors

PerfettoTrace

Added in 1.2.0
public PerfettoTrace(@NonNull String path)

Public methods

getPath

Added in 1.2.0
public final @NonNull String getPath()

Absolute file path of the trace.

Note that the trace is not guaranteed to be placed into an app-accessible directory, and may require shell commands to access.

record

Added in 1.2.0
public static final void record(
    @NonNull String fileLabel,
    @NonNull List<@NonNull String> appTagPackages,
    String userspaceTracingPackage,
    Function1<@NonNull PerfettoTraceUnit> traceCallback,
    @NonNull Function0<Unit> block
)

Record a Perfetto System Trace for the specified block.

PerfettoTrace.record("myTrace") {
// content in here is traced to myTrace_<timestamp>.perfetto_trace
}

Reentrant Perfetto trace capture is not supported, so this API may not be combined with BenchmarkRule, MacrobenchmarkRule, or PerfettoTraceRule.

If the block throws, the trace is still captured and passed to traceCallback.

record

Added in 1.2.0
public static final void record(
    @NonNull String fileLabel,
    @NonNull PerfettoConfig config,
    @NonNull String highlightPackage,
    String userspaceTracingPackage,
    Function1<@NonNull PerfettoTraceUnit> traceCallback,
    @NonNull Function0<Unit> block
)

Record a Perfetto System Trace for the specified block, with a fully custom Perfetto config, either text or binary.

PerfettoTrace.record("myTrace", config = """...""") {
// content in here is traced to myTrace_<timestamp>.perfetto_trace
}

Reentrant Perfetto trace capture is not supported, so this API may not be combined with BenchmarkRule, MacrobenchmarkRule, or PerfettoTraceRule.

If the block throws, the trace is still captured and passed to traceCallback.