Zxdb 是一种控制台模式调试程序,适用于在 Fuchsia 上运行的原生代码。
它主要支持 C、C++ 和 Rust 代码,但任何能够原生编译并导出 DWARF 符号的语言都应该在一定程度上可以使用。
不支持 Dart 和 JavaScript 等解释型代码。
运行 zxdb
将 zxdb
附加到组件的方法有多种
ffx component debug
:
ffx component debug component-identifier
例如,以下命令会附加到名为 cobalt.cm
的组件:
ffx component debug cobalt.cm
这将显示如下输出:
Waiting for process matching "job 20905".
Type "filter" to see the current filters.
👉 To get started, try "status" or "help".
Attached Process 1 state=Running koid=21057 name=cobalt.cm component=cobalt.cm
Loading 15 modules for cobalt.cm ...Done.
[zxdb]
您还可以使用其他类型的组件标识符,例如组件 名称。
例如,以下示例会附加到 core/cobalt
组件标识名:
ffx component debug core/cobalt
此外,您还可以使用更短的组件标识符,例如 cobalt
:
ffx component debug cobalt
但是,如果 zxdb
无法确定您引用的是哪个组件
您可能会看到如下输出:
The query "cobalt" matches more than one component instance:
core/cobalt
core/cobalt_system_metrics
To avoid ambiguity, use one of the above monikers instead.
在这种情况下,请务必明确说明要将 zxdb
附加到哪个组件。
使用 Fuchsia 软件包网址
您还可以使用完整的 Fuchsia 软件包网址:
ffx component debug fuchsia-pkg://fuchsia.com/cobalt#meta/cobalt.cm
这将显示如下输出:
Waiting for process matching "job 20905".
Type "filter" to see the current filters.
👉 To get started, try "status" or "help".
Attached Process 1 state=Running koid=21057 name=cobalt.cm component=cobalt.cm
Loading 15 modules for cobalt.cm ...Done.
[zxdb]
查看可用组件
您可以查看可用组件的完整列表:
ffx component list
您应该会看到如下所示的输出:
...
bootstrap
bootstrap/archivist
bootstrap/archivist/archivist-pipelines
...
core/brightness_manager
core/build-info
core/cobalt
...
使用 zxdb
成功连接到 zxdb
调试程序后,您可能需要执行以下操作:
- 开始使用 zxdb
- 使用断点
- 使用 zxdb 调试测试
- 控制线程执行(暂停、单步调试和恢复)
- 求表达式
- 检查内存
- 列出句柄和内核对象
- 使用汇编语言
- 查看手柄
- 了解符号的加载方式
- 处理例外情况
- 查看高级 zxdb 主题
您还可以按照 zxdb 教程操作:
此外,如果您有意为 zxdb 做出贡献,请执行以下操作: