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。