【发布时间】:2021-02-04 05:57:12
【问题描述】:
我正在开发一个非常大的 c 程序,并试图找出其中的内存泄漏。我从 valgrind 得到的输出非常庞大,大约 80000 行(包含所有类型的错误),很难逐行检查。 我想要的是只有在肯定丢失或可能丢失泄漏并且没有其他错误时才能获得 valgrind 的输出,以便我可以通过关注这两个错误来纠正问题。请问有可能吗?
【问题讨论】:
-
所有来自 valgrind 的错误都是错误。从头开始,修复它然后继续。
-
当然,这就是我现在正在做的事情。但是,如果有一种方法可以让我控制输出的显示方式。
-
显然手册页也太大而无法阅读。但您可能想看看
--show-leak-kinds。您的实际问题是您似乎没有构建和测试环境。也许看看 ValgrindCI 以获得一些灵感。 -
如果只想查看泄漏错误,可以使用 --undef-value-errors=no 禁用某些错误。您还可以做的是拥有一个抑制文件来抑制您不想处理的错误。抑制条目应该与条目中给出的错误类型的任何堆栈跟踪相匹配。但正如第一条评论中提到的,默认情况下所有错误都应该被分析和修复。
-
就像我在许多文件中有代码一样,在 src 目录中我还有 3 个其他目录,即 common、vcom、包含许多 c 文件的代码。如果我只想要常见文件中的错误。这可能吗?(我想我可以使用抑制,但我以前从未使用过它们并且无法得到一个想法,所以请告诉如果可能)