【问题标题】:Why don't C++ class functions don't have low_pc / high_pc DWARF info为什么 C++ 类函数没有 low_pc / high_pc DWARF 信息
【发布时间】:2020-01-08 16:08:45
【问题描述】:

我正在尝试查找 c++ 类函数的偏移范围,但是当我查看 DWARF 信息时,我没有看到 low_pc 或 high_pc 属性。对于具有其余功能信息的 DIE,也没有 DW_AT_specificationDW_AT_abstract_origin 条目。例如我只能看到:

0x03989358:     DW_TAG_subprogram
                  DW_AT_decl_line       (539)
                  DW_AT_decl_file       ("file.h")
                  DW_AT_declaration     (0x01)
                  DW_AT_MIPS_linkage_name       ("Mangled function Class:Function")
                  DW_AT_accessibility   (DW_ACCESS_public)
                  DW_AT_name    ("Function")

并且没有其他 DIE 指向 0x03989358

如何获取这些函数的偏移范围/为什么不包括在内?

附:我从 dwarfdump 得到了这个信息,这是 DWARFv3

【问题讨论】:

    标签: c++ debugging dwarf


    【解决方案1】:

    根据我的经验,同一个 CU 中的一个函数可能有多个 DW_TAG_subprogram 元素。第一个包含函数声明,第二个包含 low_pc/high_pc,DW_AT_specification 指向第一个。

    在 CU 中搜索带有 low_pc/high_pc 的 DW_TAG_subprogram 元素,看看它会把你带到哪里。

    使用DWARF Explorer 观察整个 DIE 树,看看是否有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-14
      • 2014-05-15
      • 2017-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多