google / google/perfetto

Public C++ library API for symbolizing/deobfuscating traces

Open
#5,534 4 comments 3 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
6.5k
Forks
868
Avg merge
2d 1h
Merged PRs (30d)
218

Description

### Feature request

The `traceconv bundle` command does an opaque "take a trace, produce an
enriched trace" operation: it symbolizes native frames, applies ProGuard/R8
deobfuscation, and emits a TAR containing the enriched output.

The implementation already exists as a C++ entry point
(`TraceToBundle()` in `src/traceconv/trace_to_bundle.h`, with `EnrichTrace()`
in `src/trace_processor/util/trace_enrichment/trace_enrichment.h` doing the
actual work), but it lives under `src/` and is not part of the public API.

### What we'd like

An `include/` C++ API that takes:

- A path to (or bytes of) an input trace.
- A `BundleContext`-equivalent (explicit symbol paths, ProGuard mapping
specs, flags).

...and returns the enriched trace opaquely — without the caller having to
instantiate a `TraceProcessor`, execute queries, or know anything about
`TracePacket` internals.

If you hit this, please +1 so we can prioritise.

Contributor guide

Open the contributing guide

Research direction

Start with src/traceconv/trace_to_bundle.h and the TraceToBundle() entry point, then read src/trace_processor/util/trace_enrichment/trace_enrichment.h and EnrichTrace(). Define how an include/ API should accept paths or bytes plus BundleContext-equivalent settings and return enriched output opaquely. Done means a public C++ interface exists without requiring callers to instantiate TraceProcessor, run queries, or know TracePacket internals.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
api
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.