本頁提供 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),並繼續執行測試套件
立即生效