dwarf 生成的文件以不同方式处理 3 个字母变量

问题描述 投票:0回答:1

我正在使用运行 OBJDUMP 的 python 脚本从 elf 文件中提取矮人信息,这是代码的一部分:

    # Run objdump to extract DWARF information from the ELF file
    ps = subprocess.Popen(path + "\\objdump --dwarf=info " + elf_file_name, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
    dwarf = ps.communicate()[0]

    # Iterate through each line of the decoded DWARF output
    for line in dwarf.decode("ascii").split('\n'):
        if line.strip().startswith("<"):
            .....
            .....

问题是当我迭代解码的 DWARF 输出的每一行时,它将有不同的方式来提取变量信息,例如,如果我有 3 个字母变量,它只会得到变量的名称,但如果我有超过 3 个字母字母它会得到更多信息,你可以看到下面的照片,有谁知道为什么我得到这个。

在此输入图片描述

在此输入图片描述

谢谢你。

dwarf
1个回答
0
投票

如果我有 3 个字母的变量,它只会获得变量的名称,但如果我有超过 3 个字母,它将获得更多信息,...,有谁知道我为什么得到这个。

OSDev Wiki 说:

如果大多数属性具有固定大小,则少数属性需要具有固定大小 一些特殊处理:

  • DW_FORM_string 属性是 小零终止字符串(因此长度可变)
  • DW_FORM_strp属性表示内部的偏移量 所需字符串的 .debug_str 部分

当然,如果存在的话,您只能获取更多信息.debug_str部分的偏移量)。

© www.soinside.com 2019 - 2024. All rights reserved.