gdb中的递归sizeof
Recursive sizeof in gdb?
是否有方法使用gdb或其他工具来查找某个结构/类的总大小,包括所有可访问指针成员所指向的内存?有一个基本的sizeof,但这不考虑作为指针的成员的大小,只考虑指针大小本身。因此,也许更清楚地说,我想要的是一个sizeof操作,它将为每个指针成员添加指针成员的大小和所述指针指向的内存的大小(依此类推以进行进一步的嵌套)。
我同意近似,绝对精度是不必要的。
我更喜欢支持c++的解决方案,但是使用c的解决方案总比什么都没有好。不过,我想,假设存在解决方案,大多数解决方案可能会同时使用这两种解决方案。
希望这个描述有意义,我感谢任何关于如何完成这项任务的建议,谢谢。
gdb中没有内置的方法可以做到这一点。我也不知道还有什么预先准备好的工具可以做到这一点。
然而,我认为使用Python脚本功能为gdb编写代码会非常容易。至少,如果您使用的是"常规"数据结构,那么这是正确的。在某些情况下,使用gdb可用的信息是不可能做到这一点的。例如,如果您有一个包含"void*"的结构,那么仅使用debuginfo就无法知道它指向什么。此外,有时类可以用一种模糊的风格编写,从而阻止自动发现——libstdc++中有几个类是这样的。
如果你想更进一步,你可以调整gdb堆项目,这可能会让你挖掘关于"void*"案例和其他案例的信息。
相关文章:
- 通过递归进行因子分解
- 递归函数计算序列中的平方和(并输出过程)
- 使用递归的数组的最小值.这是怎么回事
- 递归列出所有目录中的C++与Python与Ruby的性能
- 递归计数给定目录的文件和所有目录
- 如何在BST的这个简单递归实现中消除警告
- C++:正在检查LinkedList中的回文-递归方法-错误
- 递归模板化函数不能分配给具有常量限定类型"const tt &"的变量"state"
- 递归无序映射
- TSP递归解的迭代形式
- 如何在Elixir中调用递归函数并行
- 返回递归调用和仅递归调用的区别
- 数组元素打印的递归方法
- 使用递归时获取变量的奇怪值
- 如何在C++中递归地按相反顺序打印集合
- 到连接组件算法的问题(递归)
- 如何使用递归打印修改后的星号三角形图案
- 在可变参数模板中使用 sizeof 运算符跳过递归结束的函数
- 是 sizeof() 递归的
- gdb中的递归sizeof