aboutsummaryrefslogtreecommitdiff
path: root/gprofng/doc/gp-archive.texi
blob: d57380e0a25510d7277b57455a78a1d20b815183 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
@c ----------------------------------------------------------------------------
@c This is the Texinfo source file for the gp-archive man page.
@c
@c Author: Ruud van der Pas
@c ----------------------------------------------------------------------------
@ifset man
\input texinfo @c -*-texinfo-*-
@setfilename gp-archive
@settitle Archive gprofng experiment data
@include gp-macros.texi
@end ifset

@c ----------------------------------------------------------------------------
@c This is from the man-pages(7) man page
@c
@c "The list below shows conventional or suggested sections.  Most manual pages
@c  should include at least the highlighted sections.  Arrange a new manual
@c  page so that sections are placed in the order shown in the list."
@c
@c              NAME
@c              SYNOPSIS
@c              CONFIGURATION    [Normally only in Section 4]
@c              DESCRIPTION
@c              OPTIONS          [Normally only in Sections 1, 8]
@c              EXIT STATUS      [Normally only in Sections 1, 8]
@c              RETURN VALUE     [Normally only in Sections 2, 3]
@c              ERRORS           [Typically only in Sections 2, 3]
@c              ENVIRONMENT
@c              FILES
@c              VERSIONS         [Normally only in Sections 2, 3]
@c              ATTRIBUTES       [Normally only in Sections 2, 3]
@c              CONFORMING TO
@c              NOTES
@c              BUGS
@c              EXAMPLES
@c              AUTHORS          [Discouraged]
@c              REPORTING BUGS   [Not used in man-pages]
@c              COPYRIGHT        [Not used in man-pages]
@c              SEE ALSO
@c
@c This is what the texi2pod.pl tool recognizes:
@c
@c for $sect (qw(NAME SYNOPSIS TARGET DESCRIPTION OPTIONS ENVIRONMENT FILES
@c               BUGS NOTES FOOTNOTES SEEALSO AUTHOR COPYRIGHT)) {
@c
@c What is interesting is that it places "SEE ALSO" before "COPYRIGHT", which
@c makes sense and adhered to for the other formats.
@c ----------------------------------------------------------------------------

@c ----------------------------------------------------------------------------
@c NAME section
@c ----------------------------------------------------------------------------

@ManPageStart{NAME}
@c man begin NAME

gp-archive - Archive the associated application binaries and sources for a
gprofng experiment

@c man end
@ManPageEnd{}

@c ----------------------------------------------------------------------------
@c SYNOPSIS section
@c ----------------------------------------------------------------------------

@ManPageStart{SYNOPSIS}
@c man begin SYNOPSIS

@command{gprofng archive} [@var{option(s)}] @var{experiment}

@c man end
@ManPageEnd{}

@c ----------------------------------------------------------------------------
@c DESCRIPTION section
@c ----------------------------------------------------------------------------

@ManPageStart{DESCRIPTION}
@c man begin DESCRIPTION

Archive the associated application binaries and source files in a gprofng
experiment to make it self contained and portable.

By default, the binaries are archived as part of the data collection, but the
application source files are not archived.  Use this tool to change this and
afterwards archive additional components.

This tool has to be executed on the same system where the profiling data was
recorded.

@c man end
@ManPageEnd{}

@c ----------------------------------------------------------------------------
@c OPTIONS section
@c ----------------------------------------------------------------------------

@ManPageStart{OPTIONS}
@c man begin OPTIONS

@table @gcctabopt

@item --version
@ifclear man
@IndexSubentry{Options, @code{--version}}
@end ifclear

Print the version number and exit.

@item --help
@ifclear man
@IndexSubentry{Options, @code{--help}}
@end ifclear

Print usage information and exit.

@item -a @{off | on | ldobjects | src | usedldobjects | used[src]@}
@ifclear man
@IndexSubentry{Options, @code{-a}}
@end ifclear

Specify archiving of binaries and other files.  In addition to disable this
feature (@samp{off}), or enable archiving of all loadobjects and sources
(@samp{on}), the other choices support a more refined selection.

All of these choices enable archiving, but the keyword controls what exactly
is selected: all load objects (@samp{ldobjects}), all source files
(@samp{src}), the loadobjects associated with a program counter
(@samp{usedldobjects}), or the source files associated with a program counter
(@samp{used[src]}).  The default is @samp{-a ldobjects}.

@item -d @var{path}
@ifclear man
@IndexSubentry{Options, @code{-d}}
@end ifclear

The @var{path} is the absolute path to a common archive, which is a
directory that contains archived files.  If the directory does not
exist, then it will be created.  Files are saved in the common archive
directory, and a symbolic link is created in the experiment archive.

@item -F
@ifclear man
@IndexSubentry{Options, @code{-F}}
@end ifclear

Force writing, or rewriting of .archive files.  All archived files will be
removed and recreated, except if the @samp{-n} or @samp{-m} option is used,
or if the experiment is a subexperiment.

@item -m @var{regex}
@ifclear man
@IndexSubentry{Options, @code{-m}}
@end ifclear

Archive only those source, object, and debug info files whose full path name
matches the given POSIX compliant @var{regex} regular expression.

@item -n
@ifclear man
@IndexSubentry{Options, @code{-n}}
@end ifclear

Archive the named experiment only, not any of its descendants.

@item -q
@ifclear man
@IndexSubentry{Options, @code{-q}}
@end ifclear

Do not write any warnings to @file{stderr}.  Warnings are incorporated into
the .archive file in the experiment directory.  They are shown in the output
of the @command{gprofng display text} command.

@item -r @var{path}
@ifclear man
@IndexSubentry{Options, @code{-r}}
@end ifclear

This option specifies the location of a common archive.  The value is the
relative path to a common archive, which is a directory that contains
archived files.
If the directory does not exist, then it will be created.  Files are saved
in the common archive directory, and a symbolic link is created in the
experiment archive.

@item -s @var{selection}
@ifclear man
@IndexSubentry{Options, @code{-s}}
@end ifclear

Specify archiving of source files.  The allowed values for @var{selection} are:

@table @gcctabopt

@item no

Do not archive any source files.

@item all

Archive all source and object files that can be found.

@item used[src]

Archive source and object files for functions against which data was
recorded in the experiment, and that can be found.
@end table

By default, application source files are not archived into the experiment.
If the @samp{-s all}, or @samp{-s used} option is used, sources and object
files are archived.
These options also ensure that source files are available in the experiment,
even if the original source files have been modified, or are inaccessible
afterwards.

In case archive files cannot be found, use the @samp{addpath}, or
@samp{pathmap} command, or both, in an @file{.er.rc} file to specify the
location of the missing file(s).

@end table

@c man end
@ManPageEnd{}

@c ----------------------------------------------------------------------------
@c NOTES section
@c ----------------------------------------------------------------------------

@ManPageStart{NOTES}
@c man begin NOTES

@itemize @minus

@c ----------------------------------------------------------------------------
@item
Archiving of application binaries -
By default, binaries are archived automatically when an experiment is
created.  However, archiving does not occur in one or more of the
following circumstances:

@itemize @bullet

@item
If the profiled application is terminated before it exits normally.

@item
If a running process is profiled.

@item
If archiving is explicitly disabled when profiling.  For example by using
the @samp{-a off} option on @command{gprofng collect app}.

@end itemize

In these cases, @command{gprofng archive} must be run manually and on the same
machine where the profiling data was recorded.

Archiving of experiment data during the data collection process can be quite
expensive.  Especially if the experiment has many descendant processes.
@ifclear man
@IndexSubentry{Options, @code{-a}}
@end ifclear
In such cases, a more efficient strategy is to use the @samp{-a off} option
when collecting the data.  Once the collection has completed, the data can be
@ifclear man
@IndexSubentry{Options, @code{-s}}
@end ifclear
archived using the @samp{-s all} option.  This saves all executables and
source files in the experiment.

If during the archiving there is an error message that an executable, or
@ifclear man
@IndexSubentry{Commands, @code{addpath}}
@end ifclear
source file cannot be found, the @samp{addpath} command to add the path
to the missing file(s) can be included in the @file{.er.rc} file.
After this command has been added, archive the experiment again.  The
archiving archiving can be repeated as many times as necessary to archive all
files.

Archiving should be done on the same system as was used to collect the
experiment.  If some files cannot be accessed from this system (e.g.  sources
or object files), then additional archiving can be done using another system
that can access them.  For example, the system where the application was built.

Some Java applications store shared objects in jar files.  By default, such
shared objects are not automatically archived.  To archive shared objects
contained in jar files, make sure to include the @samp{addpath} command in
an @file{.er.rc} file.
The @samp{addpath} command should give the path to the jar file, including
the jar file itself.  The @file{.er.rc} file should be saved in the user home
directory, or experiment parent directory.

@item
Archiving of application sources -
By default, application source files are not archived in the experiment.
Execute the @command{gprofng archive} command with the @samp{-s all}, or
@samp{-s used} option on each experiment to store source files in the
experiment.

@item
Automatic archiving of application sources -
Environment variable @samp{GPROFNG_ARCHIVE} may be set to automatically
archive sources when the experiment has completed.  This environment
variable can contain @samp{-s} and @samp{-m} arguments, as pairs of
argument and options, separated by one or more blanks.
@ifclear man
@IndexSubentry{Environment variables, @code{GPROFNG_ARCHIVE}}
@IndexSubentry{Options, @code{-a}}
@IndexSubentry{Options, @code{-m}}
@IndexSubentry{Options, @code{-s}}
@end ifclear

If more than one @samp{-s} argument appears on the command line, the
last one prevails.  If @samp{-s} is both passed on the command line, and
set by the environment variable, the option from the environment variable
prevails.

Note that in case automatic source archiving during data collection has
been enabled using either the @samp{GPROFNG_ARCHIVE} variable, or the
@samp{-a src}, or @samp{-a usedsrc} option, it is recommended to confirm that
source files have been correctly resolved by executing the
@command{gprofng archive -s all}, or @command{gprofng archive -s used}
command.

@item
The @samp{-d} and @samp{-r} options are mutually exclusive.
@ifclear man
@IndexSubentry{Options, @code{-d}}
@IndexSubentry{Options, @code{-r}}
@end ifclear

@item
When using the @samp{-d} or @samp{-r} option, environment variable
@ifclear man
@IndexSubentry{Options, @code{-d}}
@IndexSubentry{Options, @code{-r}}
@IndexSubentry{Environment variables, @code{GPROFNG_ARCHIVE_COMMON_DIR}}
@end ifclear
@samp{GPROFNG_ARCHIVE_COMMON_DIR} can be used to specify the location of
the common archive.  This can be very convenient when using a script to
profile applications.

@item
If more than one @samp{-s} option is given on the command line, or
specified in the environment variable, the specified option for all must
be the same.  If not, @command{gprofng archive} exits with an error.

@item
This tool does not work on experiments recorded with earlier versions of
the tools.  If invoked on such experiments, a warning is printed.  Use the
version of @command{gprofng archive} from the same release with which the
experiment was recorded.

@end itemize

@c man end
@ManPageEnd{}

@c ----------------------------------------------------------------------------
@c SEEALSO section
@c ----------------------------------------------------------------------------

@ManPageStart{SEE ALSO}
@c man begin SEEALSO

gprofng(1),
gp-collect-app(1),
gp-display-gui(1),
gp-display-html(1),
gp-display-src(1),
gp-display-text(1)

@iftex
@vspace{1}
@end iftex

The user guide for gprofng is maintained as a Texinfo manual.  If the info
and gprofng programs are correctly installed, the command
@command{info gprofng} should give access to this document.

@c man end
@ManPageEnd{}

@c ----------------------------------------------------------------------------
@c COPYRIGHT section
@c ----------------------------------------------------------------------------

@ManPageStart{COPYRIGHT}
@c man begin COPYRIGHT

Copyright @copyright{} 2022-2023 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 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 ``GNU Free Documentation License''.

@c man end
@ManPageEnd{}

@c ----------------------------------------------------------------------------
@c If this text is used for a man page, exit.  Otherwise we need to continue.
@c ----------------------------------------------------------------------------

@ifset man
@bye
@end ifset