為驅動程式庫新增追蹤記錄

本文件說明如何在 Fuchsia 系統中為驅動程式庫加入追蹤記錄。

總覽

如需追蹤記錄的簡介,請參閱「Fuchsia 追蹤系統」一文。 不過,驅動程式不需要指定追蹤程式。 驅動程式代管程序會提供一個驅動程式給司機。

如需追蹤功能的教學課程,請參閱「在程式碼中加入追蹤記錄」。 如需追蹤 API 參考資料,請參閱「追蹤:C 和 C++ 巨集」一文。

新增追蹤記錄

如要新增追蹤項目驅動程式,請更新驅動程式庫的原始碼 和 BUILD.gn 檔案。

原始碼更新

如要在驅動程式庫元件中新增追蹤記錄,請將原始碼更新為叫用 lib/trace/event.h 中的 TRACE_*() 巨集,例如:

#include <lib/trace/event.h>

void DoSomething(int a, std::string b) {
  TRACE_DURATION("example", "DoSomething", "a", a, "b", b);

  // Do something
}

大多數巨集的前兩個引數是追蹤記錄類別,而 事件名稱。在這個範例中為 exampleDoSomething。 。

追蹤記錄類別可讓您指定追蹤系統的資料類型 收集。如果沒有要求類別,系統就不會收集任何資料。獎項 可以重複執行相同的元件一組通常是數個 。

追蹤記錄中包含事件名稱,用來描述事件。是 通常都是不重複的活動

BUILD.gn 更新

如要取得追蹤支援功能,請將下列目標新增至驅動程式 BUILD.gn:

fuchsia_driver("my_driver") {
  deps = [
    ...
    "//zircon/system/ulib/trace",
  ]
}

透過追蹤記錄啟動

Fuchsia 使用核心指令列旗標啟用驅動程式中的追蹤功能 執行期間:

driver.tracing.enable=1

這是 Fuchsia 裝置的預設設定。

如要停止使用 Fuchsia 追蹤功能的驅動程式,請使用以下指令啟動核心: 以下指令列標記:

driver.tracing.enable=0

如需啟動特定 Fuchsia 裝置的說明,請參閱相關說明文件 硬體或 QEMU。啟動期間不必特別進行追蹤。

使用追蹤記錄

使用 ffx trace 錄製追蹤記錄並查看含有 Perfetto 檢視器

以下範例指令使用example原始碼更新」一節:

$ ffx trace start --categories "example,kernel:sched,kernel:meta"

如果您符合下列情況,就必須提供 kernel:sched,kernel:meta 類別 以視覺化方式呈現結果視覺化工具想要為追蹤資料建立關聯 執行緒和程序,而且需要核心提供的資料 根據這些類別

詳情請參閱 未安裝 ffx 的 Fuchsia 裝置,請參閱 錄製追蹤記錄以進行效能分析

其他資訊

詳情請參閱 Fuchsia 追蹤指南