找到结构中填充的大小和位置的方法?

Des*_* ed 9 c perl struct padding

我正在尝试编写一个工具,将一些包含结构的C代码作为输入.它将编译代码,然后查找并输出编译器决定添加到其中的结构的任何填充的大小和偏移量.对于使用offsetof,sizeof和一些附加功能的已知结构,这是非常简单的,但我无法想出一个简单的方法来自动为任何输入结构做.

如果我知道如何遍历结构中的所有元素,我想我可以毫无问题地编写工具,但据我所知,没有办法做到这一点.我希望一些StackOverflow人会知道一种方式.但是,我并没有停留在我的方法中,而且我当然愿意接受在结构中寻找填充的任何替代方法.

nin*_*alj 6

这不是什么pahole吗?

  • 它确实“完全”是“pahole”所做的,尽管它运行在使用调试信息而不是源代码编译的二进制文件上。 (2认同)