熟悉 Fuchsia 调试程序 zxdb 的基本功能后,您可能需要:
调试崩溃转储
Zxdb 支持加载崩溃报告生成的 minidump。如需查看有关调试崩溃转储的更详细示例,请参阅教程:使用 zxdb 调试 minidump
您可以使用 ffx debug core
命令加载崩溃报告,例如:
ffx debug core crash_dump_file
下载符号
Zxdb 会自动搜索在 symbol-index 中注册的服务器,以查找未在任何本地配置的符号目录中找到的符号。您可以使用以下命令查看符号索引中注册的符号服务器的完整列表:
ffx debug symbol-index list -a
这会递归遍历并解析全局符号索引中包含的所有符号索引文件。如需了解详情,请参阅符号设置简介。
显示的服务器用于下载符号文件并将其异步加载到调试程序。对于特别大的调试信息文件,您可能会在 zxdb 中看到 sym-stat
输出如下所示:
sym-stat
...
Base: 0xc37e9000
Build ID: ba17ef8c43bccf5fb6bf84f9a8d83d9cf3be8976 (Downloading...)
Symbols loaded: No
...
这表示下载正在进行中。下载文件后,zxdb 会为新下载的文件中的符号编制索引,然后便可继续调试。
附加到现有进程
在大多数情况下,除非您要自动执行 zxdb 工作流,否则不应附加到特定进程。如果您在未启用自动化的情况下使用 zxdb,则应将 zxdb 附加到组件标识符,请参阅运行 zxdb。
您可以根据进程的 koid(内核对象 ID)附加到大多数正在运行的进程。zxdb 提供了 ps
命令,用于查看 Fuchsia 设备或模拟器上正在运行的进程。
在尝试运行 ps
之前,请务必将 zxdb 附加到组件,或者至少连接到 Fuchsia 设备:
例如,如需连接到 core/starnix_runner
组件,请执行以下操作:
ffx component debug core/starnix_runner
调试程序连接后,您可以运行 ps
以查看 Fuchsia 设备或模拟器上所有活动进程的列表:
ps
j: 1033 root
p: 1102 bin/component_manager
j: 1662
j: 1811 bootstrap/console fuchsia-boot:///console#meta/console.cm
p: 1845 console.cm
...
j: 66524 core/starnix_runner fuchsia-pkg://fuchsia.com/starnix#meta/starnix_runner.cm
▶ p: 66562 starnix_runner.cm
j: 66763
j: 66764 core/starnix_runner/kernels:RW3JlbU starnix_kernel#meta/starnix_kernel.cm
p: 66797 starnix_kernel.cm
p: 67333 init
j: 88021
p: 88084 debug_agent.cm
j: 4227 zircon-shell
p: 4608 sh:console
从上述输出中:
j
表示作业,即进程的容器。p
表示进程。
作业或进程后面的数字是对象的 KOID。然后,您可以:
附加到特定进程
您可以通过 zxdb 控制台附加到特定进程。例如,如需附加到列出的 KOID 为 66797
的 starnix_kernel.cm
进程,请执行以下操作:
attach 66797
Attached Process 2 state=Running koid=66797 name=starnix_kernel.cm component=starnix_kernel.cm
Loading 15 modules for starnix_kernel.cm ....
[zxdb]
附加到特定作业中的所有进程
您可以通过 zxdb 控制台附加到作业中的所有进程。例如,如需附加到 KOID 为 66764
的所列 core/starnix_kernels:RW3JlbU
作业,请执行以下操作:
attach -j 66764
Waiting for process matching "job 66764".
Type "filter" to see the current filters.
Attached Process 2 state=Running koid=66797 name=starnix_kernel.cm component=starnix_kernel.cm
Attached Process 3 state=Running koid=67333 name=init component=starnix_kernel.cm
Loading 15 modules for starnix_kernel.cm .....Done.
Loading 17 modules for init Done.
附加到作业中的特定进程
在 zxdb 控制台中,您可以附加到作业中的特定进程。例如,如需附加到作业(KOID 为 66764
)的 starnix_kernel.cm
进程,请执行以下操作:
attach -j 66764 starnix_kernel.cm
Waiting for process matching "starnix_kernel.cm".
Type "filter" to see the current filters.
Attached Process 2 state=Running koid=66797 name=starnix_kernel.cm component=starnix_kernel.cm
Attached Process 3 state=Running koid=67333 name=init component=starnix_kernel.cm
Loading 15 modules for starnix_kernel.cm .....Done.
Loading 17 modules for init Done.
[zxdb]