7

When gcc 4.1 (using gcov) next line:

p = new Class;

is reported as 100% branch coverage <-- THIS IS OK for me.

Why using gcc 4.4 and higher same line is reportted as:

[+ -] p = new Class; (50% branch coverage)... <-- THIS IS a problem for covering 100% !!!

Can I set any extra options to newer gcc versions in order to report the same branch coverage as gcc 4.1 for single lines as p = new Class;?

ouflak
  • 2,458
  • 10
  • 44
  • 49
Santos Ramirez
  • 121
  • 1
  • 4

2 Answers2

5

Solved !

We have some C/C++ files with and without exceptions handling, so lcov/gcov process "exceptions handling" for each code block.

Inside a normal block, for example:

int main(void)
{
 ...
 ...
 [+ -] printf("Hello\n");
 ...
}

gcov reports that printf line has a "branch coverage" of 50% ---> WHY ?

Because exceptions handling is enabled !!!

In order to solve this issue, specify:

-fno-exceptions

in g++ command line.

Example:

g++ -O0 --coverage -fno-exceptions -fno-inline ....

Thanks !

Яois
  • 3,838
  • 4
  • 28
  • 50
Santos Ramirez
  • 121
  • 1
  • 4
4

Another solution would be to use --exclude-throw-branches if you are running gcovr. For example:

gcovr --exclude-throw-branches ...

This allows you to still throw exceptions in your code but exclude all exception generated branches. More on this in gcovr FAQ

funbiscuit
  • 193
  • 2
  • 4
  • 12