【发布时间】:2013-02-12 09:38:02
【问题描述】:
我有一个 C 程序,它甚至包含来自外部库的许多内存分配,我想定期检查我的应用程序分配的总内存(包括库分配)。
我尝试了一些 linux 命令,例如 ps euf、pmap $pid、cat /proc/$pid/status,但没有任何实际结果。
我做了一些研究,发现了 valgrind 的合适工具。
我试图在我的应用程序运行时转储内存:
valgrind --tool=drd --trace-alloc=yes
但是我没有得到像valgrind在执行结束时显示的结果。
如何让 valgrind 在我的应用程序运行时显示内存状态(如 valgrind 在执行结束时显示的结果)?
【问题讨论】:
-
valgrinds 是一个强大的工具,他可以做很多事情。如果你在 Linux 发行版下,你可以使用 man valgrind 和 read :)。 htop 将显示您的总内存使用量,无论是虚拟的还是物理的。
-
如何让 valgrind 定期显示内存状态,而不是在执行结束时显示,因为应用程序是一个守护进程。
-
您也可以查阅您平台的文档以查看
malloc是否提供任何支持。例如,在 GCC 上,您有<malloc.h>,它为您提供了多种诊断工具。 -
有一些标志与你的程序并行运行 valgrind,我不知道每个标志,但我确信通过浏览手册页你可以找到你想要的。 -> valgrind.org/docs/manual/manual.html