首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查gdb中的C/C++堆内存统计信息

检查gdb中的C/C++堆内存统计信息
EN

Stack Overflow用户
提问于 2010-04-02 10:38:37
回答 2查看 48.7K关注 0票数 31

我正在尝试从Linux amd64上的gdb中调查C/C++堆的状态,有没有好的方法可以做到这一点?

我尝试过的一种方法是“调用mallinfo()”,但不幸的是,我不能提取我想要的值,因为gdb不能正确处理返回值。

我不能轻松地编写一个函数来编译成我所附加的进程的二进制文件,所以我可以通过在我自己的代码中调用mallinfo()来简单地实现我自己的函数来提取值。有没有什么聪明的技巧可以让我即时完成这件事呢?

另一种选择是定位堆并遍历malloc标头/空闲列表;如果有任何指示可以开始查找这些标头/空闲列表的位置和布局,我将非常感谢。

我已经在谷歌上搜索了大约2个小时,我学到了一些有趣的东西,但仍然没有找到我需要的东西。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-07 09:24:56

@fd - RedHat bug有你的答案。

mallinfo函数已被弃用,将不会更新。真正的查询统计API是TDB。今天,你有了malloc_statsmalloc_info。我找不到任何关于它们的文档,但这是它们提供给您的信息。

这是否足够接近您需要的内容?

代码语言:javascript
运行
复制
(gdb) call malloc_stats()
Arena 0:
system bytes     =     135168
in use bytes     =         96
Total (incl. mmap):
system bytes     =     135168
in use bytes     =         96
max mmap regions =          0
max mmap bytes   =          0

(gdb) call malloc_info(0, stdout)
<malloc version="1">
<heap nr="0">
<sizes>
<unsorted from="1228788" to="1229476" total="3917678" count="3221220448"/>
</sizes>
<total type="fast" count="0" size="0"/>
<total type="rest" count="3221220448" size="3917678"/>
<system type="current" size="135168"/>
<system type="max" size="135168"/>
<aspace type="total" size="135168"/>
<aspace type="mprotect" size="135168"/>
</heap>
<total type="fast" count="0" size="0"/>
<total type="rest" count="3221220448" size="3917678"/>
<system type="current" size="135168
/>
<system type="max" size="135168
/>
<aspace type="total" size="135168"/>
<aspace type="mprotect" size="135168"/>
</malloc>
票数 34
EN

Stack Overflow用户

发布于 2010-04-03 08:20:17

如果您可以更改代码:

代码语言:javascript
运行
复制
#include <malloc.h>
#include <stdio.h>

void dumpMallinfo(void) {
  struct mallinfo m = mallinfo();
  printf("uordblks = %d\nfordblks = %d\n", m.uordblks, m.fordblks);
}

在GDB中,您可以使用call dumpMallinfo()

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2564752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档