valgrind 泄漏摘要中的上下文数量指的是什么?

What do the number of contexts in valgrind leak summary refer to?

我正在使用 valgrind 分析一个 C++ 应用程序。在泄漏摘要中,错误的数量与上下文的数量不同。上下文是什么意思?

`ERROR SUMMARY: 44911 errors from 1070 contexts (suppressed: 0 from 0)`

在这种情况下,为什么错误数与上下文数不同?

上下文是指导致错误的调用堆栈。 说的简单一点:就是代码中很多地方出错了。

这是上下文错误的定义:

the (...) context for the error is the chain of function calls that led (or may led) to an error.

查看错误摘要中的这个示例:

这是两个错误上下文:

所以,为了回答你的问题,上下文的数量是指检测到问题的函数的数量。

在上面的示例中,您应该自下而上阅读每个上下文错误,您可以确定这两个上下文错误都发生在strconk 文件中, 在 100 和 102 行。

另请注意,对于每个上下文错误,在“地址”部分中,它都会显示该错误在内存中发生位置的描述,“大小为 6 的块之后的 0 个字节”。这是 准确识别 是什么给您带来麻烦的好线索。

关于Valdrind的详细工作原理请参考:https://valgrind.org/docs/manual/manual-core.html

希望对您有所帮助!