Copyright (C) 2000-2012 |
GNU Info (gcc-300.info)Gcov Data FilesBrief description of `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 GCC `-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 GCC `-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. automatically generated by info2www version 1.2.2.9 |