Bonus corner-case bugfix in bitmap.h, found during the exercise. Issue dates from 2001 or thereabouts. Please review this specific change carefully. lcov_post: filter system include directories and generated files in build-root Type: improvement Signed-off-by: Dave Barach <dave@barachs.net> Change-Id: Iaa0b63e9dc571dfe3d992197ac49ba4d93403c61
Code coverage analysis with lcov
Prerequisites
The Linux gcov and lcov tools are fussy about gcc / g++ compiler versions. As of this writing, Ubuntu 18.04 gcov / lcov work with these toolchain versions:
$ gcc --version
gcc (Ubuntu 7.4.0-1ubuntu118.04.1) 7.4.0
$ g++ --version
g++ (Ubuntu 8.3.0-6ubuntu118.04.1) 8.3.0
Refer to https://askubuntu.com/questions/26498/how-to-choose-the-default-gcc-and-g-version for information on how to install multiple gcc / g++ versions, and switch between them.
You'll need to install the following additional packages:
$ sudo apt-get install gcovr ggcov lcov
Compile an instrumented vpp image
Two ways:
$ cd $ make test-gcov $ ## interrupt compilation after building the image
or $ cd /build-root $ make PLATFORM=vpp TAG=vpp_gcov vpp-install
Initialize the lcov database
$ cd $ ./extras/lcov/lcov_prep $ make test-gcov or make TEST=my_test test-gcov $ # repeat or vary as desired to increase reported coverage $ # Generate the report: $ ./extras/lcov/lcov_post
You can run vpp manually, do anything you like. Results are cumulative until you re-run the "prep" script.
Look at the results
Point a browser at file:////build-root/html/index.html