進階主題

熟悉 Fuchsia 偵錯工具 zxdb 的基本功能後,您可能會想:

偵錯當機傾印檔

Zxdb 支援載入錯誤報告產生的迷你轉儲檔。如需有關偵錯當機快照資料的更詳細範例,請參閱「教學課程:使用 zxdb 偵錯迷你快照資料

您可以使用 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 附加至元件 ID,請參閱「執行 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 為 66797starnix_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 為 66764core/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 主控台,連結至工作中特定程序。舉例來說,如要附加 starnix_kernel.cm 程序 (屬於 KOID 為 66764 的工作):

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]