c/c++语言开发共享从ELF目标文件转储C结构大小

如何从带有调试符号的ELF目标文件中提取所有C结构的大小?

可以使用“print sizeof(some_struct)”从GDB获取单个结构大小,但我需要的是获取所有结构的列表。

我看过“nm”和“objdump”,但我看不到做我正在寻找的选项。 有没有办法用标准的Unix工具做到这一点,或者我是否需要从ELF文件中提取调试符号部分并自行处理? 我希望不是后者。

提前感谢任何建议。 射线

    pahole显示了这个和结构的其他细节。 它的git repo位于https://www.kernel.org/git/?p=linux/kernel/git/acme/pahole.git;a=summary 。

    您将不得不深入了解.debug_info部分,如果您使用–dwarf参数运行它,objdump将为您转储它。

    您将在那里看到您的结构* DW_TAG_structure_type *和* DW_AT_byte_size *属性等同于sizeof。 标准的Unix工具应该足以将这些数据格式化为更易读的列表。

    安装包矮人,然后你有命令“pahole”。

    对elf对象文件使用“pahole”命令,可以获取所有结构信息,或者可以使用“-C”参数来指定结构名称,例如:

    $ pahole vmlinux -C task_struct

    除非别人知道某事,否则我认为你必须处理nm的输出。

    然而,nm只给你每个结构的开始,并且对它的结束一无所知,所以即使这可能不起作用,除非每个结构紧跟一些其他符号。 注意这个问题!

    需要了解更多c/c++开发分享从ELF目标文件转储C结构大小,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享从ELF目标文件转储C结构大小相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/980566.html

      (0)
      上一篇 2021年12月14日
      下一篇 2021年12月14日

      精彩推荐