@c Copyright (C) 2017 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 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{-w}|@option{--working-sets}] @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 -v
@itemx --version
Display the @command{gcov-dump} version number (on the standard output),
and exit without doing any further processing.

@item -w
@itemx --working-sets
Dump working set computed from summary.
@end table

@c man end
