Linux平台代码覆盖率测试工具GCOV简介

2014-11-24 09:02:01 · 作者: · 浏览: 1

Content



1. gcov是什么?


2. gcov能做什么?


3. 如何使用gcov


3.1 使用gcov3个阶段


(1) 编译


(2) 收集信息


(3) 报告


3.2 gcov的选项


(1) -a, --all-blocks


(2) -b, --branch-probabilities


(3) -c, --branch-counts


4. 小结



1. gcov是什么?




注:程序概要分析工具是分析代码性能的工具。



2. gcov能做什么?



gcov可以统计


因此,gcov可以帮你优化代码,当然这个优化动作还是应该有开发者完成。



3. 如何使用gcov



笔者也以gcovmanual页自带的例子为例,代码(没有做任何改动)如下。



filename: test.c


3.1 使用gcov3个阶段



(1) 编译



-fprofile-arcs -ftest-coverage告诉编译器生成gcov需要的额外信息,并在目标文件中插入gcov需要的extra profiling information。因此,该命令在生成可执行文件test的同时生成test.gcno文件(gcov note文件)



(2) 收集信息


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



(3) 报告


生成test.c.gcov文件,该文件记录了每行代码被执行的次数。



test.c.gcov文件内容如下,蓝色表示笔者添加的注释。


3.2 gcov的选项



gcov的选项不多,也好理解,此处选3个典型的选项并结合例子加以说明。



(1) -a, --all-blocks



.gcov文件中输出每个基本快(basic block)的执行次数。如果没有-a选项,则输出'main'函数这个block的执行次数,如上所示。使用该选项可以


Write individual execution counts for every basic block. Normally gcov outputs execution counts only for the main blocks of a line. With this option you can determine if blocks within a single line are not being executed.



# gcov -a test.c


File 'test.c'


Lines executed:87.50% of 8


test.c:creating 'test.c.gcov'



Test.c.gcov文件内容。


(2) -b, --branch-probabilities



.gcov文件中输出每个分支的执行频率,并有分支统计信息。



# gcov -b test.c


File 'test.c'


Lines executed:87.50% of 8


Branches executed:100.00% of 4


Taken at least once:75.00% of 4


Calls executed:50.00% of 2


test.c:creating 'test.c.gcov'



(3) -c, --branch-counts



.gcov文件中输出每个分支的执行次数。


# gcov -c test.c


File 'test.c'


Lines executed:87.50% of 8


test.c:creating 'test.c.gcov'



-c是默认选项,其结果与"gcov test.c"执行结果相同。



其他选项,请读者参考相关文档。



4. 小结



本文简单介绍了Linux平台GCC自带的代码覆盖率测试工具GCOV的基本情况是使用方法。详细研究需要参考官方文档或者一些研究者的论文。