4

打电话

ctest -j4 -DCTEST_MEMORYCHECK_COMMAND="/usr/bin/valgrind" -DMemoryCheckCommand="/usr/bin/valgrind" --output-on-failure -T MemCheck 

Memory checker (MemoryCheckCommand) not set, or cannot find the specified program.

为什么它不会自动找到 valgrind,也不会在手动指定时找到?

4

2 回答 2

7

CTest Wiki 页面DartConfiguration.tcl所述,CTest 从构建目录中的文件读取内存检查命令的位置(以及其他设置) 。创建 dart 配置文件的一种方法是在 CMakeLists.txt 中简单地包含 CTest CMake 模块:

include (CTest)

CTest 模块将在其中找到您的 valgrind 安装,/usr/bin并将MemoryCheckCommand指向它的变量放入DartConfiguration.tcl文件中。

于 2014-10-22T18:18:13.920 回答
0

通过“apt-get install valgrind”安装valgrind后,错误消失了。错误是“未设置内存检查器 (MemoryCheckCommand),或找不到指定的程序。运行 CTest 时出错”

新结果

处理内存检查输出:1/1 MemCheck:cpp_test 缺陷:1 MemCheck 日志文件可以在这里找到:(<#> 对应测试号) 内存检查结果:Memory Leak - 1

详细日志记录在 /build/Testing/Temporary# cat MemoryChecker.1.log

显示细节泄露信息

堆摘要:退出时使用:1 个块中的 8,000 字节总堆使用量:2 分配,1 释放,分配 80,704 字节

你应该从cmake ..cmake --build 重新开始。ctest -T memcheck

于 2021-08-14T03:05:01.597 回答