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

在输出中使用颜色。

-f <name>, --find=<name>

在加速器表中搜索与<name>完全匹配的文本,并打印匹配的调试信息条目。当没有加速器表或您要查找的 DIE 的名称未在加速器表中找到时,请尝试使用速度较慢但更完整的--name选项。

-F, --show-form

在 DWARF 属性类型之后显示 DWARF 形式类型。

-h, --help

显示此命令的帮助和用法。

--help-list

显示此命令的帮助和用法,但不将选项分组到类别中。

-i, --ignore-case

在使用--name时忽略大小写区分。

-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>的深度。

--quiet

--verify一起使用,以避免输出到STDOUT

-r <N>, --recurse-depth=<N>

在显示调试信息条目时,仅显示子项最多到<N>的深度。

--show-section-sizes

显示所有调试段的大小,以字节为单位。

--show-sources

打印调试信息中提到的所有源文件。尽可能提供绝对路径。

--statistics

收集调试信息质量指标,并将结果作为机器可读的单行 JSON 输出打印。输出格式在下面的部分中描述(统计信息输出格式)。

--summarize-types

缩写类型单元条目的描述。

-x, --regex

在使用--name搜索时,将任何<name>字符串视为正则表达式。如果还指定了--ignore-case,则正则表达式将不区分大小写。

-u, --uuid

显示每个架构的 UUID。

--diff

以更利于比较来自两个不同文件的 DWARF 输出的格式转储输出。

-v, --verbose

在转储时显示详细的信息。这有助于调试 DWARF 问题。

--verify

验证 DWARF 信息的结构,包括编译单元链、DIE 关系图、地址范围等。

--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 段。某些条目支持添加 = 作为一种方式来提供要转储的相应段内精确条目的可选偏移量。提供偏移量时,只会转储该偏移量处的条目,否则会转储整个段。

--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 … ==> 变量数量,不包括入口值等。

退出状态

如果输入文件成功解析并转储,则 llvm-dwarfdump 返回 0。否则,返回 1。

另请参阅

dsymutil(1)