blob: 264332bbc5daf7182a5dc9af568e0a3b4bf81586 [file] [view]
# Debugging
It is possible to debug Fuchsia binaries using `zxdb`. For the sake of this
example, we will be using `base_unittests` as the test suite we wish to execute:
1. (From Chromium) Install your package(s) and its symbols onto the device.
```bash
$ out/fuchsia/bin/install_base_unittests
```
2. (From Fuchsia source tree) Run the debugger.
```bash
$ fx debug
```
3. Set up the debugger to attach to the process.
```
[zxdb] attach base_unittests.cmx
```
4. Configure breakpoint(s).
```
[zxdb] break base::GetDefaultJob
```
5. (In another terminal, from Fuchsia source tree) Run the test package.
```bash
$ fx shell run fuchsia-pkg://fuchsia.com/base_unittests#meta/base_unittests.cmx
```
6. At this point, you should hit a breakpoint in `zxdb`.
```
[zxdb] f
▶ 0 base::GetDefaultJob() • default_job.cc:18
1 base::$anon::LaunchChildTestProcessWithOptions(…) • test_launcher.cc:335
2 base::$anon::DoLaunchChildTestProcess(…) • test_launcher.cc:528
3 base::TestLauncher::LaunchChildGTestProcess(…) • test_launcher.cc:877
...
```
7. Enjoy debugging! Steps 2 through 6 will also work for things like services
which aren't run directly from the command line, such as WebEngine.
Run `help` inside ZXDB to see what debugger commands are available.