包含gcda文件的多个目录的lcov

时间:2012-05-15 13:01:46

标签: gcov lcov

我想使用gcov和lcov生成覆盖率报告。

到目前为止我做了什么: -

1. I compiled my code using --fprofile-arcs and -fprofile-coverage in
g++.

2. I have linked using lcov.

3. I have .gcno files with th e.o location.

4. When I execute binary, it is resulting into .gcda files.

我必须做什么: -

我必须使用这些数据文件(.gcda),并希望使用lcov创建一个干净的报告。

问题: -

有多个目录中有源文件,在每个目录中我创建一个obj / ARCH目录来保存目标文件。

因此,最终目录结构将是: -

  proto  ----> MJ1 ----> MJ2 ----> MJ3 ----> MJ4 ----> MJ5

  MJ1 ----> .cpp 

      ----> obj/linux/*.o *.gcno *.gcda 

  MJ2 ----> .cpp 

      ----> obj/linux/*.o *.gcno *.gcda 

与M3,M4,M5相同。

我正在从proto级别执行lcov并找到.gcda文件,但在查找.h和.C文件时出错。知道如何使这个过程路径独立吗?

Error:-
../MjUtil/glob.h:cannot open source file
../MjUtil/MJError.h:cannot open source file
../MjUtil/OsStatisticsFile.h:cannot open source file

提前致谢。

3 个答案:

答案 0 :(得分:1)

您是否尝试过将--base-directory .选项提供给lcov?

答案 1 :(得分:1)

您可以多次传递 --directory 标志,lcov 将依次解析每一个。

答案 2 :(得分:0)

通常在编译CPP时尝试绝对路径是个好主意。

此外,它不应该取决于您运行lcov的目录。例如:

  

lcov -c -d ../../../src -o lcov.info

src dir包含:

  

main.cpp main.gcno main.gcda

即使 main.gcno 文件包含 main.cpp 的相对路径,lcov也会处理它。

您还应确保未移动gcda / gcno文件。通过脚本或手动。 如果他们被移动,当然相对路径将是不正确的,并且lcov将无法找到来源。