# SDK workflows

Below is the list of workflows you can perform in the Fuchsia SDK development environment to
interact with Fuchsia systems, devices, and software.

## Table of contents

* Devices

  * [Start the Fuchsia emulator][start-femu]
  * [Flash a Fuchsia image on a device][flash-device]
  * [Create SSH keys for Fuchsia devices][create-ssh-keys]
  * [View device information][view-device-info]
  * [View device logs][view-device-logs]

* Components

  * [Explore components][explore-components]
  * [View component information][view-component-info]
  * [Start a component during development][start-a-component]
  * [Copy files to and from a component][copy-files]

* Packages

  * [Create a Fuchsia package repository][create-a-package-repo]
  * [Update Fuchsia packages on a device][update-packages]

* Debugging

  * [Register debug symbols][register-symbols]
  * [Symbolize logs][symbolize-logs]
  * [Start the Fuchsia debugger][start-zxdb]
  * [Monitor FIDL messages on a device][monitor-fidl]

* Performance

  * [Record traces for performance analysis][record-traces]
  * [Measure the memory usage on a device][measure-memory-usage]

* Testing

  * [Run tests on a device][run-tests]

<!-- Reference links -->

[ffx-reference]: https://fuchsia.dev/reference/tools/sdk/ffx
[fuchsia-components]: /docs/concepts/components/v2/README.md
[fuchsia-packages]: /docs/concepts/packages/package.md
[start-femu]: start-the-fuchsia-emulator.md
[view-device-info]: view-device-information.md
[flash-device]: flash-a-device.md
[create-ssh-keys]: create-ssh-keys-for-devices.md
[view-device-logs]: view-device-logs.md
[view-component-info]: view-component-information.md
[start-a-component]: start-a-component-during-development.md
[copy-files]: copy-files-to-and-from-a-component.md
[create-a-package-repo]: create-a-package-repository.md
[update-packages]: update-packages-on-a-device.md
[register-symbols]: register-debug-symbols.md
[symbolize-logs]: symbolize-logs.md
[start-zxdb]: start-the-fuchsia-debugger.md
[monitor-fidl]: monitor-fidl-messages-on-a-device.md
[record-traces]: record-traces.md
[explore-components]: explore-components.md
[measure-memory-usage]: explore-memory-usage.md
[run-tests]: run-device-tests.md
