覆盖率测试工具gcov的前端工具_LCOV_简介

转载 2014年10月19日 20:48:38

1、Gcov是进行代码运行的覆盖率统计的工具,它随着gcc的发布一起发布的,它的使用也很简单,需要在编译和链接的时候加上-fprofile-arcs -ftest-coverage生成二进制文件,gcov主要使用.gcno和.gcda两个文件,.gcno是由-ftest-coverage产生的,它包含了重建基本块图和相应的块的源码的行号的信息。.gcda是由加了-fprofile-arcs编译参数的编译后的文件运行所产生的,它包含了弧跳变的次数和其他的概要信息。gcda文件的生成需要先执行可执行文件才能生成。生成gcda文件之后执行命令gcov *.cpp就会在屏幕上打印出测试的覆盖率,并同时生成文件“*cpp.gcov”,然后用vi打开就可以看见哪行被覆盖掉了。

 

2、lcov的安装很简单,下载源码执行make install就可以了,在生成的“*.cpp.gcov"文件中执行lcov --directory  .   --capture --output-file app.info生成info文件,再执行genhtml  -o  results  app.info就会生成result目录,生成的html文件就在result目录下。

___________________________

http://www.linuxidc.com/Linux/2011-05/36544.htm

Content

1. Lcov是什么?

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

3. 如何使用Lcov?

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

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

(3) 该例子的图形显示

4. 编译lcov自带例子

5. 其他相关工具

(1) gcov-dump

(2) ggcov

 

 

1. Lcov是什么?


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

Use lcov to collect coverage data and genhtml to create HTML pages. Coverage data can either be collected from the currently running Linux kernel or from a user space application. To do this, you  have  to  complete the following preparation steps:

 

For Linux kernel coverage:

  Follow  the setup instructions for the gcov-kernel infrastructure:

http://ltp.sourceforge.net/coverage/gcov.php

 

For user space application coverage:

  Compile the application with GCC using the options "-fprofile-arcs" and "-ftest-coverage".

 

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。其他选项请参考lcov的manual页。

 

test.info文件内容如下。

TN:test

SF:/home/zubo/gcc/2011-04-10.sample/test.c

FN:4,main

FNDA:1,main

FNF:1

FNH:1

BRDA:9,2,0,10

BRDA:9,2,1,1

BRDA:12,0,0,0

BRDA:12,0,1,1

BRF:4

BRH:3

DA:4,1

DA:7,1

DA:9,11

DA:10,10

DA:12,1

DA:13,0

DA:15,1

DA:16,1

LF:8

LH:7

end_of_record

(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)

选项解释请参考genhtml的manual页。cd到output目录,可以看到,生成了很多相关文件,如下。


# cd output

# ls

amber.png    gcov.css    index-sort-b.html  ruby.png

emerald.png  glass.png   index-sort-f.html  snow.png

gcc          index.html  index-sort-l.html  updown.png

(3) 该例子的图形显示

 

(3.1) top level的视图

 

 

(3.2) 文件或函数的视图

 

4. 编译lcov自带例子

 

# cd /usr/src/lcov-1.9/example

# make

 

编译、运行自带例子并查看结果是快速学习某个工具最好的方法。从example的makefile文件和编译输出,都可以学习相关概念和命令的使用方法。Html输出可以由/usr/src/lcov-1.9/example/output/index.html查看。读者可自行实验。


代码覆盖率——gcov lcov的使用

1.GCOV查看arm-linux代码覆盖率 一、           关于gcov工具 gcov伴随gcc 发布。gcc编译加入-fprofile-arcs -ftest-coverage 参...
  • yukin_xue
  • yukin_xue
  • 2012年06月11日 17:55
  • 31739

GCOV 使用用例

转自:http://blogold.chinaunix.net/u3/99507/showart_2146013.html1.GCOV查看arm-linux代码覆盖率一、           关于gc...
  • lsj6730960
  • lsj6730960
  • 2011年01月24日 22:03
  • 13903

Linux下安装 lcov

在这里下载源代码:http://sourceforge.net/projects/ltp/ 解压缩,进入解压缩后目录,依次执行以下命令 ./configure make all make in...
  • yasi_xi
  • yasi_xi
  • 2013年02月20日 15:40
  • 4395

lcov-1.10.tar.gz

  • 2013年04月24日 15:06
  • 147KB
  • 下载

覆盖率测试工具gcov & lcov使用手册

Gcov: 代码覆盖率工具 1.      编译: 编译时gcc添加编译选项“gcc-fprofile-arcs“和”–ftest-coverage”: e.g:gcc-fprofile-arcs  ...
  • kevin_ji
  • kevin_ji
  • 2016年03月14日 13:32
  • 1644

各种编程语言的代码覆盖率工具汇总

对于Linux下的C/C++代码,可以在gcc/g++工具编译代码时加上“–coverage”选项来生成可用于覆盖率分析的二进制文件,然后用gcov命令来生成覆盖率统计情况,也可用lcov工具来生成h...
  • sysmedia
  • sysmedia
  • 2016年12月13日 14:38
  • 3018

测试覆盖率工具--EMMA

测试覆盖率(Code Coverage) 测试覆盖率,简单的说,就是评价测试活动覆盖产品代码的指标。测试的目的,是确认产品代码按照预期一样工作,也可以看作是产品代码工作方式的说明文档。进一步考虑...
  • yixiaoping
  • yixiaoping
  • 2013年01月25日 21:44
  • 13974

Linux平台代码覆盖率测试工具GCOV的前端工具LCOV简介

本博客http://blog.csdn.net/livelylittlefish 贴出作者(三二一@小鱼)相关研究、学习内容所做的笔记,欢迎广大朋友指正! Content 1. Lcov是什么...
  • ganggexiongqi
  • ganggexiongqi
  • 2012年04月18日 14:42
  • 945

Linux平台代码覆盖率测试工具GCOV的前端工具LCOV简介

Content 1. Lcov是什么? 2. 如何在Linux平台安装Lcov? 3. 如何使用Lcov? (1) 使用lcov收集覆盖率数据并写入文件 (2) 使用genhtml生成基于H...
  • panpanloveruth
  • panpanloveruth
  • 2012年06月01日 11:01
  • 714

转载_Linux平台代码覆盖率测试工具GCOV的前端工具LCOV简介

Content 1. Lcov是什么? 2. 如何在Linux平台安装Lcov? 3. 如何使用Lcov? (1) 使用lcov收集覆盖率数据并写入文件 (2) 使用genhtml生成基于H...
  • williamwanglei
  • williamwanglei
  • 2013年03月01日 11:24
  • 1108
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:覆盖率测试工具gcov的前端工具_LCOV_简介
举报原因:
原因补充:

(最多只允许输入30个字)