使用 pmap 监控 Valgrind

Monitoring Valgrind with pmap

我正在尝试使用 Valgrind 和 pmap 监视进程的内存使用情况。

由于进程本身不是 运行 而是通过 Valgrind,可以肯定地说使用 pmap 监视 Valgrind 与监视进程相同,还是 Valgrind 使用额外的内存?

谢谢。

根据工具的不同,valgrind 可以使用比本机多得多的内存 运行。 即使是“none”工具也会占用更多内存。

各种 valgrind 工具可以详细monitoring/reporting您的应用程序使用的内存。

你可能会,例如将 memcheck 工具与 --xtree-memory=full 一起使用,并使用 kcachegrind 可视化生成的文件。 参见例如https://www.valgrind.org/docs/manual/manual-core.html#manual-core.xtree了解更多详情。

massif 工具可用于报告内存使用峰值。

只是为了添加更多的细节。在 Valgrind 下 运行ning 时,您将有

  • 两个堆栈,一个用于 Valgrind 主机,一个用于来宾应用程序
  • 两个 'text segments' 映射到内存中(这是主机二进制文件和客户端 + 客户端共享库的机器码)
  • 数据段等其他内容

此外,正如@phd 已经提到的,每个工具都将使用内存来进行任何跟踪。因此,例如 memcheck 将分配 'shadow' 内存,以便它可以判断客户端何时使用未初始化的内存。

最后,如果你 运行 带有调试输出 (-d) 的 Valgrind,它将打印自己的“地址 space 管理器”映射,这类似于 pmap -x