mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-08-18 11:30:04 +00:00
513 lines
13 KiB
Groff
513 lines
13 KiB
Groff
.TH geninfo 1 "LCOV 1.10" 2012\-10\-10 "User Manuals"
|
|
.SH NAME
|
|
geninfo \- Generate tracefiles from .da files
|
|
.SH SYNOPSIS
|
|
.B geninfo
|
|
.RB [ \-h | \-\-help ]
|
|
.RB [ \-v | \-\-version ]
|
|
.RB [ \-q | \-\-quiet ]
|
|
.br
|
|
.RS 8
|
|
.RB [ \-i | \-\-initial ]
|
|
.RB [ \-t | \-\-test\-name
|
|
.IR test\-name ]
|
|
.br
|
|
.RB [ \-o | \-\-output\-filename
|
|
.IR filename ]
|
|
.RB [ \-f | \-\-follow ]
|
|
.br
|
|
.RB [ \-b | \-\-base\-directory
|
|
.IR directory ]
|
|
.br
|
|
.RB [ \-\-checksum ]
|
|
.RB [ \-\-no\-checksum ]
|
|
.br
|
|
.RB [ \-\-compat\-libtool ]
|
|
.RB [ \-\-no\-compat\-libtool ]
|
|
.br
|
|
.RB [ \-\-gcov\-tool
|
|
.IR tool ]
|
|
.RB [ \-\-ignore\-errors
|
|
.IR errors ]
|
|
.br
|
|
.RB [ \-\-no\-recursion ]
|
|
.I directory
|
|
.RB [ \-\-external ]
|
|
.RB [ \-\-no\-external ]
|
|
.br
|
|
.RB [ \-\-config\-file
|
|
.IR config\-file ]
|
|
.RB [ \-\-no\-markers ]
|
|
.br
|
|
.RB [ \-\-derive\-func\-data ]
|
|
.RB [ \-\-compat
|
|
.IR mode =on|off|auto]
|
|
.br
|
|
.RB [ \-\-rc
|
|
.IR keyword = value ]
|
|
.RE
|
|
.SH DESCRIPTION
|
|
.B geninfo
|
|
converts all GCOV coverage data files found in
|
|
.I directory
|
|
into tracefiles, which the
|
|
.B genhtml
|
|
tool can convert to HTML output.
|
|
|
|
Unless the \-\-output\-filename option is specified,
|
|
.B geninfo
|
|
writes its
|
|
output to one file per .da file, the name of which is generated by simply
|
|
appending ".info" to the respective .da file name.
|
|
|
|
Note that the current user needs write access to both
|
|
.I directory
|
|
as well as to the original source code location. This is necessary because
|
|
some temporary files have to be created there during the conversion process.
|
|
|
|
Note also that
|
|
.B geninfo
|
|
is called from within
|
|
.BR lcov ,
|
|
so that there is usually no need to call it directly.
|
|
|
|
.B Exclusion markers
|
|
|
|
To exclude specific lines of code from a tracefile, you can add exclusion
|
|
markers to the source code. Exclusion markers are keywords which can for
|
|
example be added in the form of a comment.
|
|
|
|
The following markers are recognized by geninfo:
|
|
|
|
LCOV_EXCL_LINE
|
|
.RS
|
|
Lines containing this marker will be excluded.
|
|
.br
|
|
.RE
|
|
LCOV_EXCL_START
|
|
.RS
|
|
Marks the beginning of an excluded section. The current line is part of this
|
|
section.
|
|
.br
|
|
.RE
|
|
LCOV_EXCL_STOP
|
|
.RS
|
|
Marks the end of an excluded section. The current line not part of this
|
|
section.
|
|
.RE
|
|
.br
|
|
|
|
.SH OPTIONS
|
|
|
|
.B \-b
|
|
.I directory
|
|
.br
|
|
.B \-\-base\-directory
|
|
.I directory
|
|
.br
|
|
.RS
|
|
.RI "Use " directory
|
|
as base directory for relative paths.
|
|
|
|
Use this option to specify the base directory of a build\-environment
|
|
when geninfo produces error messages like:
|
|
|
|
.RS
|
|
ERROR: could not read source file /home/user/project/subdir1/subdir2/subdir1/subdir2/file.c
|
|
.RE
|
|
|
|
In this example, use /home/user/project as base directory.
|
|
|
|
This option is required when using geninfo on projects built with libtool or
|
|
similar build environments that work with a base directory, i.e. environments,
|
|
where the current working directory when invoking the compiler is not the same
|
|
directory in which the source code file is located.
|
|
|
|
Note that this option will not work in environments where multiple base
|
|
directories are used. In that case use configuration file setting
|
|
.B geninfo_auto_base=1
|
|
(see
|
|
.BR lcovrc (5)).
|
|
.RE
|
|
|
|
.B \-\-checksum
|
|
.br
|
|
.B \-\-no\-checksum
|
|
.br
|
|
.RS
|
|
Specify whether to generate checksum data when writing tracefiles.
|
|
|
|
Use \-\-checksum to enable checksum generation or \-\-no\-checksum to
|
|
disable it. Checksum generation is
|
|
.B disabled
|
|
by default.
|
|
|
|
When checksum generation is enabled, a checksum will be generated for each
|
|
source code line and stored along with the coverage data. This checksum will
|
|
be used to prevent attempts to combine coverage data from different source
|
|
code versions.
|
|
|
|
If you don't work with different source code versions, disable this option
|
|
to speed up coverage data processing and to reduce the size of tracefiles.
|
|
.RE
|
|
|
|
.B \-\-compat
|
|
.IR mode = value [, mode = value ,...]
|
|
.br
|
|
.RS
|
|
Set compatibility mode.
|
|
|
|
Use \-\-compat to specify that geninfo should enable one or more compatibility
|
|
modes when capturing coverage data. You can provide a comma-separated list
|
|
of mode=value pairs to specify the values for multiple modes.
|
|
|
|
Valid
|
|
.I values
|
|
are:
|
|
|
|
.B on
|
|
.RS
|
|
Enable compatibility mode.
|
|
.RE
|
|
.B off
|
|
.RS
|
|
Disable compatibility mode.
|
|
.RE
|
|
.B auto
|
|
.RS
|
|
Apply auto-detection to determine if compatibility mode is required. Note that
|
|
auto-detection is not available for all compatibility modes.
|
|
.RE
|
|
|
|
If no value is specified, 'on' is assumed as default value.
|
|
|
|
Valid
|
|
.I modes
|
|
are:
|
|
|
|
.B libtool
|
|
.RS
|
|
Enable this mode if you are capturing coverage data for a project that
|
|
was built using the libtool mechanism. See also
|
|
\-\-compat\-libtool.
|
|
|
|
The default value for this setting is 'on'.
|
|
|
|
.RE
|
|
.B hammer
|
|
.RS
|
|
Enable this mode if you are capturing coverage data for a project that
|
|
was built using a version of GCC 3.3 that contains a modification
|
|
(hammer patch) of later GCC versions. You can identify a modified GCC 3.3
|
|
by checking the build directory of your project for files ending in the
|
|
extension '.bbg'. Unmodified versions of GCC 3.3 name these files '.bb'.
|
|
|
|
The default value for this setting is 'auto'.
|
|
|
|
.RE
|
|
.B split_crc
|
|
.RS
|
|
Enable this mode if you are capturing coverage data for a project that
|
|
was built using a version of GCC 4.6 that contains a modification
|
|
(split function checksums) of later GCC versions. Typical error messages
|
|
when running geninfo on coverage data produced by such GCC versions are
|
|
\'out of memory' and 'reached unexpected end of file'.
|
|
|
|
The default value for this setting is 'auto'
|
|
.RE
|
|
|
|
.RE
|
|
|
|
.B \-\-compat\-libtool
|
|
.br
|
|
.B \-\-no\-compat\-libtool
|
|
.br
|
|
.RS
|
|
Specify whether to enable libtool compatibility mode.
|
|
|
|
Use \-\-compat\-libtool to enable libtool compatibility mode or \-\-no\-compat\-libtool
|
|
to disable it. The libtool compatibility mode is
|
|
.B enabled
|
|
by default.
|
|
|
|
When libtool compatibility mode is enabled, geninfo will assume that the source
|
|
code relating to a .da file located in a directory named ".libs" can be
|
|
found in its parent directory.
|
|
|
|
If you have directories named ".libs" in your build environment but don't use
|
|
libtool, disable this option to prevent problems when capturing coverage data.
|
|
.RE
|
|
|
|
.B \-\-config\-file
|
|
.I config\-file
|
|
.br
|
|
.RS
|
|
Specify a configuration file to use.
|
|
|
|
When this option is specified, neither the system\-wide configuration file
|
|
/etc/lcovrc, nor the per\-user configuration file ~/.lcovrc is read.
|
|
|
|
This option may be useful when there is a need to run several
|
|
instances of
|
|
.B geninfo
|
|
with different configuration file options in parallel.
|
|
.RE
|
|
|
|
.B \-\-derive\-func\-data
|
|
.br
|
|
.RS
|
|
Calculate function coverage data from line coverage data.
|
|
|
|
Use this option to collect function coverage data, even if the version of the
|
|
gcov tool installed on the test system does not provide this data. lcov will
|
|
instead derive function coverage data from line coverage data and
|
|
information about which lines belong to a function.
|
|
.RE
|
|
|
|
.B \-\-external
|
|
.br
|
|
.B \-\-no\-external
|
|
.br
|
|
.RS
|
|
Specify whether to capture coverage data for external source files.
|
|
|
|
External source files are files which are not located in one of the directories
|
|
specified by \-\-directory or \-\-base\-directory. Use \-\-external to include
|
|
external source files while capturing coverage data or \-\-no\-external to
|
|
ignore this data.
|
|
|
|
Data for external source files is
|
|
.B included
|
|
by default.
|
|
.RE
|
|
|
|
.B \-f
|
|
.br
|
|
.B \-\-follow
|
|
.RS
|
|
Follow links when searching .da files.
|
|
.RE
|
|
|
|
.B \-\-gcov\-tool
|
|
.I tool
|
|
.br
|
|
.RS
|
|
Specify the location of the gcov tool.
|
|
.RE
|
|
|
|
.B \-h
|
|
.br
|
|
.B \-\-help
|
|
.RS
|
|
Print a short help text, then exit.
|
|
.RE
|
|
|
|
.B \-\-ignore\-errors
|
|
.I errors
|
|
.br
|
|
.RS
|
|
Specify a list of errors after which to continue processing.
|
|
|
|
Use this option to specify a list of one or more classes of errors after which
|
|
geninfo should continue processing instead of aborting.
|
|
|
|
.I errors
|
|
can be a comma\-separated list of the following keywords:
|
|
|
|
.B gcov:
|
|
the gcov tool returned with a non\-zero return code.
|
|
|
|
.B source:
|
|
the source code file for a data set could not be found.
|
|
.RE
|
|
|
|
.B \-i
|
|
.br
|
|
.B \-\-initial
|
|
.RS
|
|
Capture initial zero coverage data.
|
|
|
|
Run geninfo with this option on the directories containing .bb, .bbg or .gcno
|
|
files before running any test case. The result is a "baseline" coverage data
|
|
file that contains zero coverage for every instrumented line and function.
|
|
Combine this data file (using lcov \-a) with coverage data files captured
|
|
after a test run to ensure that the percentage of total lines covered is
|
|
correct even when not all object code files were loaded during the test.
|
|
|
|
Note: currently, the \-\-initial option does not generate branch coverage
|
|
information.
|
|
.RE
|
|
|
|
.B \-\-no\-markers
|
|
.br
|
|
.RS
|
|
Use this option if you want to get coverage data without regard to exclusion
|
|
markers in the source code file.
|
|
.RE
|
|
|
|
.B \-\-no\-recursion
|
|
.br
|
|
.RS
|
|
Use this option if you want to get coverage data for the specified directory
|
|
only without processing subdirectories.
|
|
.RE
|
|
|
|
.BI "\-o " output\-filename
|
|
.br
|
|
.BI "\-\-output\-filename " output\-filename
|
|
.RS
|
|
Write all data to
|
|
.IR output\-filename .
|
|
|
|
If you want to have all data written to a single file (for easier
|
|
handling), use this option to specify the respective filename. By default,
|
|
one tracefile will be created for each processed .da file.
|
|
.RE
|
|
|
|
.B \-q
|
|
.br
|
|
.B \-\-quiet
|
|
.RS
|
|
Do not print progress messages.
|
|
|
|
Suppresses all informational progress output. When this switch is enabled,
|
|
only error or warning messages are printed.
|
|
.RE
|
|
|
|
.B \-\-rc
|
|
.IR keyword = value
|
|
.br
|
|
.RS
|
|
Override a configuration directive.
|
|
|
|
Use this option to specify a
|
|
.IR keyword = value
|
|
statement which overrides the corresponding configuration statement in
|
|
the lcovrc configuration file. You can specify this option more than once
|
|
to override multiple configuration statements.
|
|
See
|
|
.BR lcovrc (5)
|
|
for a list of available keywords and their meaning.
|
|
.RE
|
|
|
|
.BI "\-t " testname
|
|
.br
|
|
.BI "\-\-test\-name " testname
|
|
.RS
|
|
Use test case name
|
|
.I testname
|
|
for resulting data. Valid test case names can consist of letters, decimal
|
|
digits and the underscore character ('_').
|
|
|
|
This proves useful when data from several test cases is merged (i.e. by
|
|
simply concatenating the respective tracefiles) in which case a test
|
|
name can be used to differentiate between data from each test case.
|
|
.RE
|
|
|
|
.B \-v
|
|
.br
|
|
.B \-\-version
|
|
.RS
|
|
Print version number, then exit.
|
|
.RE
|
|
|
|
|
|
.SH FILES
|
|
|
|
.I /etc/lcovrc
|
|
.RS
|
|
The system\-wide configuration file.
|
|
.RE
|
|
|
|
.I ~/.lcovrc
|
|
.RS
|
|
The per\-user configuration file.
|
|
.RE
|
|
|
|
Following is a quick description of the tracefile format as used by
|
|
.BR genhtml ", " geninfo " and " lcov .
|
|
|
|
A tracefile is made up of several human\-readable lines of text,
|
|
divided into sections. If available, a tracefile begins with the
|
|
.I testname
|
|
which is stored in the following format:
|
|
|
|
TN:<test name>
|
|
|
|
For each source file referenced in the .da file, there is a section containing
|
|
filename and coverage data:
|
|
|
|
SF:<absolute path to the source file>
|
|
|
|
Following is a list of line numbers for each function name found in the
|
|
source file:
|
|
|
|
FN:<line number of function start>,<function name>
|
|
|
|
Next, there is a list of execution counts for each instrumented function:
|
|
|
|
FNDA:<execution count>,<function name>
|
|
|
|
This list is followed by two lines containing the number of functions found
|
|
and hit:
|
|
|
|
FNF:<number of functions found>
|
|
FNH:<number of function hit>
|
|
|
|
Branch coverage information is stored which one line per branch:
|
|
|
|
BRDA:<line number>,<block number>,<branch number>,<taken>
|
|
|
|
Block number and branch number are gcc internal IDs for the branch. Taken is
|
|
either '-' if the basic block containing the branch was never executed or
|
|
a number indicating how often that branch was taken.
|
|
|
|
Branch coverage summaries are stored in two lines:
|
|
|
|
BRF:<number of branches found>
|
|
BRH:<number of branches hit>
|
|
|
|
Then there is a list of execution counts for each instrumented line
|
|
(i.e. a line which resulted in executable code):
|
|
|
|
DA:<line number>,<execution count>[,<checksum>]
|
|
|
|
Note that there may be an optional checksum present for each instrumented
|
|
line. The current
|
|
.B geninfo
|
|
implementation uses an MD5 hash as checksumming algorithm.
|
|
|
|
At the end of a section, there is a summary about how many lines
|
|
were found and how many were actually instrumented:
|
|
|
|
LH:<number of lines with a non\-zero execution count>
|
|
LF:<number of instrumented lines>
|
|
|
|
Each sections ends with:
|
|
|
|
end_of_record
|
|
|
|
In addition to the main source code file there are sections for all
|
|
#included files which also contain executable code.
|
|
|
|
Note that the absolute path of a source file is generated by interpreting
|
|
the contents of the respective .bb file (see
|
|
.BR "gcov " (1)
|
|
for more information on this file type). Relative filenames are prefixed
|
|
with the directory in which the .bb file is found.
|
|
|
|
Note also that symbolic links to the .bb file will be resolved so that the
|
|
actual file path is used instead of the path to a link. This approach is
|
|
necessary for the mechanism to work with the /proc/gcov files.
|
|
|
|
.SH AUTHOR
|
|
Peter Oberparleiter <Peter.Oberparleiter@de.ibm.com>
|
|
|
|
.SH SEE ALSO
|
|
.BR lcov (1),
|
|
.BR lcovrc (5),
|
|
.BR genhtml (1),
|
|
.BR genpng (1),
|
|
.BR gendesc (1),
|
|
.BR gcov (1)
|