PerfettoTrace.Companion



Summary

Extension functions

Unit
@RequiresApi(value = 23)
@ExperimentalPerfettoCaptureApi
PerfettoTrace.Companion.record(
    fileLabel: String,
    appTagPackages: List<String>,
    userspaceTracingPackage: String?,
    traceCallback: ((PerfettoTrace) -> Unit)?,
    block: () -> Unit
)

Record a Perfetto System Trace for the specified block.

android
Unit
@RequiresApi(value = 23)
@ExperimentalPerfettoCaptureApi
PerfettoTrace.Companion.record(
    fileLabel: String,
    config: PerfettoConfig,
    highlightPackage: String,
    userspaceTracingPackage: String?,
    traceCallback: ((PerfettoTrace) -> Unit)?,
    block: () -> Unit
)

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

android

Extension functions

@RequiresApi(value = 23)
@ExperimentalPerfettoCaptureApi
fun PerfettoTrace.Companion.record(
    fileLabel: String,
    appTagPackages: List<String> = listOf(InstrumentationRegistry.getInstrumentation().targetContext.packageName),
    userspaceTracingPackage: String? = null,
    traceCallback: ((PerfettoTrace) -> Unit)? = null,
    block: () -> Unit
): Unit

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.

@RequiresApi(value = 23)
@ExperimentalPerfettoCaptureApi
fun PerfettoTrace.Companion.record(
    fileLabel: String,
    config: PerfettoConfig,
    highlightPackage: String = InstrumentationRegistry.getInstrumentation().targetContext.packageName,
    userspaceTracingPackage: String? = null,
    traceCallback: ((PerfettoTrace) -> Unit)? = null,
    block: () -> Unit
): Unit

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.