我正在使用运行 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 个字母字母它会得到更多信息,你可以看到下面的照片,有谁知道为什么我得到这个。
谢谢你。
如果我有 3 个字母的变量,它只会获得变量的名称,但如果我有超过 3 个字母,它将获得更多信息,...,有谁知道我为什么得到这个。
OSDev Wiki 说:
如果大多数属性具有固定大小,则少数属性需要具有固定大小 一些特殊处理:
- DW_FORM_string 属性是 小零终止字符串(因此长度可变)
- DW_FORM_strp属性表示内部的偏移量 所需字符串的 .debug_str 部分
当然,如果存在的话,您只能获取更多信息(.debug_str部分的偏移量)。