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

筅森魡賤 提交于 2020-01-19 03:28:05

问题


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 same branch coverage as gcc 4.1 for single lines as "p = new Class;".

Thanks in advance.


回答1:


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 !



来源:https://stackoverflow.com/questions/23219614/why-gcc-4-1-gcov-reports-100-branch-coverage-and-newer-4-4-4-6-4-8-report

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!