2

我将 gcov 与手册中的选项 -a (--all-blocks) 一起使用:

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 只有第二个,并且在第 10 行它识别了两个块。

4

1 回答 1

1

块号对于一行是本地的。block 0on line 7 表示“第 7 行的第 0 块”等。block 1只有当一行有两个或更多块时,你才有,就像第 10 行一样。

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

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

于 2013-08-30T15:20:15.490 回答