| # Tutorial on Fuchsia tracing | |
| Tracing is a powerful observability tool that can assist in quickly getting a | |
| high level overview of a running system to find and diagnose issues. You can | |
| think of tracing like visualizable, queryable, and toggleable printf debugging. | |
| {: width="600"} | |
| By enabling various categories, you can visualize the following (and more): | |
| - High granularity breakdown of which threads are scheduled on each core | |
| - Customizable per component trace events and spans | |
| - FIDL calls between processes and threads | |
| - A record of every single syscall | |
| - Network and file system activity | |
| - High level understanding of how a component operates and communicates | |
| Step 1 of this tutorial walks through through how to take a trace, what's | |
| available to trace, and how to visualize it. | |
| You can unlock deeper analysis by adding custom trace points to your component | |
| as well. Steps 2 and 3 explain how to add new trace points to a component. | |
| 1. [Record and visualize a trace][record-and-visualize-a-trace]. | |
| 2. [Register a trace provider][register-a-trace-provider]. | |
| 3. [Add tracing in your code][add-tracing-in-your-code]. | |
| <!-- Reference links --> | |
| [record-traces]: /docs/development/sdk/ffx/record-traces.md | |
| [fuchsia-tracing-system]: /docs/concepts/kernel/tracing-system.md | |
| [register-a-trace-provider]: /docs/development/tracing/tutorial/register-a-trace-provider.md | |
| [add-tracing-in-your-code]: /docs/development/tracing/tutorial/add-tracing-in-code.md | |
| [record-and-visualize-a-trace]: /docs/development/tracing/tutorial/record-and-visualize-a-trace.md | |
| [intro-to-fuchsia-tracing]: /docs/development/tracing/tutorial/intro-to-fuchsia-tracing.md |