註冊偵錯符號

漫遊器:noindex

ffx debug symbol-index 指令可協助您在開發環境中管理 Fuchsia 元件的偵錯符號。

概念

在開發期間,Fuchsia 元件的偵錯符號會作為建構成果產物產生。含有除錯符號的檔案會以 .symbol-index.json 做為後置字元 (例如 my-component.symbol-index.json)。

在開發環境中註冊 Fuchsia 元件的偵錯符號,可啟用下列工作流程:

除了註冊在本機產生的偵錯符號,您也可以設定環境,從線上儲存空間 (例如 Google Cloud Storage) 擷取偵錯符號。在全域 symbol-index 設定中加入線上儲存空間後,各種 Fuchsia 偵錯工具 (例如 ffx logffx debug connect) 便可自動下載並使用線上儲存空間中的偵錯符號。

在 Fuchsia 開發環境中,偵錯符號的註冊作業通常會在背景執行。部分 Fuchsia 工具會在偵測到偵錯符號時,叫用偵錯符號的註冊作業 (使用 ffx debug symbol-index add),因此您在開發期間可能不需要手動註冊 Fuchsia 元件的偵錯符號。例如,如果您使用 Fuchsia 的 Bazel 規則,系統會在建構過程中自動註冊偵錯符號。不過,如有需要,您可以使用 ffx debug symbol-index 指令直接管理偵錯符號。

列出已註冊的偵錯符號

如要查看全域 symbol-index 設定,請執行下列指令:

ffx debug symbol-index list

這個指令會輸出類似以下的輸出內容:

$ ffx debug symbol-index list
SymbolIndex {
    includes: [
        "/usr/alice/home/my-fuchsia-project/my-component.symbol-index.json",
    ],
    build_id_dirs: [],
    ids_txts: [],
    gcs_flat: [
        GcsFlat {
           url: "gs://our-fuchsia-project/debug",
           require_authentication: false,
        },
    ],
    debuginfod: []
}

新增 debuginfod 符號伺服器

如果您使用未在 Fuchsia 樹狀結構中建構的第三方二進位檔,可以新增 debuginfod 伺服器來擷取符號。上游發行版本會提供 debuginfod 伺服器 (例如 debuginfod.debian.net) 或「聯邦」伺服器 (例如 debuginfod.elfutils.org),這些伺服器會提供來自許多不同上游來源的符號。請向上游來源確認他們是否提供 debuginfod 伺服器。這些通常會以環境變數的形式顯示,例如:

export DEBUGINFOD_URLS="https://debuginfod.debian.net

如要將上述 debuginfod 伺服器新增至符號索引,請使用以下指令:

ffx debug symbol-index add <URL>

URL 替換為您要新增的 debuginfod 伺服器網址。舉例來說,如要新增 Debian 的 debuginfod 伺服器,請執行下列指令:

ffx debug symbol-index add https://debuginfod.debian.net

註冊成功後,指令會在沒有輸出的情況下結束,而且不會輸出。偵錯工具會自動查詢伺服器,找出無法在本機找到的符號。

如要驗證註冊狀態,請參閱「列出已註冊的偵錯符號」。

移除 debuginfod 符號伺服器

如要從全域 symbol-index 設定移除 debuginfod 伺服器,請執行下列指令:

ffx debug symbol-index remove <URL>

URL 替換為您要移除的 debuginfod 伺服器網址。以下範例會移除 debian debuginfod 伺服器:

ffx debug symbol-index remove https://debuginfod.debian.net

手動註冊本機偵錯符號

如要在環境中註冊偵錯符號,請執行下列指令:

ffx debug symbol-index add <PATH_TO_DEBUG_SYMBOLS>

PATH_TO_DEBUG_SYMBOLS 替換為偵錯符號檔案的絕對路徑。

以下範例會註冊 my-component 元件的偵錯符號:

$ ffx debug symbol-index add /usr/alice/home/my-fuchsia-project/my-component.symbol-index.json

註冊成功後,指令會在沒有輸出的情況下結束,而且不會輸出。

如要驗證註冊,請參閱「列出已註冊的偵錯符號」一文。

移除已註冊的本機偵錯符號

如要從全域 symbol-index 設定中移除偵錯符號,請執行下列指令:

ffx debug symbol-index remove <PATH_TO_DEBUG_SYMBOLS>

PATH_TO_DEBUG_SYMBOLS 替換為要移除的已註冊偵錯符號檔案的確切路徑。

以下範例會移除 my-component 元件的偵錯符號:

$ ffx debug symbol-index remove /usr/alice/home/my-fuchsia-project/my-component.symbol-index.json

移除成功後,指令會靜默結束,不會輸出任何內容。

清理錯誤放置的偵錯符號

在主機上刪除已註冊的偵錯符號檔案,並不代表全域 symbol-index 設定也會自動更新。

如要從全域 symbol-index 設定中移除任何過時路徑 (指向已刪除的偵錯符號檔案),請執行下列指令:

ffx debug symbol-index clean

舉例來說,如果 /usr/alice/home/my-fuchsia-project 目錄已不在主機機器上,這個指令會從全域 symbol-index 設定中移除 /usr/alice/home/my-fuchsia-project/my-component.symbol-index.json 項目。