如何阻止Valgrind为每个新线程启动嵌入式gdb服务器?

时间:2012-10-18 17:39:04

标签: c++ multithreading valgrind memcheck

我在一个程序上运行valgrind memcheck,该程序产生了数千个其他线程。

其他线程不会产生错误,我不在乎它们会发生什么。

然而,每次新线程产生时,Valgrind都坚持在/ tmp中打开命名管道。这不仅浪费,它实际上打破了valgrind。有时valgrind不会自行清理,然后具有相同pid的未来子代(稍后激活)无法生成,因为valgrind无法创建具有正确名称的管道(它已经存在)。

如何防止Valgrind制作所有这些管道??!

编辑: 我已经尝试过的旗帜:

- 儿童无声后叉= YES

以及我已经排除的事情:

- track-children = no(默认值为no)。

2 个答案:

答案 0 :(得分:3)

很抱歉回答我自己的问题。仅用于文档目的。

使用旗帜运行:

--vgdb=no

这在man手册页中没有正确记录,因为它没有告诉你它会在没有标志的情况下在任何地方喷出管道,但这就是为什么它会这样做。

答案 1 :(得分:1)

如果可以,请调整初始程序,以便可以使用命令行参数关闭线程生成。在结果上运行valgrind,并删除线程生成。