Content-type: text/html
pixie - Adds profiling code to a program
atom appl_prog -tool pixie [-env threads] [-toolargs="arg1 arg2..."] [atom_flags...]
File name of a fully linked shared or nonshared executable
to be profiled. This program should be compiled with the
-g1,
-g2, or
-g3
flag to obtain more complete profiling
information. If the default symbol table level (-g0) has
been used, line number information, static procedure names, and file names
are unavailable to the profiling code.
Identifies the pixie tool to the atom command. Specifies that the pixie tool is being invoked on an application that runs in a threaded environment. To make run-time analysis of an application that creates threads threadsafe, you must specify -env threads in the pixie command. Only POSIX threads created using the pthread_create function are supported.
The pixie tool accepts the following flags as arguments to the -toolargs flag: [Permits] or suppresses messages summarizing the binary-to-binary translation process. Default: -noquiet. Specify a name for the file of basic block addresses. Default is to remove any leading directory names from the program and append .Addrs. Specifies the full filename of the basic block counts file. Default: program.Counts. Specifies the directory to which pixie writes the .Counts file for the run. The default is the current directory. [Disables] or enables the addition of the process-id number to the filename of the basic block counts file. This is useful for collecting information for multiple invocations of the pixie output file. Default: -nopids.
You can define the PIXIE_ARGS environment variable to supply the following run-time flags to the instrumented program generated by pixie: Specifies the directory to which pixie writes the .Counts file for the run. The default is the current directory. [Disables] or enables the addition of the process-id number to the filename of the basic block counts file. This is useful for collecting information for multiple invocations of the pixie output file. Default: -nopids. Specifies a signal name that the instrumented program will catch. When the program catches this signal, it writes the basic block counts to the .Counts file and resets all of the basic block counts to zero. Setting the basic block counts to zero allows multiple profiling data files (which result from multiple instances of the specified signal) to be merged into a single profile that reflects the whole test run. When multiple instances of the signal occur, you must rename each of the individual .Counts files to, for example, foo.Counts.n. Renaming the files in this fashion allows you to examine all of the .Counts files by issuing a prof command with a wildcard (*) for the increment field in the file names.
The pixie Atom tool reads an executable program, partitions it into basic blocks, and writes an equivalent program containing additional code that counts the execution of each basic block. (A basic block is a region of the program that can be entered only at the beginning and exited only at the end.) The pixie utility also generates a file containing the address of each of the basic blocks.
When you run the pixie-generated program, it will - provided it
terminates normally or as a result of a call to
exit(2)
- generate
a file containing the basic block counts. The name of the file is that of
the original program with any leading directory names removed and
.Counts
appended. Programs that call
fork()
generate
multiple basic block counts files, each with the process-id number appended
to the name. The
prof(1)
and
pixstats(1)
utilities can
analyze these files and produce a listing of profiling data.
atom(1), prof(1), pixstats(1), pdtostd(1), dxprof(1). (dxprof is available as an option.)
Programmer's Guide