llvm-dwarfdump - 傾印與驗證 DWARF 除錯資訊¶
概要¶
llvm-dwarfdump [選項] [檔案名稱 …]
描述¶
llvm-dwarfdump 解析物件檔案、封存檔和 .dSYM 套件中的 DWARF 區段,並以人類可讀的形式印出其內容。除非指定了區段特定的選項或 --all
,否則只會印出 .debug_info 區段。
如果未指定輸入檔案,則會改為使用 a.out。如果使用 - 作為輸入檔案,llvm-dwarfdump 會從其標準輸入串流讀取輸入。
選項¶
- -a, --all¶
傾印所有支援的 DWARF 區段。
- --arch=<arch>¶
傾印指定 CPU 架構的 DWARF 除錯資訊。架構可以名稱或數字指定。此選項可以多次指定,每次指定一個所需的架構。預設會印出所有 CPU 架構。
- -c, --show-children¶
在使用
--debug-info
的 =<offset> 參數選擇性印出,或使用--find
或--name
等選項時,顯示除錯資訊條目的子項目。
- --color¶
在輸出中使用顏色。
- --error-display=<value>¶
設定驗證時要顯示的詳細程度和摘要。暗示
--verify
。支援的值為:quiet - 僅顯示是否發生錯誤。summary - 僅顯示找到的錯誤摘要。details - 詳細顯示每個錯誤,但不顯示摘要。full - 顯示每個錯誤以及摘要。[預設]
- -f <name>, --find=<name>¶
在加速表中搜尋完全符合 <name> 的文字,並印出符合的除錯資訊條目。當沒有加速表或在加速表中找不到您要尋找的 DIE 名稱時,請嘗試使用速度較慢但更完整的
--name
選項。
- -F, --show-form¶
在 DWARF 屬性類型之後顯示 DWARF 表單類型。
- -h, --help¶
顯示此命令的說明和用法。
- --help-list¶
顯示此命令的說明和用法,但不將選項分組為類別。
- -n <name>, --name=<name>¶
尋找並印出所有名稱(DW_AT_name 屬性)為 <name> 的除錯資訊條目。
- --lookup=<address>¶
在除錯資訊中查找 <address>,並印出檔案、函數、區塊和行表詳細資訊。
- -o <path>¶
將輸出重新導向到 <path> 指定的檔案,其中 - 為標準輸出串流。
- -p, --show-parents¶
在使用
--debug-info
的 =<offset> 參數選擇性印出,或使用--find
或--name
等選項時,顯示除錯資訊條目的父項目。
- --parent-recurse-depth=<N>¶
當顯示除錯資訊條目的父項目時,僅顯示到最大深度 <N>。
- -r <N>, --recurse-depth=<N>¶
當顯示除錯資訊條目時,僅顯示子項目到最大深度 <N>。
- --show-section-sizes¶
顯示所有除錯區段的大小,以位元組表示。
- --show-sources¶
印出除錯資訊中提及的所有原始碼檔案。盡可能提供絕對路徑。
- --summarize-types¶
縮寫類型單元條目的描述。
- -x, --regex¶
在使用
--name
搜尋時,將任何 <name> 字串視為正規表示式。如果也指定了--ignore-case
,則正規表示式會變為不區分大小寫。
- -u, --uuid¶
顯示每個架構的 UUID。
- --diff¶
以更友善的格式傾印輸出,以便比較來自兩個不同檔案的 DWARF 輸出。
- -v, --verbose¶
傾印時顯示詳細資訊。這有助於除錯 DWARF 問題。
- --verify¶
透過驗證編譯單元鏈、DIE 關係圖、位址範圍等,來驗證 DWARF 資訊的結構。
- --verify-json=<path>¶
將 JSON 格式的錯誤摘要輸出到 <path> 指定的檔案。暗示
--verify
。輸出格式在以下章節中描述(驗證 JSON 輸出格式)。
- --version¶
顯示工具的版本。
- --debug-abbrev, --debug-addr, --debug-aranges, --debug-cu-index, --debug-frame [=<offset>], --debug-gnu-pubnames, --debug-gnu-pubtypes, --debug-info [=<offset>], --debug-line [=<offset>], --debug-line-str, --debug-loc [=<offset>], --debug-loclists [=<offset>], --debug-macro, --debug-names, --debug-pubnames, --debug-pubtypes, --debug-ranges, --debug-rnglists, --debug-str, --debug-str-offsets, --debug-tu-index, --debug-types [=<offset>], --eh-frame [=<offset>], --gdb-index, --apple-names, --apple-types, --apple-namespaces, --apple-objc¶
依名稱傾印指定的 DWARF 區段。預設只會顯示 .debug_info 區段。某些條目支援新增 =<offset> 作為一種方式,在各自的區段中提供要傾印的確切條目的可選偏移量。當提供偏移量時,只會傾印該偏移量處的條目,否則將傾印整個區段。
--debug-macro
選項會同時印出 .debug_macro 和 .debug_macinfo 區段。--debug-frame
和--eh-frame
選項是別名,在兩個區段都存在的情況下,一個命令會輸出兩者。
- @<FILE>¶
從 <FILE> 讀取命令列選項。
統計輸出格式¶
--statistics
選項會產生單行 JSON 輸出,表示已處理除錯資訊的品質指標。這些指標有助於比較兩個編譯器之間的變更,特別是判斷編譯器變更對除錯資訊品質的影響。
輸出格式為鍵值對。第一個鍵值對包含版本號碼。以下命名方案用於鍵
variables ==> 區域變數和參數
local vars ==> 區域變數
params ==> 形式參數
對於彙總值,使用以下鍵
sum_of_all_variables(…) ==> 應用於所有變數的總和
#bytes ==> 位元組數
#variables - entry values … ==> 變數數量,不包括條目值等。
驗證 JSON 輸出格式¶
由 --verify-json
建立的 JSON 輸出的格式為
{
"error-categories": {
"<first category description>": {"count": 1234},
"<next category description>": {"count": 4321}
},
"error-count": 5555
}
如果沒有報告錯誤,則會產生以下內容
{
"error-categories": {},
"error-count": 0
}
結束狀態¶
如果輸入檔案已成功解析和傾印,llvm-dwarfdump 會傳回 0。否則,它會傳回 1。