BITCOV: Changes for Instrumentation
BITCOV omitts any Testwell CTC++ runtime and measures binary executed / not executed information instead of counting. The build and rebuild process changes in some details.
A script called ctc2static is used for initiating BITCOV. It has to be called during the ctc run with hook parameter
RUN_AFTER_INSTR = ctc2static
ctc2static performs two tasks:
- Changing the way the code is instrumented.
- Providing an auxiliary file with default name
MON.aux, which is needed for reporting
later. It maps the
CTC_array
to source files and their counters. The file naming follows the symbol file naming.
BITCOV provides three variants for the array containing the coverage information: you can use a bit array with one bit per measure point, or a byte array storing this binary information in bytes or an array of actual counters (max. 32 bit).
You initiate the variant chosen by passing certain compile flags with the configuration parameter OPT_ADD_COMPILE. Additionally, you have to define a global array with the proper size and initialize it with zeros. You can derive the proper size after one instrumentation run from the symbol file with the tool any2mem.
Compile Flags | The CTC_array | |
---|---|---|
with bits (default) | - | Call to
get an array definition with the correct size, for
example
|
with bytes |
|
Multiply the array size by 8. |
with counters |
|
Multiply the array size by 8 and define the
array as unsigned int (for
example). |
0x4200
, with
OPT_ADD_COMPILE + -DCTC_ARRAY=0x4200
You need to initialize the memory starting with this address with zeros, in the same length as calculated for array sizing.
General Restrictions with BITCOV
- All source files must be instrumented in the same variant described above.
- Timing instrumentation cannot be used with these variants. The source files can be instrumented individually with regard to instrumentation mode.
- All code files have to be instrumented "together": The instrumentation must result in only one symbol file and one auxiliary file.
- If a source file is changed and needs to be instrumented again, you need to delete the .sym and .aux files and do a full rebuild, instrumenting all files again.
- Testwell CTC++ specific pragmas
affecting the runtime
cannot be used in any BITCOV variant. Pragmas with
instructions for instrumentation like
#pragma CTC SKIP
,#pragma CTC ENDSKIP
or#pragma CTC ANNOTATION
can be used.