6

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

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

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

我怎样才能阻止 Valgrind 制造所有这些管道!?!

编辑:我已经尝试过的标志:

--child-silent-after-fork=是

以及我已经排除的事情:

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

4

2 回答 2

3

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

带着旗帜奔跑:

--vgdb=no

这在手册页中没有正确记录,因为它没有告诉您它会在没有标志的情况下到处喷出管道,但这就是它这样做的原因。

于 2012-10-19T11:56:49.873 回答
1

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

于 2012-10-18T20:39:01.090 回答