我们正在尝试追踪 Valgrind 报告的 C++ 项目中的条件跳转或移动取决于未初始化的值。调查结果中提供的地址并不是很有帮助,因为它指向 GCC 扩展汇编 block 的末尾,而不是导致问题的实际变量。
根据 Valgrind 的 Eliminating undefined values with Valgrind, the easy way , 我们可以使用 VALGRIND_CHECK_MEM_IS_DEFINED
或 VALGRIND_CHECK_VALUE_IS_DEFINED
包括<memcheck.h>
之后.此外,这些宏或函数显然记录在头文件中(肯定没有它们的手册页)。
但是,当我包含 <memcheck.h>
时或 <valgrind/memcheck.h>
,结果是:
fatal error: memcheck.h: No such file or directory
基于 Stack Overflow 的 How do I find which rpm package supplies a file I'm looking for? ,我执行了一个 RPM file search , 但它返回 0 次 memcheck.h
.
问题
博客文章有点过时了。这些信息仍然适用吗?
如果信息准确,那么我在哪里可以找到
memcheck.h
?
$ uname -a
Linux localhost.localdomain 4.1.4-200.fc22.x86_64 #1 SMP Tue Aug 4 03:22:33 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
$ g++ --version
g++ (GCC) 5.1.1 20150618 (Red Hat 5.1.1-4)
...
$ valgrind --version
valgrind-3.10.1
最佳答案
您必须安装包含 memcheck.h
的 RPM valgrind-devel
。
*-devel
包通常位于“可选”存储库中(例如 RHEL 6 上的 rhel-x86_64-server-optional-6
)。此外,您可以在 Google 上找到 RPM,下载并自行安装。无论采用哪种方法,memcheck.h
通常在安装后放置在 /usr/include/valgrind
中。
关于c++ - Valgrind: fatal error :memcheck.h:没有那个文件或目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32048354/