總覽
fidlcat 這項工具可讓使用者監控 FIDL 連線。目前, 可在 Fuchsia 裝置上附加或啟動處理程序,並回報其 FIDL 流量
啟用中
fidlcat 工具包含在 SDK 中。在 fuchsia.git 中,會叫用
fx build 將自動建構。
如要執行「fidlcat」,您必須在 Fuchsia 目標中啟用網路。如要啟動
已啟用網路的模擬器。按照操作說明啟動模擬器
可存取 FEMU 的外部網路
頁面。
執行
正確設定環境並建立 fidlcat 後
以監控來自目標上處理程序的 FIDL 訊息。另有
你可以採取幾種做法請注意,您必須使用 ffx debug
fidl 指令叫用 fidlcat,這樣系統才會自動設定網路通道並找到部分
必要構件 (例如偵錯符號)。
附加至執行中的處理程序
如果您在殼層中執行 ps 指令,可以取得要監控的 Pid。
並執行:
ffx debug fidl --remote-pid <pid>
如果程式碼是由執行元件執行,您可能會想要附加至
執行元件如果是 Dart JIT 執行的程式碼,請在目標上執行 ps,然後找出名為 dart_jit_runner 的程序:
host$ fx shell ps
[...]
        j:21102           17.6M   17.6M
          p:21107         17.6M   17.6M     32k         dart_jit_runner.cm
接著,您可以直接將電子郵件附加到該處理程序,並檢視由 飛鏢計畫:
host$ ffx debug fidl --remote-pid 21107
您可以多次使用 --remote-pid 旗標來連線至多個程序:
ffx debug fidl --remote-pid <pid1> --remote-pid <pid2>
使用 fidlcat 啟動元件
或者,您也可以直接使用元件的網址啟動元件:
ffx debug fidl -- run fuchsia-pkg://fuchsia.com/echo_client_rust#meta/echo_client_rust.cm
您也可以透過 bash 規則運算式指定網址,且該規則運算式與建構的已知專屬網址相符:
ffx debug fidl -- run "echo_client_cpp_synchronous.*"
ffx debug fidl -- run echo_client_cpp.cm
附加至啟動時的程式
您也可以傳送規則運算式到 名稱相符。Fidlcat 會連接至所有目前執行中的檔案, 並啟動符合規則運算式的程式如果發出以下要求: 指令,fidlcat 會連線至系統,並連接到所有 「echo_client」子字串。
ffx debug fidl --remote-name echo_client
混合用途
這三個選項 --remote-pid、--remote-name 和 run 指令。 不過,執行作業一律必須是最後一項。
當 --remote-name 和 run 搭配使用時,只會搭配使用符合 --remote-name 會受到監控。
範例 (echo_server 由 echo_client 啟動):
執行並監控 echo_client。
sh
ffx debug fidl -- run echo_client_cpp.cm
執行並監控 echo_client。
sh
ffx debug fidl --remote-name echo_client -- run echo_client_cpp.cm
執行 echo_client 並監控 echo_server。
sh
ffx debug fidl --remote-name echo_server -- run echo_client_cpp.cm
執行 echo_client 並監控 echo_client 和 echo_server。
sh
ffx debug fidl --remote-name echo -- run echo_client_cpp.cm
執行 echo_client 並監控 echo_client 和 echo_server。
sh
ffx debug fidl --remote-name echo_client --remote-name echo_server -- run echo_client_cpp.cm
監控服務
如要監控服務,建議您使用 --extra-name,而不是 --remote-name。選項 --extra-name 也會監控某些程序。不過,針對這些程序,監控作業只會啟動 當「--remote-name」中有一個另外,Fidlcat 會在最後 "--remote-name"就會停止 (即使某些「--extra-name」程序仍然受到監控)。
ffx debug fidl --remote-name echo --extra-name archivist -- run echo_client_cpp.cm
輸入選項
您有兩種輸入選項:
- --from=device 此為預設選項,可即時監控裝置。 
- --from=<path>播放。使用這個選項時,fidlcat 會重播先前儲存的工作階段 --to=<path>(protobuf 格式)。 
工作階段儲存
--to=<path> 選項工作階段會儲存到指定的檔案 (二進位 protobuf 格式)。 儲存工作階段後,您可以使用「--from=<path>」重播工作階段。系統會儲存原始資料。 也就是說,顯示的資料與所顯示的資料各自獨立。
格式 (輸出) 選項
您有下列輸出選項:
- --format=pretty 這是預設輸出。工作階段很清楚地印著 (有顏色)。 
- --format=json 。工作階段會以 JSON 格式列印。 
- --format=textproto 工作階段會以文字 protobuf 格式列印。 
- --format=summary 工作階段結束時,會顯示工作階段的摘要。 
- --format= 標準輸出不會顯示任何內容 (這個選項只有在使用 取代為 --to=<path>)。如果沒有輸出,Fidlcat 可更快完成 ( 來監控即時元件 
疑難排解
如果您在執行 ffx debug fidl 時遇到問題,請參閱疑難排解指南
zxdb
fidlcat 工具需要兩個資訊來源才能運作。如果任一者
否則無法將 fidl 訊息解碼:
- 首先,它需要執行檔的符號。實務上 在樹狀結構內執行時,符號應自動提供給 fidlcat。 或者,您也可以使用 a) - .build-id來提供- --build-id-dir旗標,b) 使用- --ids-txt旗標的- ids.txt檔案,或 c) 使用- --symbol-path建立任意 ELF 檔案或 ELF 檔案目錄 旗標。這些標記可以合併並多次指定。
- 第二,它需要對擷取的 FIDL 使用中間表示法,因此 就能產生可讀的輸出內容如果您正在樹狀結構內跑步,則 IR 應該是 自動提供給 fidlcat若非如此,您還可以提供 fidlcat IR 路徑,可以是明確的 IR 檔案路徑,也就是會掃描 IR 的目錄 檔案或包含明確路徑的引數檔案可提供 加上 - --fidl-ir-path旗標,即可 fidlcat 回應。引數檔案必須 在前方加上- @字元:- --fidl-ir-path @argfile。
其他疑慮的開發人員可以提出 錯誤。使用工具>fidlcat 元件。
閱讀指南
fidlcat 指南說明瞭修改 輸出內容同時也提供一些螢幕解讀範例。
程式碼在哪裡?
程式碼位於 //tools/fidlcat。