如何更改引用gcda的源文件的路径?
how to change the path of source file which was referred gcda?
当我使用“--coverage -fprofile-arcs -ftest-coverage”构建用于覆盖测试的项目时,然后将构建和源移动到其他用户目录以执行测试。我会遇到很多问题,比如"xxx/cc/cc/getopt_log.c:cannot open source file"
详情如下:
处理 cs/CMakeFiles/cfa/__/src/base/fault_injection.c.gcda
/home/cov/build/xfcq/src/base/fault_injection.c: 无法打开源文件
“/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
你有解决的办法吗?
好吧,对于使用 gcov 覆盖过程,您永远不应在构建项目后移动文件,而应该修改自动构建脚本以将所有内容构建到所需位置。
当您使用指定的选项编译项目时,它会为每个源文件生成 *.gcno
个文件,这些文件必须是流程图,例如相关源文件的详细信息。
因此,目标文件以这样一种方式进行检测:只要执行任何一行语句,它们就应该触发函数(由编译器添加以生成覆盖率信息),以生成包含所有执行信息的 *.gcda
文件。
注意:我可以看到您指定了三个有问题的选项 (--coverage -fprofile-arcs -ftest-coverage) 这又是错误的,因为 --coverage
作为替换另外两个。
如果你只指定--coverage
那么它也将用于编译和链接。(记住要在这两个地方积极使用它)
当我使用“--coverage -fprofile-arcs -ftest-coverage”构建用于覆盖测试的项目时,然后将构建和源移动到其他用户目录以执行测试。我会遇到很多问题,比如"xxx/cc/cc/getopt_log.c:cannot open source file"
详情如下: 处理 cs/CMakeFiles/cfa/__/src/base/fault_injection.c.gcda /home/cov/build/xfcq/src/base/fault_injection.c: 无法打开源文件
“/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
你有解决的办法吗?
好吧,对于使用 gcov 覆盖过程,您永远不应在构建项目后移动文件,而应该修改自动构建脚本以将所有内容构建到所需位置。
当您使用指定的选项编译项目时,它会为每个源文件生成 *.gcno
个文件,这些文件必须是流程图,例如相关源文件的详细信息。
因此,目标文件以这样一种方式进行检测:只要执行任何一行语句,它们就应该触发函数(由编译器添加以生成覆盖率信息),以生成包含所有执行信息的 *.gcda
文件。
注意:我可以看到您指定了三个有问题的选项 (--coverage -fprofile-arcs -ftest-coverage) 这又是错误的,因为 --coverage
作为替换另外两个。
如果你只指定--coverage
那么它也将用于编译和链接。(记住要在这两个地方积极使用它)