C++ 如何让valgrind检查分叉流程?
我有一个流程C++ 如何让valgrind检查分叉流程?,c++,c,linux,fork,valgrind,C++,C,Linux,Fork,Valgrind,我有一个流程x,我想用valgrind检查是否有泄漏。问题是x由y运行,y依次由z运行。我无法独立运行x,因为y和z为x设置环境,例如环境变量、命令行开关、x所需的文件等 我有没有办法告诉valgrind在z上运行,但跟踪它找到的任何分叉并报告它们 我有没有办法告诉valgrind遵循任何分叉,但只报告名为x的过程 是否有任何方法可以告诉valgrind附加到已经运行的进程,就像我对gdb所做的那样 我不知道这是否重要,但我是在SuSE64 linux和valgrind-2.4.0下运行的 谢谢
x
,我想用valgrind
检查是否有泄漏。问题是x
由y
运行,y
依次由z
运行。我无法独立运行x
,因为y
和z
为x
设置环境,例如环境变量、命令行开关、x
所需的文件等
valgrind
在z
上运行,但跟踪它找到的任何分叉并报告它们李>
valgrind
遵循任何分叉,但只报告名为x
的过程李>
valgrind
附加到已经运行的进程,就像我对gdb所做的那样--trace children=yes
选项时,Valgrind遵循分叉过程李>
Valgrind过去使用LD_预加载,但在当前版本中没有这样做。你对3的回答。仍然正确,但原因与LD_PRELOAD无关。使用trace childen时,是否还需要指定--depth,否则它将停止监视forks的forks?没有
--depth
选项--trace children=yes
将跟踪fork的fork和所有其他子代。根据手册页,此选项不会导致valgrind跟踪forks,而是导致valgrind跟踪exec。Valgrind始终遵循forks,但不会遵循exec,除非您添加此选项(这是我对手册页的理解)。