使用 zxdb 對測試進行偵錯

本頁提供 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 個工作流程。但在本範例中,執行緒已屬於嚴重錯誤 例外狀況,stepnextuntil 等一般執行指令 無法使用。檢查指令,例如 printframebacktrace 都可供使用。

同時執行測試案例

zxdb 專門用來處理多程序偵錯。如要查看 目前附加的處理程序及相關執行狀態,含有 process 名詞 或是使用 status 指令目前「有效」程序會標上 「▶」] 號。

詳情請參閱互動模式 (或 使用 help 指令)。

視您提供給 fx test 或測試執行元件的選項而定 多個測試案例可能會同時失敗。有權限 測試執行器都會為每個測試案例產生個別程序,而且 可允許多個測試程序 讓應用程式從可以最快做出回應的位置 回應使用者要求

使用 fx test 執行時,zxdb 會附加到您值區內的所有程序 測試領域測試案例失敗「只會」停止該程序。

只有在測試案例數量時,才會停止平行執行作業 失敗情形等於系統允許的平行測試案例數量。在任何情況下 程序會從 zxdb 卸離,系統會立即啟動另一個測試案例程序。

關閉偵錯工具

檢查測試失敗後,您可以透過下列方式繼續執行測試: 從測試程序卸離,例如使用 killdetachcontinue

如先前所述 同時執行測試案例,多個 測試案例可能會同時失敗如未明確將 附加的程序,zxdb 仍在前景中。您可以查看所有附加的 處理使用 process 名詞的程序

您也可以使用特定指令,從所有處理程序卸離,例如: quitdetach *ctrl+d),並繼續執行測試套件 立即生效