Code Coverage Branch Monitor

The Code Coverage Branch Monitor (CCBM) is a set of utilities that allow instrumentation of C source code for the purpose of branch coverage measurement. This encompasses operations for code instrumentation, removal of this instrumentation, retrieval of coverage information, merging coverage information, and displaying this information with reference to the (original) source code.

Overview

CCBM Key Features

The CCBM supports

  • Instrumentation of C source code with “reached” markers, according to certain rules and exclusions (i.e., a CCBM setup).
  • Textual output and merging of CCBM coverage informations.
  • Mapping coverage information back to the source code in order to display reached and missed lines.
  • Textual merging of coverage information with other formats, e.g., gcov coverage.
  • Generation of overview and summary files (HTML).
  • Extensions that can store and recover coverage information in the EEPROM memory in order to preserve information throughout system power-off situations.

Operation

The instrumentation basically adds a bit-assignment to every branch in the control flow. Initially 0, a set bit indicates that the corresponding branch has been executed. The bit-assignment can only distinguish “not reached” and “reached”; how often a reached branch in the source code has been executed is not measured.

The coverage information is usually read-out in some test environment of a project. This read-out happens in an internal (ASCII-based) format and can be associated with the instrumented source files later. The CCBM provides operations for computing representations of the coverage information per source code line and can summarise this in HTML overview files.

Workflow

ccbm_workflow

Reference Projects

The CCBM has been successfully applied in various Level-B and Level-C projects in the avionics field, including the Airbus/KID A350XWB, A380 and A340/A318 families and the IMA OSCM component.

At Bremen University, the CCBM is used in the analysis of an kernel implementation for avionics (ARINC-653 API).

Availability

The CCBM is available for

  • Linux (e.g., SuSE-10.0 32bit, openSUSE-11.4 64bit), and
  • Windows/Cygwin (e.g., Windows XP – Cygwin 1.5.5(0.94/3/2))
  • Solaris (e.g., Solaris 10 5/09)

Other platforms may be supported on request.

News Feed

Annoucements on new CCBM releases are available via RSS feed RSS Feed Logo. This feed is also used to inform about any serious problems with some released versions.