在gdb中检查CC ++堆内存统计信息

在gdb中检查CC ++堆内存统计信息,第1张

概述在gdb中检查C / C ++堆内存统计信息

我试图调查在linux amd64 gdb内的C / C ++堆的状态,是否有一个很好的方法来做到这一点?

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

我不是很容易编写一个函数来编译到我附加的过程的二进制文件中,所以我可以简单地实现我自己的函数,通过以这种方式在我自己的代码中调用mallinfo()来提取值。 是否有一个聪明的把戏,可以让我在飞行中做到这一点?

另一个select可能是find堆并遍历malloc头文件/空闲列表; 我很感激任何指向我可以开始寻找这些位置和布局的地方。

与使用的%相比,堆大小意外地大

如何以编程方式获取linux上堆的地址

为什么windows允许创build私有堆?

Ubuntu 16.04 – malloc实现。 指向下一个块的指针在哪里?

从地址查找堆或堆块或段

我一直在试图谷歌和解决这个问题约2个小时,我已经学到了一些迷人的东西,但仍然没有find我所需要的。

valgrind显示的额外程序内存消耗

在windows中禁用LFH?

windbg的“!heap -h”输出中的“Internal”是什么意思?

查询,如果堆是可执行的

JAVA_OPTS增加堆大小

@fd – RedHat错误有你的答案。

mallinfo函数已被弃用,不会被更新。 一个真正的查询统计API是TDB。 今天,你有malloc_stats和malloc_info 。 我找不到任何一个文件,但这是他们给你的。

这足够接近你所需要的吗?

(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>

如果您可以更改代码:

#include <malloc.h> #include <stdio.h> voID dumpMallinfo(voID) { struct mallinfo m = mallinfo(); printf("uordblks = %dnfordblks = %dn",m.uordblks,m.fordblks); }

在GDB中,你可以call dumpMallinfo() 。

总结

以上是内存溢出为你收集整理的在gdb中检查C / C ++堆内存统计信息全部内容,希望文章能够帮你解决在gdb中检查C / C ++堆内存统计信息所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1211425.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存