Gcov/Lcov生成覆盖率遇到的一系列问题(ubuntu18.04)

1. lcov安装

sudo apt-get install lcov

此时安装的lcov版本号是1.13。

2. lcov使用

生成覆盖率关联的库在编译时需要加上以下标志位

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")

生成可执行文件后需要运行可执行文件./a.out

此时会在/CMakeFiles/*.dir/目录中生成.gcda和.gcno文件。

运行以下指令生成info文件,--directory之后的参数指定了查找.gcda文件的路径,当项目中的gcda文件不在当前路径时需要修改。

lcov --directory .  --capture --output-file a.out.info

随后根据以下指令生成可视化的文档,其中results是生成报告的路径:

genhtml -o results a.out.info

3. 遇到的问题

(1)version ‘B02*’ ,perfer ‘A75*'

版本号不一致,可以尝试在cmake文件中手动指定gcc的版本。

(2)can’t locate tiny.pm(或者其他模块)

当缺少的模块比较少的时候可以去网站查找报错中推荐查找的模块手动下载,https://metacpan.org/pod

下载后在文件夹内执行以下指令

perl Makefile.PL

make

sudo make install

也可以通过以下方式下载:

安装cpan

sudo perl -MCPAN -e install Spiffy

下载perl模块

sudo cpan install Module::Runtime

如果希望深入研究gcov工作的逻辑,可以去以下网站。

Linux平台代码覆盖率测试-GCC如何编译生成gcov/gcov-dump程序及其bug分析 第2页_Linux编程_Linux公社-Linux系统门户网站

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
首先,你需要安装gcovlcov工具。然后,你可以按照以下步骤进行操作: 1. 在test.cpp文件所在的目录下创建一个名为"CMakeLists.txt"的文件。 2. 在"CMakeLists.txt"文件中,添加以下内容: ``` cmake_minimum_required(VERSION 3.10) project(Test) set(CMAKE_CXX_STANDARD 11) add_executable(test test.cpp) target_compile_options(test PRIVATE --coverage) target_link_libraries(test PRIVATE gcov) add_custom_target(coverage COMMAND ${CMAKE_COMMAND} -E environment "GCOV_PREFIX=./" "GCOV_PREFIX_STRIP=0" ${CMAKE_COMMAND} -E chdir ${CMAKE_BINARY_DIR} gcov -b -c ${CMAKE_SOURCE_DIR}/test.cpp COMMAND ${CMAKE_COMMAND} -E chdir ${CMAKE_BINARY_DIR} lcov --capture --directory . --output-file coverage.info COMMAND ${CMAKE_COMMAND} -E chdir ${CMAKE_BINARY_DIR} lcov --remove coverage.info '/usr/*' "${CMAKE_BINARY_DIR}/*" --output-file coverage.info COMMAND ${CMAKE_COMMAND} -E chdir ${CMAKE_BINARY_DIR} lcov --list coverage.info ) ``` 这个CMakeLists.txt定义了一个名为Test的项目,并将test.cpp编译为可执行文件test。编译选项--coverage允许生成代码覆盖信息。target_link_libraries指定链接gcov库。 add_custom_target添加一个名为“coverage”的自定义目标,该目标使用环境变量设置gcov生成代码覆盖信息。使用lcov收集覆盖信息,将其保存在coverage.info文件中,并且从输出中删除一些不必要的信息。 3. 在终端中进入test.cpp所在的目录,创建一个build目录。 ``` mkdir build && cd build ``` 4. 运行cmake命令。 ``` cmake .. ``` 5. 运行make命令,生成可执行文件test。 ``` make ``` 6. 运行test。 ``` ./test ``` 7. 运行覆盖率测试。 ``` make coverage ``` 执行这个命令将生成一个名为coverage.info的文件,其中包含了test.cpp文件的代码覆盖率信息。你可以使用lcov或genhtml工具生成HTML格式的报告。 ``` lcov --list coverage.info genhtml coverage.info --output-directory coverage-report ``` 打开coverage-report目录下的index.html文件,你就可以看到代码覆盖率报告了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值