gpt4 book ai didi

c++ - gdb 中的递归 sizeof?

转载 作者:行者123 更新时间:2023-11-28 06:37:54 26 4
gpt4 key购买 nike

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

我接受近似值,绝对精度是不必要的。

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

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

最佳答案

在 gdb 中没有内置的方法可以做到这一点。我也不知道还有其他预制工具可以执行此操作。

但是,我认为使用 Python 脚本功能为 gdb 编写代码会非常容易。至少,如果您使用“常规”数据结构,这是正确的。在某些情况下,使用 gdb 容易获得的信息不可能做到这一点。例如,如果您有一个包含“void *”的结构,则无法仅使用调试信息知道它指向什么。此外,有时类可能会以一种阻碍自动发现的晦涩风格编写——在 libstdc++ 中有几个这样的类。

如果您想走得更远,您可以调整 gdb-heap 项目,这可能会让您挖掘有关“void *”案例和其他案例的信息。

关于c++ - gdb 中的递归 sizeof?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26495026/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com