您的位置:首页技术开发PHP 学院 → gcov-dump原理分析_Linux平台代码覆盖率测试

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

时间:2011/7/12 8:18:44来源:本站原创作者:清晨我要评论(0)

8 页 处理 tag 的 callback 分析


3. 处理 tag 的 callback 分析


3.1 FUNCTION tag: tag_function() 函数

static void

tag_function ( const char * filename ATTRIBUTE_UNUSED ,

unsigned tag ATTRIBUTE_UNUSED , unsigned length ATTRIBUTE_UNUSED )

{

unsigned long pos = gcov_position ();



/***** for function, it will print ident and checksum */

printf ( " ident=%u" , gcov_read_unsigned ());

printf ( ", checksum=0x%08x" , gcov_read_unsigned ());



if ( gcov_position () - pos < length ) // 一般对于 .gcno 文件该条件才满足,才能执行该 clause

{

const char * name ;

name = gcov_read_string (); // 该函数读取 length(4 字节 ) 和 length 个 words(4*length 字节 ) ,读取函数名字

printf ( ", `%s'" , name ? name : "NULL" );

name = gcov_read_string (); // 读取源文件名字

printf ( " %s" , name ? name : "NULL" );

printf ( ":%u" , gcov_read_unsigned ()); // 读取该函数在该源文件中的行号

}

}

输出格式:

.gcda 文件输出: ident=3, checksum=0xeb65a768

.gcno 文件输出: ident=3, checksum=0xeb65a768 , `main' test.c:4

其中,划线部分分别为: 函数名 源文件名 : 行号


3.2 BLOCKS tag: tag_blocks() 函数

static void

tag_blocks ( const char * filename ATTRIBUTE_UNUSED ,

unsigned tag ATTRIBUTE_UNUSED , unsigned length ATTRIBUTE_UNUSED )

{

unsigned n_blocks = GCOV_TAG_BLOCKS_NUM ( length );

printf ( " %u blocks" , n_blocks );



if ( flag_dump_contents )

{

unsigned ix ;

for ( ix = 0 ; ix != n_blocks ; ix ++ )

{

if ( ! ( ix & 7 )) // 如果 blocks 较多,则每 8 个为 1 行输出,且按 0 , 8 , 16 , ... 输出序号

{

printf ( "/n" );

print_prefix ( filename , 0 , gcov_position ());

printf ( "/t/t%u" , ix ); // 输出序号

}

printf ( " %04x" , gcov_read_unsigned ());

}

}

}

其中, flag_dump_contents 是打印开关, flag_dump_contents 非 0 时将打印 COUNTER 的内容。

输出格式:

n blocks

0 block0 block1 ... block7 // 每 8 个 1 行输出,前面的 0 表示序号

8 block8 block9 ... block15 // 前面的 8 表示序号

...

当然,需要注意前导符或者输出位置。


相关视频

    没有数据

相关阅读 盘古越狱原理分析(看清它如何越狱的!)茄子快传原理是什么 茄子快传的原理分析硬盘保护卡的原理分析更改IE标题栏和注册表的原理分析VBS脚本病毒原理分析与防范 (1)VBS脚本病毒原理分析与防范QQ尾巴病毒的发送原理分析Mac虚拟机安装Linux Ubuntu教程 Parallels desktop安装linux教程

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 nginx-1.0.4的容器源码如何在xp系统用IIS搭建 nginx-1.0.4的容器源码分析—数组结构ngx_aPHP编程技巧提高PHP开发效率php站内全文搜索代码如何在xp系统用IIS搭建php环境

人气排行 如何在xp系统用IIS搭建php环境php输出内容乱码解决方法php站内全文搜索代码gcov-dump原理分析_Linux平台代码覆盖率测试如何架设PHP服务器nginx-1.0.4的容器源码分析—数组结构ngx_a用PHP实现文件管理系统PHP编程技巧提高PHP开发效率