[ Previous | Next | Table of Contents | Index | Library Home |
Legal |
Search ]
General Programming Concepts: Writing and Debugging Programs
Use the following procedures to
configure and start a system trace:
The trace command
starts the tracing of system events and controls the size of and manages the
trace log file, as well as the internal trace buffers that collect
trace event data. The syntax of this command is:
trace [-fl] [-ad] [-s] [-h] [-jk events] [,events] [-m message] [-o outfile][-g] [-T buf_sz] [-L log_sz]
The various options of the
trace command are:
-f or -l
| Controls the capture of trace data in system memory. If you
specify neither the -f nor -l option, the trace facility
creates two buffer areas in system memory to capture the trace data.
The trace log files and the internal trace buffers that
collect trace event data can be managed, including their size, by this
command. The -f or -l flag provides the ability
to prevent data from being written to the file during data collection.
The options are to collect data only until the memory buffer becomes full
(-f for first), or to use the memory buffer as a circular buffer
that captures only the last set of events that occurred before
trace was terminated (-l). The -f and
-l options are mutually exclusive. With either the
-f or -l option, data is not transferred from the memory
collection buffers to file until trace is terminated.
|
-a
| Runs the trace collection asynchronously (as a background
task), returning a normal command line prompt. Without this option, the
trace command runs in a subcommand mode and returns a >
prompt. You can issue subcommands and regular shell commands from the
trace subcommand mode by preceding the shell commands with an !
(exclamation point).
|
-d
| Delays data collection. The trace facility is only
configured. Data collection is delayed until one of the collection
trigger events occurs. Various methods for triggering data collection
on and off are provided. These include the following:
- trace subcommands
- trace commands
- trace subroutines.
|
-j events or -k
events
| Specifies a set of events to include (-j) or exclude
(-k) from the collection process. Specifies a list of events
to include or exclude by a series of three-digit hexadecimal event IDs
separated by a space.
|
-s
| Terminate trace data collection if the trace log file reaches
its maximum specified size. The default without this option is to wrap
and overwrite the data in the log file on a FIFO basis.
|
-h
| Does not write a date/sysname/message header to the
trace log file.
|
-m message
| Specifies a text string (message) to be included in the trace
log header record. The message is included in reports generated by the
trcrpt
command.
|
-o outfile
| Specifies a file to use as the log file. If you do not use the
-o option, the default log file is
/var/adm/ras/trcfile. To direct the trace data to standard
output, code the -o option as -o -. Use this
technique only to pipe the data stream to another process since the trace data
contains raw binary events that are not displayable.
|
-g
| Duplicates the trace design for multiple channels.
Channel 0 is the default channel and is always used for recording system
events. The other channels are generic channels, and their use is not
predefined. There are various uses of generic channels in the
system. The generic channels are also available to user
applications. Each created channel is a separate events data
stream. Events recorded to channel 0 are mixed with the predefined
system events data stream. The other channels have no predefined use
and are assigned generically.
A program typically requests that a
generic channel be opened by using the trcstart subroutine.
A channel number is returned, similar to the way a file descriptor is returned
when a file is opened (the channel ID). The program can record events
to this channel and, thus, have a private data stream. Less frequently,
the trace command allows a generic channel to be specifically
configured by defining the channel number with this option.
|
-T size and -L size
| Specifies the size of the collection memory buffers and the maximum size
of the log file in bytes.
Note: Because the trace facility pins the data collection
buffers, making this amount of memory unavailable to the rest of the system,
the trace facility can impact performance in a memory-constrained
environment. If the application being monitored is not
memory-constrained, or if the percentage of memory consumed by the
trace routine is small compared to what is available in the system,
the impact of trace "stolen" memory should be small.
If you do not specify a value, trace uses a default size.
|
The data recorded for each traced
event consist of a word containing the trace hook identifier and the hook type
followed by a variable number of words of trace data optionally followed by a
time stamp. The word containing the trace hook identifier and the hook
type is called the hook word. The remaining two bytes of the hook word
are called hook data and are available for recording event data.
A trace hook identifier is a
three-digit hexadecimal number that identifies an event being traced.
You specify the trace hook identifier in the first 12 bits of the hook
word. The values 0x010 through 0x0FF are available for use by user
applications. All other values are reserved for system use. The
trace hook identifiers for the installed software can be listed using the
trcrpt -j command.
The trace hook IDs, which are
stored in the /usr/include/sys/trchkid.h file, and the trace
formatting templates, which are stored in the /etc/trcfmt file, are
shared by all the trace channels.
The hook type identifies the
composition of the event data and is user-specified. Bits 12 through 16
of the hook word constitute the hook type. For more information on hook
types, refer to the trcgen, trcgenk, and
trchook subroutines.
The trace facility supports up to
eight active trace sessions at a time. Each trace session uses a
channel of the multiplexed trace special file,
/dev/systrace. Channel 0 is used by the trace facility to
record system events. The tracing of system events is started and
stopped by the trace and trcstop commands.
Channels 1 through 7 are referred to as generic trace channels and may be used
by subsystems for other types of tracing such as data link tracing.
To implement tracing using the
generic trace channels of the trace facility, a subsystem calls the
trcstart subroutine to activate a trace channel and to determine
the channel number. The subsystem modules can then record trace events
using the trcgen, trcgent, trcgenk, or
trcgenkt subroutine. The channel number returned by the
trcstart subroutine is one of the parameters that must be passed to
these subroutines. The subsystem can suspend and resume trace data
collection using the trcoff and trcon subroutines and
can deactivate a trace channel using the trcstop subroutine.
The trace events for each channel must be written to a separate
trace log file, which must be specified in the call to the
trcstart subroutine. The subsystem must provide the user
interface for activating and deactivating subsystem tracing.
Use the one of the following
procedures to start the trace facility.
- Start the trace facility
by using the trace command.
Start the trace
asynchronously. For example:
trace -a
mycmd
trcstop
When using the trace facility asynchronously, use the trace
daemon to trace the selected system events (such as the mycmd
command); then, use the trcstop command to stop the
trace.
OR
Start the trace
interactively. For example:
trace
->!mycmd
->quit
When using the trace facility interactively, get into the interactive mode
as denoted by the -> prompt, and use the trace
subcommands (such as !) to trace the selected system events.
Use the quit subcommand to stop the trace.
- Use smit
trace, and choose the Start Trace option.
smit trace
Use one of the following
procedures to stop the trace you started earlier.
- When using
trace asynchronously at the command line, use the
trcstop command:
trace -a
mycmd
trcstop
When using the trace facility asynchronously, use the trace
daemon to trace the selected system events (such as the mycmd
command); then, use the trcstop command to stop the
trace.
- When using
trace interactively at the command line, use the quit
subcommand:
trace
->!mycmd
->quit
The interactive mode is denoted by the -> prompt. Use
the trace subcommands (such as !) to trace the selected
system events. Use the quit subcommand to stop the
trace.
- Use smit trace
and choose the Stop Trace option:
smit trace
Use either of the following
procedures to generate a report of events that have been traced.
[ Previous | Next | Table of Contents | Index |
Library Home |
Legal |
Search ]