我正在尝试从 Linux amd64 上的 gdb 中调查 C/C++ 堆的状态,有没有一种很好的方法可以做到这一点?
我尝试过的一种方法是“调用 mallinfo()”,但不幸的是我无法提取我想要的值,因为 gdb 没有正确处理返回值。
我不容易为我所附加的进程编写一个要编译成二进制文件的函数,所以我可以简单地实现我自己的函数来通过在我自己的代码中调用 mallinfo() 来提取值。是否有一个聪明的技巧可以让我即时执行此操作?
另一种选择可能是定位堆并遍历 malloc 标头/空闲列表;我会很感激任何关于我可以从哪里开始找到这些位置和布局的指针。
我一直在尝试谷歌并围绕这个问题阅读了大约 2 个小时,我学到了一些有趣的东西,但仍然没有找到我需要的东西。