有没有一种方法可以在不实际运行代码的情况下获取特定类的所有成员变量的大小? (即没有sizeof(),offset_of()操作)

objdump或otool是否有一些选项可从中间目标文件(甚至最终的ELF文件)中提取此信息?

编辑:

“我想做什么?”:

我注意到我们的软件的两个版本之间,一个特定的类实例的大小迅速增加。此类非常大,具有许多成员变量。所讨论的类在两个构建之间没有更改,但是其成员变量做了更改。我正试图找到罪魁祸首(这将是某种深度优先的搜索,因为我必须继续深入研究每个成员变量,直到找到它为止),并且需要一种可扩展的方法来做这无需诉诸printfs()和diffing。

最佳答案

您可以基于Clang创建一个工具来编译代码并在编译时转储类的记录布局。这样您就可以比较它们了。

(也许其他编译器也有类似的方法。)

关于c++ - 获取类成员变量的大小(无需运行代码),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25942780/

10-11 18:14