当我使用" - coverage -fprofile-arcs -ftest-coverage"构建我的项目进行覆盖测试时,然后将构建和源移动到其他用户目录以执行测试。我会遇到很多问题,例如" xxx / cc / cc / getopt_log.c:无法打开源文件"
详情如下: 处理cs / CMakeFiles / cfa / __ / src / base / fault_injection.c.gcda /home/cov/build/xfcq/src/base/fault_injection.c:cannot open source file
" /home/cov/build/xfcq/src/base/fault_injection.c"的路径;是构建环境的路径,如何将其更改为相对路径或我指定的路径。
我尝试使用GCOV_PREFIX和GCOV_PREFIX_STRIP,这些对我来说效果不佳。
我也尝试为lcov添加-b选项,它对我来说也不太好用。 例如,lcov --gcov-tool = / bin / gcov -d。 -b xx / src -t" xfcq" -o test_cov.info
你有意解决吗?答案 0 :(得分:1)
使用gcov覆盖过程,您应该在构建项目后不要移动文件,而是应该修改自动构建脚本以将所有内容构建到所需位置。
使用指定选项编译项目时,会为每个源文件生成*.gcno
个文件,这些文件必须是相关源文件详细信息的流程图。
因此,只要执行任何语句行以生成包含所有执行信息的*.gcda
文件,目标文件就会以这样的方式进行检测:它们应该触发函数(由编译器添加以生成覆盖信息)。
注意:我可以看到您指定了三个有问题的选项(--coverage -fprofile-arcs -ftest-coverage),这又是错误的,因为--coverage
可以替代另外两个。
如果你只指定--coverage
那么它也会用于编译和链接。(记得在两个地方积极使用它)