註冊追蹤記錄提供者

本頁說明如何在 Fuchsia 系統中註冊新的追蹤記錄提供者。

如要使用追蹤功能,您必須向新的追蹤服務供應商註冊 Fuchsia 追蹤系統中的追蹤記錄管理工具。 (不過,驅動程式從開發主機起不必註冊為追蹤程式 會透過 libdriver.so 處理)。

如要註冊追蹤服務供應商,請按照以下步驟操作:

  1. 使用追蹤記錄管理工具註冊元件
  2. 設定功能轉送

使用追蹤記錄管理工具註冊元件

如要將元件註冊為追蹤提供者,您可以使用 libtrace-provider 程式庫,在元件的程式碼中提供非同步迴圈。( 如要瞭解追蹤程式庫,請參閱追蹤程式庫)。

請參閱以下範例:

C++

#include <lib/async-loop/cpp/loop.h>
#include <lib/async-loop/default.h>
#include <lib/trace-provider/provider.h>
// further includes

int main(int argc, const char** argv) {
  // process argv

  async::Loop loop(&kAsyncLoopConfigAttachToCurrentThread);
  trace::TraceProviderWithFdio trace_provider(
      loop.dispatcher(), "my_trace_provider");

  // further setup

  loop.Run();
  return 0;
}

C 罩杯

#include <lib/async-loop/cpp/loop.h>
#include <lib/async-loop/default.h>
#include <lib/trace-provider/provider.h>

int main(int argc, char** argv) {
  zx_status_t status;
  async_loop_t* loop;
  trace_provider_t* trace_provider;

  // Create a message loop.
  status = async_loop_create(&kAsyncLoopConfigNoAttachToCurrentThread, &loop);
  if (status != ZX_OK) exit(1);

  // Start a thread for the loop to run on.
  // Alternatively, use async_loop_run() to run on the current thread.
  status = async_loop_start_thread(loop, "loop", NULL);
  if (status != ZX_OK) exit(1);

  // Create the trace provider.
  async_dispatcher_t* dispatcher = async_loop_get_dispatcher(loop);
  trace_provider = trace_provider_create(dispatcher);
  if (!trace_provider) exit(1);

  // Do something...

  // Tear down.
  trace_provider_destroy(trace_provider);
  async_loop_shutdown(loop);
  return 0;
}

荒漠油廠

fn main() {
    fuchsia_trace_provider::trace_provider_create_with_fdio();
    // ...
}

設定能力轉送

為了讓元件要求適當的追蹤功能, 在元件資訊清單 (.cml) 中加入下列欄位:

{
  include: [
    "trace/client.shard.cml",
  ],
  ...
}

這樣一來,您的元件就能使用 fuchsia.tracing.provider.Registry 通訊協定,並將優惠轉送至 其直接子項。如果元件是其他元件的子項, 需要為每個父項都加入 client.shard.cmlcml。

如果元件使用以 Chromium 為基礎的 fuchsia.web 服務,且您想要 才能收集其追蹤資料 「fuchsia.tracing.provider.Registry」和 必須提供 fuchsia.tracing.perfetto.ProducerConnector 項功能 至您的 Context。(如要瞭解這些功能如何傳遞至 Context, 請參閱 fuchsia.web/CreateContextParams.service_directory)。

將元件註冊為追蹤提供者後,您就可以啟用 中的追蹤記錄如需詳細資訊,請參閱 在程式碼中加入追蹤記錄