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++ - 使用 SetNamedSecurityInfo 设置 GRANT_ACCESS

c++ - 大对象线程间通信的最佳实践

c - 释放图表时释放太多

java - 如何根据从其他线程中长时间运行的任务收到的​​通知更新 JTable?

windows - 如何获得包含我的应用程序创建的所有线程的列表

c - realloc() C语言改变int数组中的值

valgrind - 内存/地址 sanitizer 与 Valgrind

c++ - 访问数据集具有连续名称的 HDF5 文件的最佳方法

c++ - 为什么在使用其他库时会出现 LNK4098 冲突 - 尝试在 MSVS2010 Express 中编译 C++ 时?

c++ - 如何将 Windows 服务连接到控制台 session