我正在寻找一个运行时内存调试器,能够在 Linux 上显示每个函数或 C++ 代码行的内存使用情况(不仅仅是泄漏)。我正在尝试追踪我的程序内存使用量的峰值。我使用了 Valgrind 和 Purify,发现没有泄漏。我预计,在那个峰值之后,内存使用量会回到我的程序的预期水平。
谢谢。
我正在寻找一个运行时内存调试器,能够在 Linux 上显示每个函数或 C++ 代码行的内存使用情况(不仅仅是泄漏)。我正在尝试追踪我的程序内存使用量的峰值。我使用了 Valgrind 和 Purify,发现没有泄漏。我预计,在那个峰值之后,内存使用量会回到我的程序的预期水平。
谢谢。
您可以使用 valgrind 工具包中的 massif 工具。
我过去使用过 valgrind 几次,但如果你想知道尖峰发生的地方,我会使用以下技巧:
1)测量尖峰的大小(假设 SPIKE = 1Gb)
2)(假设您的总内存为 4Gb)运行一个不同的自定义进程,该进程将准确分配 3Gb + 1 个字节,并等到您按下一个键。把它搁置
3)运行你的应用程序代码,看看你的内存分配会失败。由于您的可用内存现在比您的 SPIKE 略少,当峰值发生时,它将无法分配请求的内存
希望能帮助到你
要获取功能代码大小使用情况:
nm --demangle --print-size --size-sort --reverse-sort <your exec built with -g>