GCOV type of coverage

Manuel Coutinho manuel.coutinho@edisoft.pt
Thu Nov 12 09:37:00 GMT 2009


Hi.

>From what I could tell, I dont think it is a bug. GCOV just gives different
metrics than statement or decision or MC/DC. It gives line, branches checked
and which branches have been taken.

However, I do agree that if you look at the .gcov files you can see if you
have statement, decision or MC/DC. However, if have to check by "eye".

Guess that the statement decision and MC/DC metrics would be very to
implement on GCOV :).

Kind regards
Manuel Coutinho.

> -----Original Message-----
> From: gcc-help-owner@gcc.gnu.org [mailto:gcc-help-owner@gcc.gnu.org] On
> Behalf Of Frodak Baksik
> Sent: Thursday, November 12, 2009 5:28 AM
> To: gcc-help@gcc.gnu.org
> Subject: RE: GCOV type of coverage
> 
> I have been looking into gcov and the type of coverage it calculates.
> 
> Based on your example and another simple example of my own gcov can
> track statement, decision, and MC/DC statistics.
> However, what it reports is not correct.
> 
> If you try the example in man gcov you wont get the results documented
> in the manual.
> 
> $ cat tmp.c
> #include <stdio.h>
> 
> int main (void)
> {
>   int i, total;
> 
>   total = 0;
> 
>   for (i = 0; i < 10; i++)
>     total += i;
> 
>   if (total != 45)
>     printf ("Failure\n");
>   else
>     printf ("Success\n");
>   return 0;
> }
> 
> $ gcov -b tmp.c
> File `tmp.c'
> Lines executed:88.89% of 9
> Branches executed:100.00% of 4
> Taken at least once:75.00% of 4
> Calls executed:66.67% of 3
> tmp.c:creating `tmp.c.gcov'
> 
> $ cat tmp.c.gcov
>         -:    0:Source:tmp.c
>         -:    0:Graph:tmp.gcno
>         -:    0:Data:tmp.gcda
>         -:    0:Runs:1
>         -:    0:Programs:1
>         -:    1:#include <stdio.h>
>         -:    2:
>         -:    3:int main (void)
> function main called 1 returned 100% blocks executed 78%
>         1:    4:{
> call    0 returned 100%
>         1:    5:  int i, total;
>         -:    6:
>         1:    7:  total = 0;
>         -:    8:
>        11:    9:  for (i = 0; i < 10; i++)
> branch  0 taken 91% (fallthrough)
> branch  1 taken 9%
>        10:   10:    total += i;
>         -:   11:
>         1:   12:  if (total != 45)
> branch  0 taken 0% (fallthrough)
> branch  1 taken 100%
>     #####:   13:    printf ("Failure\n");
> call    0 never executed
>         -:   14:  else
>         1:   15:    printf ("Success\n");
> call    0 returned 100%
>         1:   16:  return 0;
>         -:   17:}
> 
> You will notice that tmp.c.gcov is essentialy the same as the expected
> output but the reported statistics is incorrect.  I have gone ahead
> and reported it as a bug.
> 
> --
> Frodak



More information about the Gcc-help mailing list