我使用 valgrind 进行内存检查。为了配置 valgrind,我在构建系统中定义了以下变量:
find_program( MEMORYCHECK_COMMAND valgrind )
set( MEMORYCHECK_COMMAND_OPTIONS "--trace-children=yes --leak-check=full" )
另外,还有我的 valgrind 抑制文件:
set( MEMORYCHECK_SUPPRESSIONS_FILE "${PROJECT_SOURCE_DIR}/valgrind_suppress.txt" )
在编写好 CMakeLists.txt 文件并在其中正确配置 valgrind 后,您可以运行以下命令:
cmake -G ... (to configure your build)
ctest -D ExperimentalBuild (this will build your code)
ctest -R testName -D ExperimentalTest (just runs the test)
ctest -R testName -D ExperimentalMemCheck (to run the test under valgrind)
这将欺骗您的构建系统在本地运行测试自动化。它希望你运行:
ctest -R testName -D ExperimentalSubmit
接下来,提交到(默认或您的)仪表板,但您无需执行此步骤即可运行所需的内容。结果将存储在 Testing/Temporary/ 目录中。