@c Copyright (C) 2017-2022 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-2022 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}]
     [@option{-s}|@option{--stable}]
     @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 -s
@itemx --stable
Print content in stable format usable for comparison.

@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
