分类分类
关注+2011-07-12作者:清晨
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 表示序号
...
当然,需要注意前导符或者输出位置。
3.3 ARCS tag: tag_arcs() 函数
static void
tag_arcs ( const char * filename ATTRIBUTE_UNUSED ,
unsigned tag ATTRIBUTE_UNUSED , unsigned length ATTRIBUTE_UNUSED )
{
unsigned n_arcs = GCOV_TAG_ARCS_NUM ( length );
printf ( " %u arcs" , n_arcs ); // 输出提示信息,几个 arcs
if ( flag_dump_contents )
{
unsigned ix ;
unsigned blockno = gcov_read_unsigned ();
for ( ix = 0 ; ix != n_arcs ; ix ++ )
{
unsigned dst , flags ;
if ( ! ( ix & 3 )) // 如果 arcs 较多,则每 4 个为 1 行输出,且每行前面输出 blockno
{
printf ( "/n" );
print_prefix ( filename , 0 , gcov_position ());
printf ( "/tblock %u:" , blockno );
}
dst = gcov_read_unsigned (); // 读取目的 blockno
flags = gcov_read_unsigned ();
printf ( " %u:%04x" , dst , flags );
}
}
}
输出格式:
n arcs //n 个 arcs ,每 4 个为 1 行输出
blockno: dst0:flags0 dst1:flags1 dst2:flags2 dst3:flags3
blockno: dst4:flags4 dst5:flags5 dst6:flags6 dst7:flags7
...
同上,需要注意前导符或者输出位置。 dst0, ..., 表示目的 block 的 blockno 。
相关文章
更多+相同厂商
热门推荐
点击查看更多
点击查看更多
点击查看更多
说两句网友评论