在Linux上需要每个C ++函数的内存使用工具

时间:2010-11-12 20:19:34

标签: c++ c linux memory-management dynamic-memory-allocation

我正在寻找一个运行时内存调试器,它能够显示Linux上每个函数或C ++代码行的内存使用量(不仅仅是泄漏)。 我试图追踪程序内存使用量的峰值。 我使用过Valgrind和Purify,我发现没有泄漏。我预计,在该峰值之后,内存使用率会恢复到我的程序的预期水平。

感谢。

4 个答案:

答案 0 :(得分:3)

您可以使用valgrind工具包中的massif工具。

答案 1 :(得分:1)

Memory usage analysis中的“应用程序内存分析”部分提供了一个很好的概述并指出:

答案 2 :(得分:0)

我过去曾经使用过valgrind几次,但是如果你想抓住尖峰发生的地方,我会使用下面的黑客:

1)测量尖峰的大小(假设SPIKE = 1Gb)

2)(假设你的总RAM是4Gb)运行一个不同的自定义过程,它将精确分配3Gb + 1字节,并等到你按下一个键。暂时保留

3)运行应用程序代码,查看内存分配失败的位置。由于您的可用内存现在略低于您的SPIKE,当峰值发生时,它将无法分配所请求的内存

希望有所帮助

答案 3 :(得分:0)

获取函数代码大小用法:

nm --demangle --print-size --size-sort --reverse-sort <your exec built with -g>