gcov 和 lcov

1. gcov是什么?

Gcov is GCC Coverage;
是一个测试代码覆盖率的工具;
是一个命令行方式的控制台程序;
伴随GCC发布,配合GCC共同实现对C/C++文件的语句覆盖和分支覆盖测试;
与程序概要分析工具(profiling tool,例如gprof)一起工作,可以估计程序中哪一段代码最耗时。

2. gcov能做什么?

统计每一行代码的执行频率;
实际上哪些代码确实被执行了;
每一段代码(section code)的耗时(执行时间);
因此,gcov可以帮你优化代码,当然这个优化动作还是应该有开发者完成。

3. 使用gcov的3个阶段

(1) 编译

gcov的使用修改编译选项,加入-fprofile-arcs -ftest-coverage,或者简单点直接用–coverage,等同于前者,生成二进制文件。
-fprofile-arcs生成.gcda文件一个包含每一个指令分支的执行计数,这些文件会在执行以后与源码文件一起使用,来标识源码的执行行为。
-ftest-coverage生成.gcno文件用来重组每一个可执行程序的程序流图,并在目标文件中插入gcov需要的extra profiling information。因此编译过程中的链接库需要加上-lgcov。

(2) 收集信息

执行该程序,生成.gcda文件(gcov data文件)。

(3) 报告

gcov -a xxx.cpp
gcov -b xxx.cpp
gcov -f xxx.cpp
生成xxx.cpp.gcov 文件用vi打开就可以查看覆盖率。

4. gcov help

gcov [options] sourcefile
其可用的选项如下:
选项 目的
-v,-version 打印版本信息
-h,-help 打印帮助信息
-b,-branch-probabilities向输出文件输出分支频度
-c,-branch-counts打印分支计数而不是分支频度
-n,-no-output 不创建gcov输出文件
-l,-long-file-names创建长文件名
-f,-function-summaries打印每一个函数的概要
-o,-object-directory.gcno .gcda文件存放的目录

5. 参考

http://blog.chinaunix.net/uid-13182088-id-2904573.html

1. Lcov是什么?

是GCOV图形化的前端工具
是Linux Test Project维护的开放源代码工具,最初被设计用来支持Linux内核覆盖率的度量
基于Html输出,并生成一棵完整的HTML树
输出包括概述、覆盖率百分比、图表,能快速浏览覆盖率数据
支持大项目,提供三个级别的视图:目录视图、文件视图、源码视图

2. 如何在Linux平台安装Lcov?

# wget http://downloads.sourceforge.net/ltp/lcov-1.9.tar.gz
# tar -zxvf lcov-1.9.tar.gz
# cd lcov-1.9
# ls
bin contrib descriptions.tests lcovrc man rpm
CHANGES COPYING example Makefile README
# make install
不需要编译,直接安装即可,lcov, gendesc, genhtml, geninfo, genpng将被安装到/usr/bin目录。

3. 如何使用Lcov?

以Linux平台代码覆盖率测试工具GCOV简介一文的例子为例。

(1) 使用lcov收集覆盖率数据并写入文件

# lcov –capture –directory . –output-file test.info –test-name test
Capturing coverage data from .
Found gcov version: 4.1.2
Scanning . for .gcda files …
Found 1 data files in .
Processing test.gcda
Finished .info-file creation
.表示当前目录,收集coverage data,即.gcda文件中的信息,并写入test.info文件,且取名为test。其他选项请参考man lcov

(2) 使用genhtml生成基于HTML的输出

# genhtml test.info –output-directory output –title “a simple test” –show-details –legend
Reading data file test.info
Found 1 entries.
Found common filename prefix “/home/zubo”
Writing .css and .png files.
Generating output.
Processing file gcc/2011-04-10.sample/test.c
Writing directory view page.
Overall coverage rate:
lines……: 87.5% (7 of 8 lines)
functions..: 100.0% (1 of 1 function)
branches…: 75.0% (3 of 4 branches)

(3) 打开index文件 查看覆盖率

4. 参考

http://my.oschina.net/alphajay/blog/33725

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值