跳至內容

Debuginfod

出自 Arch Linux 中文维基

Debuginfod 是一種通過 HTTP API 提供 debug 信息的服務。

安裝[編輯 | 編輯原始碼]

gdb 會自動嘗試從 DEBUGINFOD_URLS 環境變量中指定的伺服器下載調試文件(debug files),該變量是一串以空格分隔的 URL。

libelfgdb 的依賴項,附帶了 /etc/profile.d/debuginfod.sh/etc/profile.d/debuginfod.csh 腳本,這些腳本在登錄時設置變量,因此無需安裝額外的軟件包。這些腳本解析 /etc/debuginfod/ 中的 .urls 文件,並將 DEBUGINFOD_URLS 環境變量默認設置為 https://debuginfod.archlinux.org

提示:還可以使用 https://debuginfod.elfutils.org/ 作為聯合伺服器並查詢所有可用的 debuginfod 伺服器。

您可以選擇性安裝提供 debuginfod-find(1) 實用程序的 debuginfod 軟件包,此包是 delve 中的 debuginfod 支持所必需的。

使用[編輯 | 編輯原始碼]

提示:關於 debuginfod 配合 gdb 一起使用,參考 Debugging/Getting traces#Getting the trace

手動下載[編輯 | 編輯原始碼]

如果要手動檢索 zstd 中某些源文件的調試符號, 可以使用 debuginfod-find:

$ debuginfod-find debuginfo /usr/bin/zstd
/home/user/.cache/debuginfod_client/70e1b456c5813658df6436a3deb71812e75a0267/debuginfo
$ debuginfod-find source /usr/bin/zstd /usr/src/debug/zstd-1.5.2/programs/fileio.c
/home/user/.cache/debuginfod_client/70e1b456c5813658df6436a3deb71812e75a0267/source##usr##src##debug##zstd-1.5.2##programs##fileio.c

禁用[編輯 | 編輯原始碼]

可以通過清除 DEBUGINFOD_URLS 來禁用 debuginfod 客户端服務:

$ unset DEBUGINFOD_URLS

如果想使用本地緩存,而不嘗試連接任何伺服器,可以將 DEBUGINFOD_URLS 設置為非空字符串,例如 /dev/null

調試器支持[編輯 | 編輯原始碼]

多種調試器支持使用 debuginfod 查找調試符號和原始碼列表。

軟件包 狀況 注意
gdb 支持
delve 支持
KDE Crash Report 支持
valgrind 支持

緩存[編輯 | 編輯原始碼]

debuginfod 的緩存存儲在 $DEBUGINFOD_CACHE_PATH (如果已設置)指定的位置。否則,如果設置了 $XDG_CACHE_HOME,它將使用 $HOME/.cache/debuginfod_client/$XDG_CACHE_HOME/debuginfod_client/。緩存的大小可能增長得非常快,具體取決於您擁有的調試會話數量以及涉及的軟件包。

有 3 個參數可以配置緩存行為,如 debuginfod(8) § CACHE 手冊中的描述:

  • cache_clean_interval_s: 每次自動清理之間的間隔(默認為 86400,即 1 天)
  • max_unused_age_s: 未使用的數據保留多長時間(默認為 604800,即 1 周)
  • cache_miss_s: 記住失敗的查詢多長時間(默認為 600,即 10 分鐘)

每個參數都由緩存文件夾中同名文件中的數字定義。

如果你很少使用 debuginfod,可以手動刪除緩存中的所有目錄(保留參數文件)或完整的緩存目錄。

參見[編輯 | 編輯原始碼]