有没有办法在 valgrind 输出中抑制进程 ID?

Is there a way to suppress process id in valgrind output?

我有两个 valgrind 报告,我想比较它们。在每一行中都有 pid,diff 显然会发现一切都不一样。如果我可以抑制输出中的 pid,我将更容易区分。有没有办法在 valgrind 输出中抑制进程 ID?

背景:

我的程序是一个模拟器,它意味着 运行 永远(直到被手动杀死)。在它完成初始化后,我可以向它提供网络数据包并对其进行处理。使用 valgrind,我缩小并修复了数据包处理期间发生的内存泄漏。然而,我仍然有一个非常小的泄漏。我试图弄清楚是否有办法在运行时重置 valgrind 中的内存泄漏计数。如果我可以 => 在发送一个数据包后,我会将内存错误归零,并且只会报告在后续数据包传递时发生的那些错误。但是我不知道该怎么做。

所以,我想到了比较两个 valgrind 报告:一个有 1 个数据包,另一个有 l10 个数据包。这应该可以帮助我缩小罪魁祸首。

如果有更好的替代方案来解决这个问题而不使用 diff,请告诉我!

我还没有看到阻止打印 pid 的选项,但我一直在寻找一种方法来为 valgrind 运行 添加时间限制,所以我可能错过了。

就是说,每一行都以“==pid==”开头,因此您可以制作一个 prog/script 来简单地删除该部分,然后 运行 区分每个 运行。 Valgrind 不在其他任何地方使用“=”,所以像这样的东西(在 C++ 中)应该可以工作:

string line;
line = fileIN.readline();
int start = line.find_last_of('='); //index of last instance of char
//you need to start one behind the last index
//and end one index before the size
line = line.substr( (start + 1), (line.size() - 1) ); 

现在我认为这是你最好的选择。

只需要用一个shell命令就可以在开头==nnnn==:

之后全部剪切

猫valgrind.out | cut -f2- -d' ' > valgrind.cut