我在一个程序上运行valgrind memcheck,该程序产生了数千个其他线程。
其他线程不会产生错误,我不在乎它们会发生什么。
然而,每次新线程产生时,Valgrind都坚持在/ tmp中打开命名管道。这不仅浪费,它实际上打破了valgrind。有时valgrind不会自行清理,然后具有相同pid的未来子代(稍后激活)无法生成,因为valgrind无法创建具有正确名称的管道(它已经存在)。
如何防止Valgrind制作所有这些管道??!
编辑: 我已经尝试过的旗帜:
- 儿童无声后叉= YES
以及我已经排除的事情:
- track-children = no(默认值为no)。
答案 0 :(得分:3)
很抱歉回答我自己的问题。仅用于文档目的。
使用旗帜运行:
--vgdb=no
这在man手册页中没有正确记录,因为它没有告诉你它会在没有标志的情况下在任何地方喷出管道,但这就是为什么它会这样做。
答案 1 :(得分:1)
如果可以,请调整初始程序,以便可以使用命令行参数关闭线程生成。在结果上运行valgrind,并删除线程生成。