【问题标题】:How to make valgrind displaying the memory status for daemon application?如何使 valgrind 显示守护程序应用程序的内存状态?
【发布时间】:2013-02-12 09:38:02
【问题描述】:

我有一个 C 程序,它甚至包含来自外部库的许多内存分配,我想定期检查我的应用程序分配的总内存(包括库分配)。

我尝试了一些 linux 命令,例如 ps eufpmap $pidcat /proc/$pid/status,但没有任何实际结果。

我做了一些研究,发现了 valgrind 的合适工具。

我试图在我的应用程序运行时转储内存:

valgrind --tool=drd --trace-alloc=yes

但是我没有得到像valgrind在执行结束时显示的结果。

如何让 valgrind 在我的应用程序运行时显示内存状态(如 valgrind 在执行结束时显示的结果)?

【问题讨论】:

  • valgrinds 是一个强大的工具,他可以做很多事情。如果你在 Linux 发行版下,你可以使用 man valgrindread :)。 htop 将显示您的总内存使用量,无论是虚拟的还是物理的。
  • 如何让 valgrind 定期显示内存状态,而不是在执行结束时显示,因为应用程序是一个守护进程。
  • 您也可以查阅您平台的文档以查看malloc 是否提供任何支持。例如,在 GCC 上,您有 <malloc.h>,它为您提供了多种诊断工具。
  • 有一些标志与你的程序并行运行 valgrind,我不知道每个标志,但我确信通过浏览手册页你可以找到你想要的。 -> valgrind.org/docs/manual/manual.html

标签: c valgrind


【解决方案1】:

根据3.8.0 valgrind manual,对于核心或memcheck 没有这样的选项,在信号部分也没有提及周期性或触发行为。 valgrind 不能开箱即用。

虽然您可能会编写一个 valgrind 工具来完成这项工作,但您可能会重新考虑该方法并阐明您想要什么样的内存使用情况,以及系统统计数据是否足以完成您的任务。

【讨论】:

  • 我在手册页中看到了选项valgrind --trace-alloc=yes,它很有帮助,但是使用这个选项我在执行时出现错误valgrind: Bad option: --trace-alloc=yes
  • @alk:不,这只是一个 DRD 工具特定选项,他正在运行默认工具 (memcheck)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-07-19
  • 1970-01-01
  • 2023-03-03
  • 2015-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多