当前位置:  开发笔记 > 编程语言 > 正文

如何告诉valgrind memcheck forked进程?

如何解决《如何告诉valgrindmemcheckforked进程?》经验,为你挑选了1个好方法。

我有一个流程x,我想检查泄漏valgrind.问题在于x运行y,y反过来运行z.我不能x独立运行因为yz设置环境x,例如环境变量,命令行开关,所需的文件x等.

    有什么方法可以告诉我valgrind继续运行z但是要跟踪它找到的任何叉子并报告它们吗?

    我有什么方法可以告诉你valgrind跟踪任何问题,但只报告名为的进程x吗?

    有什么方法可以告诉我valgrind附加已经运行的进程,我可以用gdb做的方式吗?

我不知道这是否重要,但我在SuSE64 linux和valgrind-2.4.0下运行.

谢谢!



1> JesperE..:

    给定--trace-children=yes选项时,Valgrind遵循分叉进程.

    您应该能够通过使用合适的过滤器来实现这一目标.

    没有.Valgrind使用LD_PRELOAD挂钩到模块加载代码,因此无法附加到正在运行的进程.


Valgrind*使用*来使用LD_PRELOAD,但在当前版本中不这样做.你对3.的回答仍然是正确的,但原因与LD_PRELOAD无关.
没有`--depth`选项; `--trace-children = yes`将跟踪叉子和所有其他后代的叉子.
根据手册页,此选项不会导致valgrind跟踪到forks,它会导致它跟踪到execs.Valgrind总是跟随分叉,但除非你添加这个选项,否则不会跟随exec(是我对手册页的理解).
推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有