| # Register debug symbols | 
 |  | 
 | The [`ffx debug symbol-index`][ffx-debug-symbol-index] commands help | 
 | manage Fuchsia components’ debug symbols in your development environment. | 
 |  | 
 | ## Concepts | 
 |  | 
 | During development, debug symbols for a Fuchsia component are generated | 
 | as part of build artifacts. A file containing debug symbols has | 
 | `.symbol-index.json` as a postfix (for example, | 
 | `my-component.symbol-index.json`). | 
 |  | 
 | Registering a Fuchsia component's debug symbols in your development | 
 | environment enables the following workflows: | 
 |  | 
 | *   View the component's logs in [symbolized][symbolize-logs] format. | 
 | *   Use the [Fuchsia debugger][start-the-fuchsia-debugger] to step through the | 
 |     code while the component is running on a device. | 
 | *   Monitor the component's [FIDL traffic][monitor-fidl] on a device in real time. | 
 |  | 
 | In addition to registering locally generated debug symbols, you can also | 
 | configure your environment to retrieve debug symbols from an online storage | 
 | (for instance, Google Cloud Storage). Once an online storage is added in | 
 | your [global `symbol-index` configuration](#list-registered-debug-symbols), | 
 | various Fuchsia debugging tools (such as [`ffx log`][symbolize-logs] and | 
 | [`ffx debug connect`][start-the-fuchsia-debugger]) can automatically | 
 | download and use the debug symbols available in the online storage. | 
 |  | 
 | In a Fuchsia development environment, a registration of debug symbols | 
 | often takes place in the background. Some Fuchsia tools are configured | 
 | to invoke the registration of debug symbols | 
 | (using [`ffx debug symbol-index add`](#manually-register-debug-symbols)) | 
 | upon detection of debug symbols, so you may never need to manually | 
 | register the debug symbols of your Fuchsia component during development. | 
 | For instance, if you're using Fuchsia's Bazel rules, the debug symbols get | 
 | registered automatically as part of the build. However, when necessary, | 
 | you could use the `ffx debug symbol-index` | 
 | commands to manage debug symbols directly. | 
 |  | 
 | ## List registered debug symbols {:#list-registered-debug-symbols} | 
 |  | 
 | To view your global `symbol-index` configuration, run the following command: | 
 |  | 
 | ```posix-terminal | 
 | ffx debug symbol-index list | 
 | ``` | 
 |  | 
 | This command prints output similar to the following: | 
 |  | 
 | ```none {:.devsite-disable-click-to-copy} | 
 | $ ffx debug symbol-index list | 
 | SymbolIndex { | 
 |     includes: [ | 
 |         "/usr/alice/home/my-fuchsia-project/my-component.symbol-index.json", | 
 |     ], | 
 |     build_id_dirs: [], | 
 |     ids_txts: [], | 
 |     gcs_flat: [ | 
 |         GcsFlat { | 
 |            url: "gs://our-fuchsia-project/debug", | 
 |            require_authentication: false, | 
 |         }, | 
 |     ], | 
 | } | 
 | ``` | 
 |  | 
 | ## Manually register debug symbols {:#manually-register-debug-symbols} | 
 |  | 
 | Important: A registration of debug symbols is invoked automatically | 
 | by other tools in a Fuchsia development environment. A manual registration | 
 | of debug symbols is required only when your environment doesn't support | 
 | this automatic setup. | 
 |  | 
 | To register debug symbols in your environment, run the following command: | 
 |  | 
 | ```posix-terminal | 
 | ffx debug symbol-index add <PATH_TO_DEBUG_SYMBOLS> | 
 | ``` | 
 |  | 
 | Replace `PATH_TO_DEBUG_SYMBOLS` with an absolute path to a debug symbols | 
 | file. | 
 |  | 
 | The example below registers the debug symbols of the `my-component` | 
 | component: | 
 |  | 
 | ```none {:.devsite-disable-click-to-copy} | 
 | $ ffx debug symbol-index add /usr/alice/home/my-fuchsia-project/my-component.symbol-index.json | 
 | ``` | 
 |  | 
 | When the registration is successful, the command exits silently without output. | 
 |  | 
 | If you want to verify the registration, | 
 | see [List registered debug symbols](#list-registered-debug-symbols). | 
 |  | 
 | ## Remove registered debug symbols {:#remove-registered-debug-symbols} | 
 |  | 
 | To remove debug symbols from your global `symbol-index` configuration, run the | 
 | following command: | 
 |  | 
 | Note: Run `ffx debug symbol-index list` to check the registered paths in your | 
 | global `symbol-index` configuration first. Then use the exact path as input to | 
 | the command below. | 
 |  | 
 | ```posix-terminal | 
 | ffx debug symbol-index remove <PATH_TO_DEBUG_SYMBOLS> | 
 | ``` | 
 |  | 
 | Replace `PATH_TO_DEBUG_SYMBOLS` with the exact path to a registered debug | 
 | symbols file to be removed. | 
 |  | 
 | The example below removes the debug symbols of the `my-component` component: | 
 |  | 
 | ```none {:.devsite-disable-click-to-copy} | 
 | $ ffx debug symbol-index remove /usr/alice/home/my-fuchsia-project/my-component.symbol-index.json | 
 | ``` | 
 |  | 
 | When the removal is successful, the command exits silently without output. | 
 |  | 
 | ## Clean up misplaced debug symbols {:#clean-up-misplaced-debug-symbols} | 
 |  | 
 | Deleting a registered debug symbols file on the host machine does not mean that | 
 | your global `symbol-index` configuration also gets updated automatically. | 
 |  | 
 | To remove any stale paths (pointing to deleted debug symbols files) from | 
 | the global `symbol-index` configuration, run the following command: | 
 |  | 
 | ```posix-terminal | 
 | ffx debug symbol-index clean | 
 | ``` | 
 |  | 
 | For instance, if the `/usr/alice/home/my-fuchsia-project` directory no longer | 
 | exists on the host machine, this command removes the | 
 | `/usr/alice/home/my-fuchsia-project/my-component.symbol-index.json` entry from | 
 | the global `symbol-index` configuration. | 
 |  | 
 | <!-- Reference links --> | 
 |  | 
 | [ffx-debug-symbol-index]: https://fuchsia.dev/reference/tools/sdk/ffx#symbol-index | 
 | [symbolize-logs]: ./symbolize-logs.md | 
 | [start-the-fuchsia-debugger]: ./start-the-fuchsia-debugger.md | 
 | [monitor-fidl]: ./monitor-fidl-messages-on-a-device.md |