Linux 本机调试符号格式是什么?

Linux 本机调试符号格式是什么?

海湾合作委员会文档说这个-g选项以操作系统的本机格式(stabs、COFF、XCOFF 或 DWARF 2)生成调试信息

那么,Linux本机调试符号格式是什么?这叫什么?


更新:我刚刚找到了一个 15 岁的人gcc 邮件列表讨论据说当时的原生格式是stabs,然后他们正在考虑切换到DWARF2。但那是 15 年前的事了……有更新吗? =)

答案1

在 Linux 上,默认值现在是 Dwarf 2 和/或 4。要查看这一点,请readelf --debug-dump=info在包含调试符号(或剥离符号)的二进制文件上运行;例如,在 Fedora 上,glibc-debuginfo安装后运行readelf --debug-dump=info /usr/lib/debug/bin/gencat.debug会给你类似的信息

 <1><ea>: Abbrev Number: 0
  Compilation Unit @ offset 0xeb:
   Length:        0x5c (32-bit)
   Version:       2
   Abbrev Offset: 0x52
   Pointer Size:  8
 <0><f6>: Abbrev Number: 1 (DW_TAG_compile_unit)
    <f7>   DW_AT_stmt_list   : 0x83
    <fb>   DW_AT_ranges      : 0x0
    <ff>   DW_AT_name        : ../sysdeps/x86_64/crti.S
    <118>   DW_AT_comp_dir    : /usr/src/debug////////glibc-2.21/csu
    <13d>   DW_AT_producer    : GNU AS 2.25
    <149>   DW_AT_language    : 32769   (MIPS assembler)

这是一组 Dwarf 2 信息(请参阅Version:标题以获取版本信息;相同的二进制文件包括 Dwarf 2 和 Dwarf 4 部分)。

相关内容