熟悉 Fuchsia 偵錯工具 zxdb 的基本功能後,建議您:
偵錯當機傾印檔
Zxdb 支援載入當機報告產生的小型轉儲。
您可以使用 ffx debug core
指令載入當機報告,例如:
ffx debug core <var>crash_dump_file</var>
下載符號
Zxdb 會自動搜尋在 symbol-index 中註冊的伺服器,找出所有本機設定的符號目錄中不存在的符號。您可以執行下列指令,查看符號索引中註冊的符號伺服器完整清單:
ffx debug symbol-index list -a
這會以遞迴方式掃遍並解析全域符號索引中的所有符號索引檔案。詳情請參閱「關於符號設定」一文。
顯示的伺服器可用來下載符號檔案,並以非同步的方式將其載入偵錯工具。對於特別大型的偵錯資訊檔案,您可能會在 zxdb 中看到 sym-stat
的輸出內容,如下所示:
[zxdb] sym-stat
...
Base: 0xc37e9000
Build ID: ba17ef8c43bccf5fb6bf84f9a8d83d9cf3be8976 (Downloading...)
Symbols loaded: No
...
這表示正在下載。檔案下載完成後,zxdb 就會為新下載檔案的符號建立索引,並且可以繼續偵錯。
附加至現有程序
在大多數情況下,除非您將 zxdb 工作流程自動化,否則不應附加至特定程序。如果您使用 zxdb 而不自動化,應該將 zxdb 附加至元件 ID,請參閱執行 zxdb 一節。
您可以依據程序的 koid (核心物件 ID) 附加至大多數執行中的程序。zxdb 提供 ps
指令,以便查看在 Fuchsia 裝置或模擬器上執行的程序。
在嘗試執行 ps
之前,請確認您已將 zxdb 附加至元件,或至少連線至 Fuchsia 裝置:
舉例來說,如要連線至 core/starnix_runner
元件:
ffx component debug core/starnix_runner
連線至偵錯工具後,您可以執行 ps
,藉此查看 Fuchsia 裝置或模擬器中所有執行中程序的清單:
[zxdb] 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
從上方的輸出內容中:
工作或程序後面的數字就是物件的 KOID。然後,你可以執行以下操作:
附加至特定程序
您可以透過 zxdb 控制台附加至特定程序。舉例來說,如要附加至 KOID 為 66797
的 starnix_kernel.cm
程序:
[zxdb] 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
工作:
[zxdb] 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 控制台中,附加至工作的特定程序。例如,如要附加至 starnix_kernel.cm
程序 (這是 KOID 為 66764
的工作中的一部分):
[zxdb] 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]