Why gcc 4.1 + gcov reports 100% branch coverage and newer (4.4, 4.6, 4.8) reports 50% for “p = new class;” line?

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 !

Leave a Comment