gpt4 book ai didi

c++ - 查找正在运行的 valgrind 版本

转载 作者:太空宇宙 更新时间:2023-11-04 01:05:20 25 4
gpt4 key购买 nike

在 C/C++ 中,我可以包含 valgrind header 以在运行时了解我的软件是否在 valgrind 上运行:

#include <valgrind/valgrind.h>

bool RunningOnValgrind()
{
return RUNNING_ON_VALGRIND ? true : false;
}

这记录在 valgrind manual 中.

我想知道我正在运行的 valgrind 是否支持 AVX 指令。如何编写返回此信息的函数?

来自 valgrind release notes ,我知道从 3.8 版本开始支持这些。因此,一种解决方案是生成一个进程来执行 valgrind --version,然后解析输出,但必须有更好的方法。

最佳答案

如果查看 valgrind/valgrind.h,您会发现在包含 valgrind.h 之后可以通过这种方式检查 valgrind 版本号:

  #if defined(__VALGRIND_MAJOR__) && defined(__VALGRIND_MINOR__)   \
&& (__VALGRIND_MAJOR__ > 3 \
|| (__VALGRIND_MAJOR__ == 3 && __VALGRIND_MINOR__ >= 8))
/* code to say avx is supported */
#endif

然而,这有很多限制:它假定您使用的是全局安装的版本,并且您的路径没有指向一些不在默认位置(我已经完成的)的个人用户构建的 valgrind ) 并且它还假设您正在运行 valgrind 的机器上进行构建,而不是围绕预构建的可执行文件进行交付(根据我的经验,这是经常发生的事情),因此您不能依赖它。

考虑到这一点,使用 valgrind --version 生成子进程并检查输出可能确实是最好的选择。

关于c++ - 查找正在运行的 valgrind 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24613127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com