forked from chromium/chromium
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[fuchsia] Add debug symbols when running test suites
This also updates the Fuchsia debugging documentation instructions. Bug: 1254560 Change-Id: I1351d47762504a41557f13caa2b3fc1794789bc2 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3199373 Commit-Queue: Fabrice de Gans <[email protected]> Reviewed-by: Kevin Marshall <[email protected]> Cr-Commit-Position: refs/heads/main@{#928433}
- Loading branch information
Showing
3 changed files
with
83 additions
and
25 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,49 +1,100 @@ | ||
# 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: | ||
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 | ||
``` | ||
|
||
## Manual debugging via the command line | ||
|
||
1. (From Chromium) Install your package(s) and its symbols onto the device. | ||
|
||
```bash | ||
$ out/fuchsia/bin/install_base_unittests | ||
out/fuchsia/bin/install_base_unittests --fuchsia-out-dir=/path/to/fuchsia/out/directory | ||
``` | ||
|
||
2. (From Fuchsia source tree) Run the debugger. | ||
|
||
```bash | ||
$ fx debug | ||
``` | ||
```bash | ||
fx debug -- --build-dir /path/to/chromium/src/out/directory | ||
``` | ||
|
||
3. Set up the debugger to attach to the process. | ||
|
||
``` | ||
[zxdb] attach base_unittests.cmx | ||
``` | ||
``` | ||
[zxdb] attach base_unittests.cmx | ||
``` | ||
|
||
4. Configure breakpoint(s). | ||
|
||
``` | ||
[zxdb] break base::GetDefaultJob | ||
``` | ||
``` | ||
[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 | ||
``` | ||
```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 | ||
... | ||
``` | ||
``` | ||
[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. | ||
Run `help` inside ZXDB to see what debugger commands are available. | ||
|
||
## VS Code integration | ||
|
||
1. Install the [zxdb](https://marketplace.visualstudio.com/items?itemName=fuchsia-authors.zxdb) | ||
extension. | ||
|
||
2. Modify the `zxdb.command` setting in your Chromium workspace to this value: | ||
|
||
```bash | ||
(cd /path/to/fuchsia ; fx debug -- --enable-debug-adapter --build-dir /path/to/chromium/src/out/directory) | ||
``` | ||
|
||
3. Edit your debug launch configurations in `.vscode/launch.json`: | ||
|
||
```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. | ||
|
||
4. Start the debug configuration in VS Code. You should get a terminal with zxdb | ||
running. | ||
|
||
5. Launch the test suite in a terminal. | ||
|
||
```bash | ||
out/fuchsia/bin/run_base_unittests -d --fuchsia-out-dir=/path/to/fuchsia/out/directory | ||
``` | ||
|
||
6. Breakpoints set in the IDE should work. |