Re: gcov/lcov problems with branch coverage and c++

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, 2017-02-02 at 14:59 +0100, Sven Eppler wrote:
> Hello,
> we are using GCOV/LCOV to produce test coverage for our projects.
> Recently we tried to enable branch-coverage additionally.
> But it looks like, this just doesn't yield the results we expected
> from 
> a high level developer view.
> 
> Using branch-coverage with C++ blows the report up with branches all 
> over the place.
> We suspect (as the searching for the issues indicates) that mostly 
> exception handling code
> creates these "hidden branches". And GCOV/LCOV doesn't seem to skip
> over 
> these.

I am also interested in any developments on this.

gcc can also be used as a backend for other compilers : notably, ghdl
compiles VHDL code for simulation, and can be built with gcc, which
provides code coverage (using gcov/lcov) and to some extent, branch
coverage.

(ghdl also builds with two other back ends, but only gcc provides code
coverage) 

https://github.com/tgingold/ghdl

But like C++, there are branches all over the place, not all explicit
branches in the VHDL source code.

For example in VHDL, the "signal" is the inter-process communication
mechanism, and thus a simple signal assignment produces branches (for
example, to reschedule processes waiting on the signal).

It would be convenient if there was a way to tag specific branches in
the intermediate Gimple code, as "track" or "ignore, do not track" for
branch coverage.

This ability would also help the C++ compiler, which would mark e.g.
exception-related branches as "ignore, to not track".

Any information on whether this facility already exists, or how to go
about adding it, would be of interest.

-- Brian
> 



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux