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:
-
(From Chromium) Install your package(s) and its symbols onto the device.
$ out/fuchsia/bin/install_base_unittests
-
(From Fuchsia source tree) Run the debugger.
$ fx debug
- Set up the debugger to attach to the process.
[zxdb] attach base_unittests.cmx
- Configure breakpoint(s).
[zxdb] break base::GetDefaultJob
- (In another terminal, from Fuchsia source tree) Run the test package.
$ fx shell run fuchsia-pkg://fuchsia.com/base_unittests#meta/base_unittests.cmx
- 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
...
- 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.