gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 00:23:50 25 4
gpt4 key购买 nike

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

该程序分为大约 30 个不同的项目,其中大部分是静态库或动态 dll。其中一些是用 C 编写的,一些是用 C++ 编写的,还有一些是两者的混合体。所有项目的代码总共约为 600,000 行。

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

此外,这也不会收集散落在项目周围的所有静态全局数据。

感谢您的帮助。

最佳答案

你可以给valgrind一试。以下是关于其中一种工具的引述:

地 block

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

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

关于c++ - 一个巨大的 C/C++ 项目的内存快照 (Windows/Unix),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1265389/

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