我想使用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
提前致谢。
答案 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将无法找到来源。