xref: /aosp_15_r20/external/perfetto/docs/faq.md (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
1# Frequently Asked Questions
2
3## How do I open trace in UI from command line?
4
5When collecting traces from the command line, a convenient way to open traces
6is to use the [open\_trace\_in\_ui script](/tools/open_trace_in_ui).
7
8This can be used as follows:
9
10```sh
11curl -OL https://github.com/google/perfetto/raw/main/tools/open_trace_in_ui
12chmod +x open_trace_in_ui
13./open_trace_in_ui -i /path/to/trace
14```
15
16If you already have a Perfetto checkout, the first two steps can be skipped.
17From the Perfetto root, run:
18
19```sh
20tools/open_trace_in_ui -i /path/to/trace
21```
22
23## Why does Perfetto not support \<some obscure JSON format feature\>?
24
25The JSON trace format is considered a legacy trace format and is supported on a
26best-effort basis. While we try our best to maintain compatibility with the
27chrome://tracing UI and the [format spec](https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/preview#heading=h.nso4gcezn7n1)
28in how events are parsed and displayed, this is not always possible.
29This is especially the case for traces which are programmatically generated
30outside of Chrome and depend on the implementation details of chrome://tracing.
31
32If supporting a feature would introduce a misproportional amount of technical
33debt, we generally make the choice not to support that feature. Users
34are recommended to emit [TrackEvent](/docs/instrumentation/track-events.md)
35instead, Perfetto's native trace format. See
36[this guide](/docs/reference/synthetic-track-event.md) for how common JSON
37events can be represented using
38TrackEvent.
39
40## Why are overlapping events in JSON traces not displayed correctly?
41
42The Perfetto UI and trace processor do not support overlapping B/E/X events, in
43compliance with the
44[JSON spec](https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/preview#heading=h.nso4gcezn7n1).
45As stated in the spec, events are only allowed to perfecty nest.
46
47Users are recommended to emit
48[TrackEvent](/docs/instrumentation/track-events.md)
49instead, Perfetto's native trace format. See
50[this guide](/docs/reference/synthetic-track-event.md) for how common JSON
51events can be represented using
52TrackEvent.
53
54## How can I use Perfetto tooling without instrumenting my program?
55
56A common problem is that users want to use Perfetto analysis and visualization
57tooling but they don't want to instrument their program. This can be because
58Perfetto is not a good fit for their use-case or because they may already have
59an existing tracing system.
60
61The recommended approach for this is to emit Perfetto's native TrackEvent proto
62format. A reference guide for this is available
63[here](/docs/reference/synthetic-track-event.md).
64
65
66## My app has multiple processes. How can see all of them in the same trace?
67
68Use the [Tracing SDK](/docs/instrumentation/tracing-sdk.md#system-mode) in
69"system mode". All processes will connect to `traced` over a socket and traced
70will emit one trace with all processes.
71