当前位置:  开发笔记 > 编程语言 > 正文

巨大的C/C++项目的内存快照(Windows/Unix)

如何解决《巨大的C/C++项目的内存快照(Windows/Unix)》经验,为你挑选了1个好方法。

我正在尝试拍摄在Unix/Windows上运行的大型应用程序所使用的内存的快照.我的最终目标是使用一种图表来分解代码区域所使用的内存.

该程序分为大约30个不同的项目,其中大多数是静态库或动态dll.其中一些是用C语言编写的,有些是C++语言,有些则是两者的混合.总的来说,所有项目的代码大约是600,000行.

使用堆我可以尝试在所有项目中重载每个'malloc/free'和'new/delete'并以这种方式跟踪它,但对于这么大的应用程序来说这是相当令人生畏的.

此外,这也不会获取项目周围散布的所有静态全局数据.

谢谢你的帮助.



1> KIV..:

你可以试试valgrind.以下是关于其中一个工具的引用:

断层块

Massif是一个堆分析器.它通过获取程序堆的常规快照来执行详细的堆分析.它生成一个图表,显示随时间变化的堆使用情况,包括有关程序的哪些部分负责大多数内存分配的信息.该图由文本或HTML文件补充,该文件包含用于确定分配最多内存的位置的更多信息.Massif运行程序比正常情况慢约20倍.

它现在支持Linux,但如果在Linux上进行分析并将结果应用到Windows版本对您有用,这可能对您有所帮助.

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有