Linux平台代码覆盖率测试-gcov-dump原理分析

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

Content


1.


2. gcov-dump原理分析


2.1 gcov-dump程序结构


2.2 dump_file函数分析


2.3 处理各种tagcallback定义


2.4 基本读取函数gcov_read_words


2.5 分配空间函数gcov_allocate


2.6 重要数据结构gcov_var


3. 处理tagcallback分析


3.1 FUNCTION tag: tag_function()函数


3.2 BLOCKS tag: tag_blocks()函数


3.3 ARCS tag: tag_arcs()函数


3.4 LINES tag: tag_lines()函数


3.5 COUNTER tag: tag_counters()函数


3.6 OBJECT/PROGRAM SUMMARY tag: tag_summary()函数


4. 小结




1.




——这就是gcov-dump程序。



gcov-dump是一个dump程序,输入是一个gcov的文件,或者.gcda,即gcovdata文件;或者.gcno,即gcovnote文件。





2. gcov-dump原理分析



2.1 gcov-dump程序结构



2.2 dump_file函数分析



gcov-dump程序的主函数main,是靠调用dump_file()函数来完成文件内容的输出。该函数定义如下。其中的注释为笔者所加。


dump_file函数首先通过gcov_open打开.gcda/.gcno文件,将文件信息保存到全局变量gcov_var(稍后介绍该变量),接着读取文件头信息,包括magicversionstamp,然后循环读取每个taglength,并通过函数指针处理该tag,直到文件结束(0x00000000)。下面介绍各种tagcallback



2.3 处理各种tagcallback定义



处理tagcallback函数定义如下。


其类型tag_format_t为一个结构,分别由tag本身,tag name和处理该tag的函数指针组成,定义如下。