blob: 38828a7efcbb75440a5fb670331678c6bb18550e [file] [log] [blame] [view]
# Start the Fuchsia debugger
The [`ffx debug connect`][ffx-debug-connect] command starts the Fuchsia debugger
(which is called [`zxdb`][zxdb-user-guide]) for debugging Fuchsia components
on a device.
Important: `zxdb` only supports C++ and Rust at the moment.
## Concepts
`zxdb` is Fuchsias own debugger that allows you to attach a Fuchsia component
running on a device. Once a component is attached to `zxdb`, you can perform
interactive debugging operations, such as adding breakpoints, stepping through
code, and inspecting stack traces and variables of the component.
For `zxdb` to understand and unpack the code of a Fuchsia component,
the component's debug symbols must be available in your development
environment. (For more information on debug symbols, see
[Register debug symbols][register-debug-symbols].)
When you run the `ffx debug connect` command, it establishes a connection to
the Fuchsia device and starts the `zxdb` terminal on the host machine.
In this terminal, you can use the [`zxdb` commands][zxdb-user-guide] to
interactively debug Fuchsia components running on the device.
## Run the Fuchsia debugger
To start the Fuchsia debugger, run the following command:
```posix-terminal
ffx debug connect
```
Once successfully connected to a Fuchsia device, this command starts the
`zxdb` terminal, for example:
```none {:.devsite-disable-click-to-copy}
$ ffx debug connect
Connecting (use "disconnect" to cancel)...
Connected successfully.
👉 To get started, try "status" or "help".
[zxdb]
```
In the `zxdb` terminal, you can start performing interactive debugging
operations. The example below shows that `zxdb` is attached to the
`memory_monitor` component and a breakpoint is created at the
component's `main` function:
```none {:.devsite-disable-click-to-copy}
[zxdb] attach memory_monitor.cm
Waiting for process matching "memory_monitor.cm".
Type "filter" to see the current filters.
Attached Process 1 state=Running koid=47467 name=memory_monitor.cm
[zxdb] process
# State Koid Name
▶ 1 Running 47467 memory_monitor.cm
[zxdb] break $main
Created Breakpoint 1 @ $main
48
◉ 49 int main(int argc, const char** argv) {
50 auto command_line = fxl::CommandLineFromArgcArgv(argc, argv);
[zxdb]
```
To exit the `zxdb` terminal, type `exit` or press `Ctrl-D`.
For more information on usages and best practices on `zxdb`,
see the [`zxdb` user guide][zxdb-user-guide].
<!-- Reference links -->
[ffx-debug-connect]: https://fuchsia.dev/reference/tools/sdk/ffx#connect
[register-debug-symbols]: ./register-debug-symbols.md
[zxdb-user-guide]: /docs/development/debugger/README.md