mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-10-16 12:24:19 +08:00
Remove auot generated man pages
This commit is contained in:
@ -1,3 +1,11 @@
|
||||
2001-06-18 H.J. Lu <hjl@gnu.org>
|
||||
|
||||
* Makefile.am (diststuff): Add $(MANS).
|
||||
(gprof.1): Remove the prefix `$(srcdir)/'.
|
||||
* Makefile.in: Regenerated.
|
||||
|
||||
* gprof.1: Removed.
|
||||
|
||||
2001-06-12 Ben Elliston <bje@redhat.com>
|
||||
|
||||
* gprof.texi (File Format): Profile data files are stored in
|
||||
|
@ -33,11 +33,10 @@ noinst_HEADERS = \
|
||||
corefile.h gmon.h gmon_io.h gmon_out.h gprof.h hertz.h hist.h \
|
||||
search_list.h source.h sym_ids.h symtab.h utils.h
|
||||
|
||||
EXTRA_DIST = flat_bl.c bsd_callg_bl.c fsf_callg_bl.c bbconv.pl
|
||||
|
||||
BUILT_SOURCES = flat_bl.c bsd_callg_bl.c fsf_callg_bl.c
|
||||
EXTRA_DIST = $(BUILT_SOURCES) bbconv.pl $(man_MANS)
|
||||
|
||||
diststuff: $(BUILT_SOURCES) info
|
||||
diststuff: $(BUILT_SOURCES) info $(man_MANS)
|
||||
|
||||
.m.c:
|
||||
awk -f $(srcdir)/gen-c-prog.awk > ./$*.c \
|
||||
@ -61,13 +60,13 @@ man_MANS = gprof.1
|
||||
# Build the man page from the texinfo file
|
||||
# The sed command removes the no-adjust Nroff command so that
|
||||
# the man output looks standard.
|
||||
$(srcdir)/gprof.1: $(srcdir)/gprof.texi
|
||||
touch $(srcdir)/gprof.1
|
||||
gprof.1: $(srcdir)/gprof.texi
|
||||
touch $@
|
||||
-$(TEXI2POD) $(MANCONF) -Dgprof < $(srcdir)/gprof.texi > gprof.pod
|
||||
-($(POD2MAN) gprof.pod | \
|
||||
sed -e '/^.if n .na/d' > $(srcdir)/gprof.1.T$$$$ && \
|
||||
mv -f $(srcdir)/gprof.1.T$$$$ $(srcdir)/gprof.1) || \
|
||||
(rm -f $(srcdir)/gprof.1.T$$$$ && exit 1)
|
||||
sed -e '/^.if n .na/d' > $@.T$$$$ && \
|
||||
mv -f $@.T$$$$ $@) || \
|
||||
(rm -f $@.T$$$$ && exit 1)
|
||||
rm -f gprof.pod
|
||||
|
||||
# Targets to rebuild dependencies in this Makefile.
|
||||
|
@ -135,9 +135,8 @@ noinst_HEADERS = \
|
||||
search_list.h source.h sym_ids.h symtab.h utils.h
|
||||
|
||||
|
||||
EXTRA_DIST = flat_bl.c bsd_callg_bl.c fsf_callg_bl.c bbconv.pl
|
||||
|
||||
BUILT_SOURCES = flat_bl.c bsd_callg_bl.c fsf_callg_bl.c
|
||||
EXTRA_DIST = $(BUILT_SOURCES) bbconv.pl $(man_MANS)
|
||||
|
||||
POTFILES = $(sources) $(noinst_HEADERS)
|
||||
|
||||
@ -193,7 +192,7 @@ acconfig.h acinclude.m4 aclocal.m4 configure configure.in gconfig.in
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
TAR = tar
|
||||
TAR = gtar
|
||||
GZIP_ENV = --best
|
||||
SOURCES = $(gprof_SOURCES)
|
||||
OBJECTS = $(gprof_OBJECTS)
|
||||
@ -712,7 +711,7 @@ distclean-generic clean-generic maintainer-clean-generic clean \
|
||||
mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
diststuff: $(BUILT_SOURCES) info
|
||||
diststuff: $(BUILT_SOURCES) info $(man_MANS)
|
||||
|
||||
.m.c:
|
||||
awk -f $(srcdir)/gen-c-prog.awk > ./$*.c \
|
||||
@ -725,13 +724,13 @@ po/POTFILES.in: @MAINT@ Makefile
|
||||
# Build the man page from the texinfo file
|
||||
# The sed command removes the no-adjust Nroff command so that
|
||||
# the man output looks standard.
|
||||
$(srcdir)/gprof.1: $(srcdir)/gprof.texi
|
||||
touch $(srcdir)/gprof.1
|
||||
gprof.1: $(srcdir)/gprof.texi
|
||||
touch $@
|
||||
-$(TEXI2POD) $(MANCONF) -Dgprof < $(srcdir)/gprof.texi > gprof.pod
|
||||
-($(POD2MAN) gprof.pod | \
|
||||
sed -e '/^.if n .na/d' > $(srcdir)/gprof.1.T$$$$ && \
|
||||
mv -f $(srcdir)/gprof.1.T$$$$ $(srcdir)/gprof.1) || \
|
||||
(rm -f $(srcdir)/gprof.1.T$$$$ && exit 1)
|
||||
sed -e '/^.if n .na/d' > $@.T$$$$ && \
|
||||
mv -f $@.T$$$$ $@) || \
|
||||
(rm -f $@.T$$$$ && exit 1)
|
||||
rm -f gprof.pod
|
||||
|
||||
# Targets to rebuild dependencies in this Makefile.
|
||||
|
593
gprof/gprof.1
593
gprof/gprof.1
@ -1,593 +0,0 @@
|
||||
.\" Automatically generated by Pod::Man version 1.02
|
||||
.\" Tue Jun 12 14:06:00 2001
|
||||
.\"
|
||||
.\" Standard preamble:
|
||||
.\" ======================================================================
|
||||
.de Sh \" Subsection heading
|
||||
.br
|
||||
.if t .Sp
|
||||
.ne 5
|
||||
.PP
|
||||
\fB\\$1\fR
|
||||
.PP
|
||||
..
|
||||
.de Sp \" Vertical space (when we can't use .PP)
|
||||
.if t .sp .5v
|
||||
.if n .sp
|
||||
..
|
||||
.de Ip \" List item
|
||||
.br
|
||||
.ie \\n(.$>=3 .ne \\$3
|
||||
.el .ne 3
|
||||
.IP "\\$1" \\$2
|
||||
..
|
||||
.de Vb \" Begin verbatim text
|
||||
.ft CW
|
||||
.nf
|
||||
.ne \\$1
|
||||
..
|
||||
.de Ve \" End verbatim text
|
||||
.ft R
|
||||
|
||||
.fi
|
||||
..
|
||||
.\" Set up some character translations and predefined strings. \*(-- will
|
||||
.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
|
||||
.\" double quote, and \*(R" will give a right double quote. | will give a
|
||||
.\" real vertical bar. \*(C+ will give a nicer C++. Capital omega is used
|
||||
.\" to do unbreakable dashes and therefore won't be available. \*(C` and
|
||||
.\" \*(C' expand to `' in nroff, nothing in troff, for use with C<>
|
||||
.tr \(*W-|\(bv\*(Tr
|
||||
.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
|
||||
.ie n \{\
|
||||
. ds -- \(*W-
|
||||
. ds PI pi
|
||||
. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
|
||||
. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch
|
||||
. ds L" ""
|
||||
. ds R" ""
|
||||
. ds C` `
|
||||
. ds C' '
|
||||
'br\}
|
||||
.el\{\
|
||||
. ds -- \|\(em\|
|
||||
. ds PI \(*p
|
||||
. ds L" ``
|
||||
. ds R" ''
|
||||
'br\}
|
||||
.\"
|
||||
.\" If the F register is turned on, we'll generate index entries on stderr
|
||||
.\" for titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and
|
||||
.\" index entries marked with X<> in POD. Of course, you'll have to process
|
||||
.\" the output yourself in some meaningful fashion.
|
||||
.if \nF \{\
|
||||
. de IX
|
||||
. tm Index:\\$1\t\\n%\t"\\$2"
|
||||
. .
|
||||
. nr % 0
|
||||
. rr F
|
||||
.\}
|
||||
.\"
|
||||
.\" For nroff, turn off justification. Always turn off hyphenation; it
|
||||
.\" makes way too many mistakes in technical documents.
|
||||
.hy 0
|
||||
.\"
|
||||
.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
|
||||
.\" Fear. Run. Save yourself. No user-serviceable parts.
|
||||
.bd B 3
|
||||
. \" fudge factors for nroff and troff
|
||||
.if n \{\
|
||||
. ds #H 0
|
||||
. ds #V .8m
|
||||
. ds #F .3m
|
||||
. ds #[ \f1
|
||||
. ds #] \fP
|
||||
.\}
|
||||
.if t \{\
|
||||
. ds #H ((1u-(\\\\n(.fu%2u))*.13m)
|
||||
. ds #V .6m
|
||||
. ds #F 0
|
||||
. ds #[ \&
|
||||
. ds #] \&
|
||||
.\}
|
||||
. \" simple accents for nroff and troff
|
||||
.if n \{\
|
||||
. ds ' \&
|
||||
. ds ` \&
|
||||
. ds ^ \&
|
||||
. ds , \&
|
||||
. ds ~ ~
|
||||
. ds /
|
||||
.\}
|
||||
.if t \{\
|
||||
. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
|
||||
. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
|
||||
. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
|
||||
. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
|
||||
. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
|
||||
. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
|
||||
.\}
|
||||
. \" troff and (daisy-wheel) nroff accents
|
||||
.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
|
||||
.ds 8 \h'\*(#H'\(*b\h'-\*(#H'
|
||||
.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
|
||||
.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
|
||||
.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
|
||||
.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
|
||||
.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
|
||||
.ds ae a\h'-(\w'a'u*4/10)'e
|
||||
.ds Ae A\h'-(\w'A'u*4/10)'E
|
||||
. \" corrections for vroff
|
||||
.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
|
||||
.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
|
||||
. \" for low resolution devices (crt and lpr)
|
||||
.if \n(.H>23 .if \n(.V>19 \
|
||||
\{\
|
||||
. ds : e
|
||||
. ds 8 ss
|
||||
. ds o a
|
||||
. ds d- d\h'-1'\(ga
|
||||
. ds D- D\h'-1'\(hy
|
||||
. ds th \o'bp'
|
||||
. ds Th \o'LP'
|
||||
. ds ae ae
|
||||
. ds Ae AE
|
||||
.\}
|
||||
.rm #[ #] #H #V #F C
|
||||
.\" ======================================================================
|
||||
.\"
|
||||
.IX Title "GPROF 1"
|
||||
.TH GPROF 1 "binutils-2.11.90" "2001-06-12" "GNU"
|
||||
.UC
|
||||
.SH "NAME"
|
||||
gprof \- display call graph profile data
|
||||
.SH "SYNOPSIS"
|
||||
.IX Header "SYNOPSIS"
|
||||
gprof [ \-[abcDhilLsTvwxyz] ] [ \-[ACeEfFJnNOpPqQZ][\fIname\fR] ]
|
||||
[ \-I \fIdirs\fR ] [ \-d[\fInum\fR] ] [ \-k \fIfrom/to\fR ]
|
||||
[ \-m \fImin-count\fR ] [ \-t \fItable-length\fR ]
|
||||
[ \-\-[no-]annotated-source[=\fIname\fR] ]
|
||||
[ \-\-[no-]exec-counts[=\fIname\fR] ]
|
||||
[ \-\-[no-]flat-profile[=\fIname\fR] ] [ \-\-[no-]graph[=\fIname\fR] ]
|
||||
[ \-\-[no-]time=\fIname\fR] [ \-\-all-lines ] [ \-\-brief ]
|
||||
[ \-\-debug[=\fIlevel\fR] ] [ \-\-function-ordering ]
|
||||
[ \-\-file-ordering ] [ \-\-directory-path=\fIdirs\fR ]
|
||||
[ \-\-display-unused-functions ] [ \-\-file-format=\fIname\fR ]
|
||||
[ \-\-file-info ] [ \-\-help ] [ \-\-line ] [ \-\-min-count=\fIn\fR ]
|
||||
[ \-\-no-static ] [ \-\-print-path ] [ \-\-separate-files ]
|
||||
[ \-\-static-call-graph ] [ \-\-sum ] [ \-\-table-length=\fIlen\fR ]
|
||||
[ \-\-traditional ] [ \-\-version ] [ \-\-width=\fIn\fR ]
|
||||
[ \-\-ignore-non-functions ] [ \-\-demangle[=\fI\s-1STYLE\s0\fR] ]
|
||||
[ \-\-no-demangle ] [ \fIimage-file\fR ] [ \fIprofile-file\fR ... ]
|
||||
.SH "DESCRIPTION"
|
||||
.IX Header "DESCRIPTION"
|
||||
\&\f(CW\*(C`gprof\*(C'\fR produces an execution profile of C, Pascal, or Fortran77
|
||||
programs. The effect of called routines is incorporated in the profile
|
||||
of each caller. The profile data is taken from the call graph profile file
|
||||
(\fIgmon.out\fR default) which is created by programs
|
||||
that are compiled with the \fB\-pg\fR option of
|
||||
\&\f(CW\*(C`cc\*(C'\fR, \f(CW\*(C`pc\*(C'\fR, and \f(CW\*(C`f77\*(C'\fR.
|
||||
The \fB\-pg\fR option also links in versions of the library routines
|
||||
that are compiled for profiling. \f(CW\*(C`Gprof\*(C'\fR reads the given object
|
||||
file (the default is \f(CW\*(C`a.out\*(C'\fR) and establishes the relation between
|
||||
its symbol table and the call graph profile from \fIgmon.out\fR.
|
||||
If more than one profile file is specified, the \f(CW\*(C`gprof\*(C'\fR
|
||||
output shows the sum of the profile information in the given profile files.
|
||||
.PP
|
||||
\&\f(CW\*(C`Gprof\*(C'\fR calculates the amount of time spent in each routine.
|
||||
Next, these times are propagated along the edges of the call graph.
|
||||
Cycles are discovered, and calls into a cycle are made to share the time
|
||||
of the cycle.
|
||||
.PP
|
||||
Several forms of output are available from the analysis.
|
||||
.PP
|
||||
The \fIflat profile\fR shows how much time your program spent in each function,
|
||||
and how many times that function was called. If you simply want to know
|
||||
which functions burn most of the cycles, it is stated concisely here.
|
||||
.PP
|
||||
The \fIcall graph\fR shows, for each function, which functions called it, which
|
||||
other functions it called, and how many times. There is also an estimate
|
||||
of how much time was spent in the subroutines of each function. This can
|
||||
suggest places where you might try to eliminate function calls that use a
|
||||
lot of time.
|
||||
.PP
|
||||
The \fIannotated source\fR listing is a copy of the program's
|
||||
source code, labeled with the number of times each line of the
|
||||
program was executed.
|
||||
.SH "OPTIONS"
|
||||
.IX Header "OPTIONS"
|
||||
These options specify which of several output formats
|
||||
\&\f(CW\*(C`gprof\*(C'\fR should produce.
|
||||
.PP
|
||||
Many of these options take an optional \fIsymspec\fR to specify
|
||||
functions to be included or excluded. These options can be
|
||||
specified multiple times, with different symspecs, to include
|
||||
or exclude sets of symbols.
|
||||
.PP
|
||||
Specifying any of these options overrides the default (\fB\-p \-q\fR),
|
||||
which prints a flat profile and call graph analysis
|
||||
for all functions.
|
||||
.Ip "\f(CW\*(C`\-A[\f(CIsymspec\f(CW]\*(C'\fR" 4
|
||||
.IX Item "-A[symspec]"
|
||||
.Ip "\f(CW\*(C`\-\-annotated\-source[=\f(CIsymspec\f(CW]\*(C'\fR" 4
|
||||
.IX Item "--annotated-source[=symspec]"
|
||||
The \fB\-A\fR option causes \f(CW\*(C`gprof\*(C'\fR to print annotated source code.
|
||||
If \fIsymspec\fR is specified, print output only for matching symbols.
|
||||
.Ip "\f(CW\*(C`\-b\*(C'\fR" 4
|
||||
.IX Item "-b"
|
||||
.Ip "\f(CW\*(C`\-\-brief\*(C'\fR" 4
|
||||
.IX Item "--brief"
|
||||
If the \fB\-b\fR option is given, \f(CW\*(C`gprof\*(C'\fR doesn't print the
|
||||
verbose blurbs that try to explain the meaning of all of the fields in
|
||||
the tables. This is useful if you intend to print out the output, or
|
||||
are tired of seeing the blurbs.
|
||||
.Ip "\f(CW\*(C`\-C[\f(CIsymspec\f(CW]\*(C'\fR" 4
|
||||
.IX Item "-C[symspec]"
|
||||
.Ip "\f(CW\*(C`\-\-exec\-counts[=\f(CIsymspec\f(CW]\*(C'\fR" 4
|
||||
.IX Item "--exec-counts[=symspec]"
|
||||
The \fB\-C\fR option causes \f(CW\*(C`gprof\*(C'\fR to
|
||||
print a tally of functions and the number of times each was called.
|
||||
If \fIsymspec\fR is specified, print tally only for matching symbols.
|
||||
.Sp
|
||||
If the profile data file contains basic-block count records, specifying
|
||||
the \fB\-l\fR option, along with \fB\-C\fR, will cause basic-block
|
||||
execution counts to be tallied and displayed.
|
||||
.Ip "\f(CW\*(C`\-i\*(C'\fR" 4
|
||||
.IX Item "-i"
|
||||
.Ip "\f(CW\*(C`\-\-file\-info\*(C'\fR" 4
|
||||
.IX Item "--file-info"
|
||||
The \fB\-i\fR option causes \f(CW\*(C`gprof\*(C'\fR to display summary information
|
||||
about the profile data \fIfile\fR\|(s) and then exit. The number of histogram,
|
||||
call graph, and basic-block count records is displayed.
|
||||
.Ip "\f(CW\*(C`\-I \f(CIdirs\f(CW\*(C'\fR" 4
|
||||
.IX Item "-I dirs"
|
||||
.Ip "\f(CW\*(C`\-\-directory\-path=\f(CIdirs\f(CW\*(C'\fR" 4
|
||||
.IX Item "--directory-path=dirs"
|
||||
The \fB\-I\fR option specifies a list of search directories in
|
||||
which to find source files. Environment variable \fI\s-1GPROF_PATH\s0\fR
|
||||
can also be used to convey this information.
|
||||
Used mostly for annotated source output.
|
||||
.Ip "\f(CW\*(C`\-J[\f(CIsymspec\f(CW]\*(C'\fR" 4
|
||||
.IX Item "-J[symspec]"
|
||||
.Ip "\f(CW\*(C`\-\-no\-annotated\-source[=\f(CIsymspec\f(CW]\*(C'\fR" 4
|
||||
.IX Item "--no-annotated-source[=symspec]"
|
||||
The \fB\-J\fR option causes \f(CW\*(C`gprof\*(C'\fR not to
|
||||
print annotated source code.
|
||||
If \fIsymspec\fR is specified, \f(CW\*(C`gprof\*(C'\fR prints annotated source,
|
||||
but excludes matching symbols.
|
||||
.Ip "\f(CW\*(C`\-L\*(C'\fR" 4
|
||||
.IX Item "-L"
|
||||
.Ip "\f(CW\*(C`\-\-print\-path\*(C'\fR" 4
|
||||
.IX Item "--print-path"
|
||||
Normally, source filenames are printed with the path
|
||||
component suppressed. The \fB\-L\fR option causes \f(CW\*(C`gprof\*(C'\fR
|
||||
to print the full pathname of
|
||||
source filenames, which is determined
|
||||
from symbolic debugging information in the image file
|
||||
and is relative to the directory in which the compiler
|
||||
was invoked.
|
||||
.Ip "\f(CW\*(C`\-p[\f(CIsymspec\f(CW]\*(C'\fR" 4
|
||||
.IX Item "-p[symspec]"
|
||||
.Ip "\f(CW\*(C`\-\-flat\-profile[=\f(CIsymspec\f(CW]\*(C'\fR" 4
|
||||
.IX Item "--flat-profile[=symspec]"
|
||||
The \fB\-p\fR option causes \f(CW\*(C`gprof\*(C'\fR to print a flat profile.
|
||||
If \fIsymspec\fR is specified, print flat profile only for matching symbols.
|
||||
.Ip "\f(CW\*(C`\-P[\f(CIsymspec\f(CW]\*(C'\fR" 4
|
||||
.IX Item "-P[symspec]"
|
||||
.Ip "\f(CW\*(C`\-\-no\-flat\-profile[=\f(CIsymspec\f(CW]\*(C'\fR" 4
|
||||
.IX Item "--no-flat-profile[=symspec]"
|
||||
The \fB\-P\fR option causes \f(CW\*(C`gprof\*(C'\fR to suppress printing a flat profile.
|
||||
If \fIsymspec\fR is specified, \f(CW\*(C`gprof\*(C'\fR prints a flat profile,
|
||||
but excludes matching symbols.
|
||||
.Ip "\f(CW\*(C`\-q[\f(CIsymspec\f(CW]\*(C'\fR" 4
|
||||
.IX Item "-q[symspec]"
|
||||
.Ip "\f(CW\*(C`\-\-graph[=\f(CIsymspec\f(CW]\*(C'\fR" 4
|
||||
.IX Item "--graph[=symspec]"
|
||||
The \fB\-q\fR option causes \f(CW\*(C`gprof\*(C'\fR to print the call graph analysis.
|
||||
If \fIsymspec\fR is specified, print call graph only for matching symbols
|
||||
and their children.
|
||||
.Ip "\f(CW\*(C`\-Q[\f(CIsymspec\f(CW]\*(C'\fR" 4
|
||||
.IX Item "-Q[symspec]"
|
||||
.Ip "\f(CW\*(C`\-\-no\-graph[=\f(CIsymspec\f(CW]\*(C'\fR" 4
|
||||
.IX Item "--no-graph[=symspec]"
|
||||
The \fB\-Q\fR option causes \f(CW\*(C`gprof\*(C'\fR to suppress printing the
|
||||
call graph.
|
||||
If \fIsymspec\fR is specified, \f(CW\*(C`gprof\*(C'\fR prints a call graph,
|
||||
but excludes matching symbols.
|
||||
.Ip "\f(CW\*(C`\-y\*(C'\fR" 4
|
||||
.IX Item "-y"
|
||||
.Ip "\f(CW\*(C`\-\-separate\-files\*(C'\fR" 4
|
||||
.IX Item "--separate-files"
|
||||
This option affects annotated source output only.
|
||||
Normally, \f(CW\*(C`gprof\*(C'\fR prints annotated source files
|
||||
to standard-output. If this option is specified,
|
||||
annotated source for a file named \fIpath/\fIfilename\fI\fR
|
||||
is generated in the file \fI\fIfilename\fI\-ann\fR. If the underlying
|
||||
filesystem would truncate \fI\fIfilename\fI\-ann\fR so that it
|
||||
overwrites the original \fI\fIfilename\fI\fR, \f(CW\*(C`gprof\*(C'\fR generates
|
||||
annotated source in the file \fI\fIfilename\fI.ann\fR instead (if the
|
||||
original file name has an extension, that extension is \fIreplaced\fR
|
||||
with \fI.ann\fR).
|
||||
.Ip "\f(CW\*(C`\-Z[\f(CIsymspec\f(CW]\*(C'\fR" 4
|
||||
.IX Item "-Z[symspec]"
|
||||
.Ip "\f(CW\*(C`\-\-no\-exec\-counts[=\f(CIsymspec\f(CW]\*(C'\fR" 4
|
||||
.IX Item "--no-exec-counts[=symspec]"
|
||||
The \fB\-Z\fR option causes \f(CW\*(C`gprof\*(C'\fR not to
|
||||
print a tally of functions and the number of times each was called.
|
||||
If \fIsymspec\fR is specified, print tally, but exclude matching symbols.
|
||||
.Ip "\f(CW\*(C`\-\-function\-ordering\*(C'\fR" 4
|
||||
.IX Item "--function-ordering"
|
||||
The \fB\*(--function-ordering\fR option causes \f(CW\*(C`gprof\*(C'\fR to print a
|
||||
suggested function ordering for the program based on profiling data.
|
||||
This option suggests an ordering which may improve paging, tlb and
|
||||
cache behavior for the program on systems which support arbitrary
|
||||
ordering of functions in an executable.
|
||||
.Sp
|
||||
The exact details of how to force the linker to place functions
|
||||
in a particular order is system dependent and out of the scope of this
|
||||
manual.
|
||||
.Ip "\f(CW\*(C`\-\-file\-ordering \f(CImap_file\f(CW\*(C'\fR" 4
|
||||
.IX Item "--file-ordering map_file"
|
||||
The \fB\*(--file-ordering\fR option causes \f(CW\*(C`gprof\*(C'\fR to print a
|
||||
suggested .o link line ordering for the program based on profiling data.
|
||||
This option suggests an ordering which may improve paging, tlb and
|
||||
cache behavior for the program on systems which do not support arbitrary
|
||||
ordering of functions in an executable.
|
||||
.Sp
|
||||
Use of the \fB\-a\fR argument is highly recommended with this option.
|
||||
.Sp
|
||||
The \fImap_file\fR argument is a pathname to a file which provides
|
||||
function name to object file mappings. The format of the file is similar to
|
||||
the output of the program \f(CW\*(C`nm\*(C'\fR.
|
||||
.Sp
|
||||
.Vb 8
|
||||
\& c-parse.o:00000000 T yyparse
|
||||
\& c-parse.o:00000004 C yyerrflag
|
||||
\& c-lang.o:00000000 T maybe_objc_method_name
|
||||
\& c-lang.o:00000000 T print_lang_statistics
|
||||
\& c-lang.o:00000000 T recognize_objc_keyword
|
||||
\& c-decl.o:00000000 T print_lang_identifier
|
||||
\& c-decl.o:00000000 T print_lang_type
|
||||
\& ...
|
||||
.Ve
|
||||
To create a \fImap_file\fR with \s-1GNU\s0 \f(CW\*(C`nm\*(C'\fR, type a command like
|
||||
\&\f(CW\*(C`nm \-\-extern\-only \-\-defined\-only \-v \-\-print\-file\-name program\-name\*(C'\fR.
|
||||
.Ip "\f(CW\*(C`\-T\*(C'\fR" 4
|
||||
.IX Item "-T"
|
||||
.Ip "\f(CW\*(C`\-\-traditional\*(C'\fR" 4
|
||||
.IX Item "--traditional"
|
||||
The \fB\-T\fR option causes \f(CW\*(C`gprof\*(C'\fR to print its output in
|
||||
``traditional'' \s-1BSD\s0 style.
|
||||
.Ip "\f(CW\*(C`\-w \f(CIwidth\f(CW\*(C'\fR" 4
|
||||
.IX Item "-w width"
|
||||
.Ip "\f(CW\*(C`\-\-width=\f(CIwidth\f(CW\*(C'\fR" 4
|
||||
.IX Item "--width=width"
|
||||
Sets width of output lines to \fIwidth\fR.
|
||||
Currently only used when printing the function index at the bottom
|
||||
of the call graph.
|
||||
.Ip "\f(CW\*(C`\-x\*(C'\fR" 4
|
||||
.IX Item "-x"
|
||||
.Ip "\f(CW\*(C`\-\-all\-lines\*(C'\fR" 4
|
||||
.IX Item "--all-lines"
|
||||
This option affects annotated source output only.
|
||||
By default, only the lines at the beginning of a basic-block
|
||||
are annotated. If this option is specified, every line in
|
||||
a basic-block is annotated by repeating the annotation for the
|
||||
first line. This behavior is similar to \f(CW\*(C`tcov\*(C'\fR's \fB\-a\fR.
|
||||
.Ip "\f(CW\*(C`\-\-demangle[=\f(CIstyle\f(CW]\*(C'\fR" 4
|
||||
.IX Item "--demangle[=style]"
|
||||
.Ip "\f(CW\*(C`\-\-no\-demangle\*(C'\fR" 4
|
||||
.IX Item "--no-demangle"
|
||||
These options control whether \*(C+ symbol names should be demangled when
|
||||
printing output. The default is to demangle symbols. The
|
||||
\&\f(CW\*(C`\-\-no\-demangle\*(C'\fR option may be used to turn off demangling. Different
|
||||
compilers have different mangling styles. The optional demangling style
|
||||
argument can be used to choose an appropriate demangling style for your
|
||||
compiler.
|
||||
.Sh "Analysis Options"
|
||||
.IX Subsection "Analysis Options"
|
||||
.Ip "\f(CW\*(C`\-a\*(C'\fR" 4
|
||||
.IX Item "-a"
|
||||
.Ip "\f(CW\*(C`\-\-no\-static\*(C'\fR" 4
|
||||
.IX Item "--no-static"
|
||||
The \fB\-a\fR option causes \f(CW\*(C`gprof\*(C'\fR to suppress the printing of
|
||||
statically declared (private) functions. (These are functions whose
|
||||
names are not listed as global, and which are not visible outside the
|
||||
file/function/block where they were defined.) Time spent in these
|
||||
functions, calls to/from them, etc, will all be attributed to the
|
||||
function that was loaded directly before it in the executable file.
|
||||
This option affects both the flat profile and the call graph.
|
||||
.Ip "\f(CW\*(C`\-c\*(C'\fR" 4
|
||||
.IX Item "-c"
|
||||
.Ip "\f(CW\*(C`\-\-static\-call\-graph\*(C'\fR" 4
|
||||
.IX Item "--static-call-graph"
|
||||
The \fB\-c\fR option causes the call graph of the program to be
|
||||
augmented by a heuristic which examines the text space of the object
|
||||
file and identifies function calls in the binary machine code.
|
||||
Since normal call graph records are only generated when functions are
|
||||
entered, this option identifies children that could have been called,
|
||||
but never were. Calls to functions that were not compiled with
|
||||
profiling enabled are also identified, but only if symbol table
|
||||
entries are present for them.
|
||||
Calls to dynamic library routines are typically \fInot\fR found
|
||||
by this option.
|
||||
Parents or children identified via this heuristic
|
||||
are indicated in the call graph with call counts of \fB0\fR.
|
||||
.Ip "\f(CW\*(C`\-D\*(C'\fR" 4
|
||||
.IX Item "-D"
|
||||
.Ip "\f(CW\*(C`\-\-ignore\-non\-functions\*(C'\fR" 4
|
||||
.IX Item "--ignore-non-functions"
|
||||
The \fB\-D\fR option causes \f(CW\*(C`gprof\*(C'\fR to ignore symbols which
|
||||
are not known to be functions. This option will give more accurate
|
||||
profile data on systems where it is supported (Solaris and \s-1HPUX\s0 for
|
||||
example).
|
||||
.Ip "\f(CW\*(C`\-k \f(CIfrom\f(CW/\f(CIto\f(CW\*(C'\fR" 4
|
||||
.IX Item "-k from/to"
|
||||
The \fB\-k\fR option allows you to delete from the call graph any arcs from
|
||||
symbols matching symspec \fIfrom\fR to those matching symspec \fIto\fR.
|
||||
.Ip "\f(CW\*(C`\-l\*(C'\fR" 4
|
||||
.IX Item "-l"
|
||||
.Ip "\f(CW\*(C`\-\-line\*(C'\fR" 4
|
||||
.IX Item "--line"
|
||||
The \fB\-l\fR option enables line-by-line profiling, which causes
|
||||
histogram hits to be charged to individual source code lines,
|
||||
instead of functions.
|
||||
If the program was compiled with basic-block counting enabled,
|
||||
this option will also identify how many times each line of
|
||||
code was executed.
|
||||
While line-by-line profiling can help isolate where in a large function
|
||||
a program is spending its time, it also significantly increases
|
||||
the running time of \f(CW\*(C`gprof\*(C'\fR, and magnifies statistical
|
||||
inaccuracies.
|
||||
.Ip "\f(CW\*(C`\-m \f(CInum\f(CW\*(C'\fR" 4
|
||||
.IX Item "-m num"
|
||||
.Ip "\f(CW\*(C`\-\-min\-count=\f(CInum\f(CW\*(C'\fR" 4
|
||||
.IX Item "--min-count=num"
|
||||
This option affects execution count output only.
|
||||
Symbols that are executed less than \fInum\fR times are suppressed.
|
||||
.Ip "\f(CW\*(C`\-n[\f(CIsymspec\f(CW]\*(C'\fR" 4
|
||||
.IX Item "-n[symspec]"
|
||||
.Ip "\f(CW\*(C`\-\-time[=\f(CIsymspec\f(CW]\*(C'\fR" 4
|
||||
.IX Item "--time[=symspec]"
|
||||
The \fB\-n\fR option causes \f(CW\*(C`gprof\*(C'\fR, in its call graph analysis,
|
||||
to only propagate times for symbols matching \fIsymspec\fR.
|
||||
.Ip "\f(CW\*(C`\-N[\f(CIsymspec\f(CW]\*(C'\fR" 4
|
||||
.IX Item "-N[symspec]"
|
||||
.Ip "\f(CW\*(C`\-\-no\-time[=\f(CIsymspec\f(CW]\*(C'\fR" 4
|
||||
.IX Item "--no-time[=symspec]"
|
||||
The \fB\-n\fR option causes \f(CW\*(C`gprof\*(C'\fR, in its call graph analysis,
|
||||
not to propagate times for symbols matching \fIsymspec\fR.
|
||||
.Ip "\f(CW\*(C`\-z\*(C'\fR" 4
|
||||
.IX Item "-z"
|
||||
.Ip "\f(CW\*(C`\-\-display\-unused\-functions\*(C'\fR" 4
|
||||
.IX Item "--display-unused-functions"
|
||||
If you give the \fB\-z\fR option, \f(CW\*(C`gprof\*(C'\fR will mention all
|
||||
functions in the flat profile, even those that were never called, and
|
||||
that had no time spent in them. This is useful in conjunction with the
|
||||
\&\fB\-c\fR option for discovering which routines were never called.
|
||||
.Sh "Miscellaneous Options"
|
||||
.IX Subsection "Miscellaneous Options"
|
||||
.Ip "\f(CW\*(C`\-d[\f(CInum\f(CW]\*(C'\fR" 4
|
||||
.IX Item "-d[num]"
|
||||
.Ip "\f(CW\*(C`\-\-debug[=\f(CInum\f(CW]\*(C'\fR" 4
|
||||
.IX Item "--debug[=num]"
|
||||
The \fB\-d\fR \fInum\fR option specifies debugging options.
|
||||
If \fInum\fR is not specified, enable all debugging.
|
||||
.Ip "\f(CW\*(C`\-O\f(CIname\f(CW\*(C'\fR" 4
|
||||
.IX Item "-Oname"
|
||||
.Ip "\f(CW\*(C`\-\-file\-format=\f(CIname\f(CW\*(C'\fR" 4
|
||||
.IX Item "--file-format=name"
|
||||
Selects the format of the profile data files. Recognized formats are
|
||||
\&\fBauto\fR (the default), \fBbsd\fR, \fB4.4bsd\fR, \fBmagic\fR, and
|
||||
\&\fBprof\fR (not yet supported).
|
||||
.Ip "\f(CW\*(C`\-s\*(C'\fR" 4
|
||||
.IX Item "-s"
|
||||
.Ip "\f(CW\*(C`\-\-sum\*(C'\fR" 4
|
||||
.IX Item "--sum"
|
||||
The \fB\-s\fR option causes \f(CW\*(C`gprof\*(C'\fR to summarize the information
|
||||
in the profile data files it read in, and write out a profile data
|
||||
file called \fIgmon.sum\fR, which contains all the information from
|
||||
the profile data files that \f(CW\*(C`gprof\*(C'\fR read in. The file \fIgmon.sum\fR
|
||||
may be one of the specified input files; the effect of this is to
|
||||
merge the data in the other input files into \fIgmon.sum\fR.
|
||||
.Sp
|
||||
Eventually you can run \f(CW\*(C`gprof\*(C'\fR again without \fB\-s\fR to analyze the
|
||||
cumulative data in the file \fIgmon.sum\fR.
|
||||
.Ip "\f(CW\*(C`\-v\*(C'\fR" 4
|
||||
.IX Item "-v"
|
||||
.Ip "\f(CW\*(C`\-\-version\*(C'\fR" 4
|
||||
.IX Item "--version"
|
||||
The \fB\-v\fR flag causes \f(CW\*(C`gprof\*(C'\fR to print the current version
|
||||
number, and then exit.
|
||||
.Sh "Deprecated Options"
|
||||
.IX Subsection "Deprecated Options"
|
||||
These options have been replaced with newer versions that use symspecs.
|
||||
.Ip "\f(CW\*(C`\-e \f(CIfunction_name\f(CW\*(C'\fR" 4
|
||||
.IX Item "-e function_name"
|
||||
The \fB\-e\fR \fIfunction\fR option tells \f(CW\*(C`gprof\*(C'\fR to not print
|
||||
information about the function \fIfunction_name\fR (and its
|
||||
children...) in the call graph. The function will still be listed
|
||||
as a child of any functions that call it, but its index number will be
|
||||
shown as \fB[not printed]\fR. More than one \fB\-e\fR option may be
|
||||
given; only one \fIfunction_name\fR may be indicated with each \fB\-e\fR
|
||||
option.
|
||||
.Ip "\f(CW\*(C`\-E \f(CIfunction_name\f(CW\*(C'\fR" 4
|
||||
.IX Item "-E function_name"
|
||||
The \f(CW\*(C`\-E \f(CIfunction\f(CW\*(C'\fR option works like the \f(CW\*(C`\-e\*(C'\fR option, but
|
||||
time spent in the function (and children who were not called from
|
||||
anywhere else), will not be used to compute the percentages-of-time for
|
||||
the call graph. More than one \fB\-E\fR option may be given; only one
|
||||
\&\fIfunction_name\fR may be indicated with each \fB\-E\fR option.
|
||||
.Ip "\f(CW\*(C`\-f \f(CIfunction_name\f(CW\*(C'\fR" 4
|
||||
.IX Item "-f function_name"
|
||||
The \fB\-f\fR \fIfunction\fR option causes \f(CW\*(C`gprof\*(C'\fR to limit the
|
||||
call graph to the function \fIfunction_name\fR and its children (and
|
||||
their children...). More than one \fB\-f\fR option may be given;
|
||||
only one \fIfunction_name\fR may be indicated with each \fB\-f\fR
|
||||
option.
|
||||
.Ip "\f(CW\*(C`\-F \f(CIfunction_name\f(CW\*(C'\fR" 4
|
||||
.IX Item "-F function_name"
|
||||
The \fB\-F\fR \fIfunction\fR option works like the \f(CW\*(C`\-f\*(C'\fR option, but
|
||||
only time spent in the function and its children (and their
|
||||
children...) will be used to determine total-time and
|
||||
percentages-of-time for the call graph. More than one \fB\-F\fR option
|
||||
may be given; only one \fIfunction_name\fR may be indicated with each
|
||||
\&\fB\-F\fR option. The \fB\-F\fR option overrides the \fB\-E\fR option.
|
||||
.SH "FILES"
|
||||
.IX Header "FILES"
|
||||
.Ip "\f(CW\*(C`\f(CIa.out\f(CW\*(C'\fR" 4
|
||||
.IX Item "a.out"
|
||||
the namelist and text space.
|
||||
.Ip "\f(CW\*(C`\f(CIgmon.out\f(CW\*(C'\fR" 4
|
||||
.IX Item "gmon.out"
|
||||
dynamic call graph and profile.
|
||||
.Ip "\f(CW\*(C`\f(CIgmon.sum\f(CW\*(C'\fR" 4
|
||||
.IX Item "gmon.sum"
|
||||
summarized dynamic call graph and profile.
|
||||
.SH "BUGS"
|
||||
.IX Header "BUGS"
|
||||
The granularity of the sampling is shown, but remains
|
||||
statistical at best.
|
||||
We assume that the time for each execution of a function
|
||||
can be expressed by the total time for the function divided
|
||||
by the number of times the function is called.
|
||||
Thus the time propagated along the call graph arcs to the function's
|
||||
parents is directly proportional to the number of times that
|
||||
arc is traversed.
|
||||
.PP
|
||||
Parents that are not themselves profiled will have the time of
|
||||
their profiled children propagated to them, but they will appear
|
||||
to be spontaneously invoked in the call graph listing, and will
|
||||
not have their time propagated further.
|
||||
Similarly, signal catchers, even though profiled, will appear
|
||||
to be spontaneous (although for more obscure reasons).
|
||||
Any profiled children of signal catchers should have their times
|
||||
propagated properly, unless the signal catcher was invoked during
|
||||
the execution of the profiling routine, in which case all is lost.
|
||||
.PP
|
||||
The profiled program must call \f(CW\*(C`exit\*(C'\fR(2)
|
||||
or return normally for the profiling information to be saved
|
||||
in the \fIgmon.out\fR file.
|
||||
.SH "SEE ALSO"
|
||||
.IX Header "SEE ALSO"
|
||||
\&\fImonitor\fR\|(3), \fIprofil\fR\|(2), \fIcc\fR\|(1), \fIprof\fR\|(1), and the Info entry for \fIgprof\fR.
|
||||
.PP
|
||||
``An Execution Profiler for Modular Programs'',
|
||||
by S. Graham, P. Kessler, M. McKusick;
|
||||
Software \- Practice and Experience,
|
||||
Vol. 13, pp. 671\-685, 1983.
|
||||
.PP
|
||||
``gprof: A Call Graph Execution Profiler'',
|
||||
by S. Graham, P. Kessler, M. McKusick;
|
||||
Proceedings of the \s-1SIGPLAN\s0 '82 Symposium on Compiler Construction,
|
||||
\&\s-1SIGPLAN\s0 Notices, Vol. 17, No 6, pp. 120\-126, June 1982.
|
||||
.SH "COPYRIGHT"
|
||||
.IX Header "COPYRIGHT"
|
||||
Copyright (C) 1988, 92, 97, 98, 99, 2000, 2001 Free Software Foundation, Inc.
|
||||
.PP
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the \s-1GNU\s0 Free Documentation License, Version 1.1
|
||||
or any later version published by the Free Software Foundation;
|
||||
with no Invariant Sections, with no Front-Cover Texts, and with no
|
||||
Back-Cover Texts. A copy of the license is included in the
|
||||
section entitled \*(L"\s-1GNU\s0 Free Documentation License\*(R".
|
Reference in New Issue
Block a user