gdb中的递归sizeof?

时间:2014-10-21 19:46:19

标签: c++ gdb

是否有办法使用gdb或其他工具来查找某些结构/类的总大小,包括所有可访问指针成员指向的内存?有一个基本的sizeof,但是这不考虑指针成员的大小,只考虑指针大小本身。所以,或许更清楚的是,我想要的是一个sizeof操作,它将添加指针成员的大小和每个指针成员的所述指针所指向的内存的大小(以此类推,以便进一步嵌套)。

我可以使用近似值,绝对精度是不必要的。

我更喜欢支持c ++的解决方案,但是使用c的解决方案总比没有好。虽然,我想大多数解决方案都可能适用于两者,假设存在解决方案。

希望这个描述有意义,我感谢任何关于如何完成这项任务的建议,谢谢。

1 个答案:

答案 0 :(得分:1)

在gdb中没有内置方法可以做到这一点。我也不知道另一种预制的工具。

但是,我认为使用Python脚本编写能力来编写gdb非常容易。至少,如果您使用“常规”数据结构,情况就是如此。在某些情况下,使用gdb随时可用的信息无法做到这一点。例如,如果你有一个包含“void *”的结构,那么就无法使用debuginfo知道它指向的内容。有时类也可以用一种模糊的样式编写,以防止自动发现 - 在libstdc ++中有几个类就像这样。

如果你想更进一步,你可以调整gdb-heap项目,这可能会让你挖掘有关“void *”案例和其他案件的信息。