解释gcov输出以识别基本块

时间:2013-08-30 13:40:06

标签: c gcc gcov

我正在使用带有选项-a(--all-blocks)的gcov,该选项来自手册:

When you use the -a option, you will get individual block counts

原始文件:

#include <stdio.h>
#include "file1.h"

int max(int a , int b)
{
  int k = 0;
  if (a > b)
    return a;
  else
    return b;
}

gcov文件如下:

    -:    0:Source:file1.c
    -:    0:Graph:file1.gcno
    -:    0:Data:file1.gcda
    -:    0:Runs:1
    -:    0:Programs:1
    -:    1:#include <stdio.h>
    -:    2:#include "file1.h"
    -:    3:
    -:    4:int max(int a , int b)
    1:    5:{
    1:    6:  int k = 0;
    1:    7:  if (a > b)
    1:    7-block  0
    1:    8:    return a;
    1:    8-block  0
    -:    9:  else
    1:   10:    return b;
$$$$$:   10-block  0
    1:   10-block  1
    -:   11:}
    -:   12:
    -:   13:

我找不到有关gcov输出格式的任何信息。从原始代码中我可以识别3个基本块,但gcov只能识别2个,而在第10行中它识别出两个块。

1 个答案:

答案 0 :(得分:1)

块编号是一行的本地编号。第7行的block 0表示“第7行的第0行”等。只有当一行包含两个或更多个块时,才会有block 1,如第10行所示。

块号仅显示在该块的最后一行。

因此,你的程序有4个块,其中两个在第10行。