c++ - 如何防止 Valgrind 为每个新线程启动嵌入式 gdbservers?

标签 c++ multithreading valgrind memcheck

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

其他线程不会产生错误,我不关心它们发生了什么。

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

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

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

--child-silent-after-fork=yes

还有我已经排除的事情:

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

最佳答案

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

带着旗帜奔跑:

--vgdb=no

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

关于c++ - 如何防止 Valgrind 为每个新线程启动嵌入式 gdbservers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12960485/

相关文章:

有条件的跳跃或移动取决于未初始化的值

c++ - 关于C++中数组的一些问题

c++ - 在 double 和字节数组之间转换,以便通过 ZigBee API 进行传输?

c++ - 编译python3.2 C模块,链接器要求 'python26.lib'

c++ - 无论线程库如何,我们都可以使用 Mutex 类吗?

c - 我不明白为什么我会收到这个 valgrind 错误

c++ - linux上的轻量级内存泄漏调试

c++ - "ListNode dummy{-1, head};"是什么意思?

c# - 如何使用 Name 属性枚举 .NET 中的线程?

创建将当前时间打印到命令行的 pthread