@c Copyright (C) 2017-2021 Free Software Foundation, Inc.
@c This is part of the GCC manual.
@c For copying conditions, see the file gcc.texi.

@ignore
@c man begin COPYRIGHT
Copyright @copyright{} 2017-2021 Free Software Foundation, Inc.

Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being ``GNU General Public License'' and ``Funding
Free Software'', the Front-Cover texts being (a) (see below), and with
the Back-Cover Texts being (b) (see below).  A copy of the license is
included in the gfdl(7) man page.

(a) The FSF's Front-Cover Text is:

     A GNU Manual

(b) The FSF's Back-Cover Text is:

     You have freedom to copy and modify this GNU Manual, like GNU
     software.  Copies published by the Free Software Foundation raise
     funds for GNU development.
@c man end
@c Set file name and title for the man page.
@setfilename gcov-dump
@settitle offline gcda and gcno profile dump tool
@end ignore

@node Gcov-dump
@chapter @command{gcov-dump}---an Offline Gcda and Gcno Profile Dump Tool

@menu
* Gcov-dump Intro::             Introduction to gcov-dump.
* Invoking Gcov-dump::          How to use gcov-dump.
@end menu

@node Gcov-dump Intro
@section Introduction to @command{gcov-dump}
@c man begin DESCRIPTION

@command{gcov-dump} is a tool you can use in conjunction with GCC to
dump content of gcda and gcno profile files offline.

@c man end

@node Invoking Gcov-dump
@section Invoking @command{gcov-dump}

@smallexample
Usage: gcov-dump @r{[}@var{OPTION}@r{]} ... @var{gcovfiles}
@end smallexample

@command{gcov-dump} accepts the following options:

@ignore
@c man begin SYNOPSIS
gcov-dump [@option{-v}|@option{--version}]
     [@option{-h}|@option{--help}]
     [@option{-l}|@option{--long}]
     [@option{-p}|@option{--positions}]
     [@option{-r}|@option{--raw}]
     @var{gcovfiles}
@c man end
@end ignore

@c man begin OPTIONS
@table @gcctabopt
@item -h
@itemx --help
Display help about using @command{gcov-dump} (on the standard output), and
exit without doing any further processing.

@item -l
@itemx --long
Dump content of records.

@item -p
@itemx --positions
Dump positions of records.

@item -r
@itemx --raw
Print content records in raw format.

@item -v
@itemx --version
Display the @command{gcov-dump} version number (on the standard output),
and exit without doing any further processing.
@end table

@c man end
