本页提供了有关使用 Fuchsia 的详细信息和示例
调试程序 (zxdb
)。fx test
此外,您也可以参阅教程:使用 zxdb 调试测试 如需详细了解如何在测试中使用 zxdb。
从 fx 测试启动 zxdb 会话
fx test
命令支持 --break-on-failure
和 --breakpoint
标志,可让您使用 zxdb
调试测试。如果您的测试使用
兼容的测试运行程序(即 gTest、gUnit 或 Rust),添加
--break-on-failure
标志会导致测试失败,导致测试执行暂停
并输入 zxdb
调试环境,例如:
fx test --break-on-failure rust_crasher_test.cm
该命令会返回如下输出:
<...fx test startup...>
Running 1 tests
Starting: fuchsia-pkg://fuchsia.com/crasher_test#meta/rust_crasher_test.cm
Command: fx ffx test run --max-severity-logs WARN --break-on-failure fuchsia-pkg://fuchsia.com/crasher_test?hash=1cceb326c127e245f0052367142aee001f82a73c6f33091fe7999d43a94b1b34#meta/rust_crasher_test.cm
Status: [duration: 13.3s] [tasks: 3 running, 15/18 complete]
Running 1 tests [ ] 0.0%
👋 zxdb is loading symbols to debug test failure in rust_crasher_test.cm, please wait.
⚠️ test failure in rust_crasher_test.cm, type `frame` or `help` to get started.
84 #[test]
85 fn test_should_fail() {
▶ 86 assert_eq!(0, 1);
87 }
88 }
🛑 process 1 rust_crasher_bin_test::tests::test_should_fail() • main.rs:86
[zxdb]
既然您已经启动了 zxdb 会话,现在就可以使用大部分常规
zxdb
工作流。不过,在此示例中,线程已处于严重崩溃状态
异常,例如 step
、next
和 until
等典型的执行命令
不可用。检查命令,例如 print
、frame
和 backtrace
在调试会话期间可用。
并行执行测试用例
zxdb
旨在处理多进程调试。您可以检查
当前附加的进程及其执行状态(使用 process
名词)
或使用 status
命令创建,当前“有效”进程标记为
“▶”号。
如需了解详情,请参阅互动模型(或
使用 help
命令)。
具体取决于您为 fx test
或测试运行程序提供的选项
默认配置,那么多个测试用例可能会并行失败。支持
所有测试运行程序都会为每个测试用例生成单独的进程,而默认的
配置可能允许在同一时间运行多个测试流程
。
使用 fx test
运行时,zxdb
会附加到您应用中的所有进程
测试领域。测试用例失败只会停止该特定进程。
当且仅当测试用例的数量
等于允许的并行测试用例数。执行任何
进程与 zxdb
分离时,另一个测试用例流程将立即开始。
关闭调试程序
检查完测试失败情况后,您可以通过以下方式恢复测试作业:
与测试流程分离,例如使用 kill
、detach
或
continue
。
如
并行执行测试用例,多个
多个测试用例可能会同时失败。如果您没有明确地从
附加进程时,zxdb
仍位于前台。您可以查看所有已附加
使用 process
名词运行这些进程。
您还可以使用某些命令从所有进程中分离(例如,
quit
、detach *
和 ctrl+d
)并继续执行测试套件
。