docs/fuchsia/debug_instructions.md
[TOC]
It is possible to debug Fuchsia binaries using zxdb. For the sake of these
examples, we will be using base_unittests as the test suite we wish to
execute. These instructions assume that your Chromium build has the following gn
arguments:
is_debug = true
is_component_build = true
target_os = "fuchsia"
symbol_level = 2
(From Chromium) Install your package(s) and its symbols onto the device.
out/fuchsia/bin/install_base_unittests --fuchsia-out-dir=/path/to/fuchsia/out/directory
(From Fuchsia source tree) Run the debugger.
fx debug -- --build-dir /path/to/chromium/src/out/directory
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.
Install the zxdb extension.
Modify the zxdb.command setting in your Chromium workspace to this value:
(cd /path/to/fuchsia ; fx debug -- --enable-debug-adapter --build-dir /path/to/chromium/src/out/directory)
Edit your debug launch configurations in .vscode/launch.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to base_unittests",
"type": "zxdb",
"request": "attach",
"process": "base_unittests.cmx"
}
]
}
You can add more configurations as needed.
Start the debug configuration in VS Code. You should get a terminal with zxdb running.
Launch the test suite in a terminal.
out/fuchsia/bin/run_base_unittests -d --fuchsia-out-dir=/path/to/fuchsia/out/directory
Breakpoints set in the IDE should work.