如何告诉valgrind memcheck forked进程?

时间:2008-11-19 11:04:52

标签: c++ c linux fork valgrind

我有一个流程x我要检查valgrind是否有泄漏。问题是xy运行,而y则由z运行。我无法独立运行x,因为yzx设置了环境,例如环境变量,命令行开关,x所需的文件等。

  1. 我有什么方法可以告诉valgrindz上运行,但要跟踪它找到的任何分叉并报告它们?
  2. 我有什么方法可以告诉valgrind关注任何分支,但只报告名为x的过程?
  3. 我有什么方法可以告诉valgrind附加到已经运行的进程,就像我可以用gdb做的那样?
  4. 我不知道这是否重要,但我在SuSE64 linux和valgrind-2.4.0下运行。

    谢谢!

1 个答案:

答案 0 :(得分:37)

  1. Valgrind在给出--trace-children=yes选项时遵循分叉进程。
  2. 您应该可以通过使用合适的过滤器来实现这一目标。
  3. 否。 Valgrind使用LD_PRELOAD挂钩到模块加载代码,因此无法附加到正在运行的进程。