[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
gcov
data files
gcov
uses three files for doing profiling. The names of these
files are derived from the original source file by substituting
the file suffix with either `.bb', `.bbg', or `.da'. All
of these files are placed in the same directory as the source file, and
contain data stored in a platform-independent method.
The `.bb' and `.bbg' files are generated when the source file is compiled with the GNU CC `-ftest-coverage' option. The `.bb' file contains a list of source files (including headers), functions within those files, and line numbers corresponding to each basic block in the source file.
The `.bb' file format consists of several lists of 4-byte integers which correspond to the line numbers of each basic block in the file. Each list is terminated by a line number of 0. A line number of -1 is used to designate that the source file name (padded to a 4-byte boundary and followed by another -1) follows. In addition, a line number of -2 is used to designate that the name of a function (also padded to a 4-byte boundary and followed by a -2) follows.
The `.bbg' file is used to reconstruct the program flow graph for the source file. It contains a list of the program flow arcs (possible branches taken from one basic block to another) for each function which, in combination with the `.bb' file, enables gcov to reconstruct the program flow.
In the `.bbg' file, the format is:
number of basic blocks for function #0 (4-byte number) total number of arcs for function #0 (4-byte number) count of arcs in basic block #0 (4-byte number) destination basic block of arc #0 (4-byte number) flag bits (4-byte number) destination basic block of arc #1 (4-byte number) flag bits (4-byte number) ... destination basic block of arc #N (4-byte number) flag bits (4-byte number) count of arcs in basic block #1 (4-byte number) destination basic block of arc #0 (4-byte number) flag bits (4-byte number) ... |
A -1 (stored as a 4-byte number) is used to separate each function's list of basic blocks, and to verify that the file has been read correctly.
The `.da' file is generated when a program containing object files built with the GNU CC `-fprofile-arcs' option is executed. A separate `.da' file is created for each source file compiled with this option, and the name of the `.da' file is stored as an absolute pathname in the resulting object file. This path name is derived from the source file name by substituting a `.da' suffix.
The format of the `.da' file is fairly simple. The first 8-byte number is the number of counts in the file, followed by the counts (stored as 8-byte numbers). Each count corresponds to the number of times each arc in the program is executed. The counts are cumulative; each time the program is executed, it attempts to combine the existing `.da' files with the new counts for this invocation of the program. It ignores the contents of any `.da' files whose number of arcs doesn't correspond to the current program, and merely overwrites them instead.
All three of these files use the functions in `gcov-io.h' to store integers; the functions in this header provide a machine-independent mechanism for storing and retrieving data from a stream.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |