HP OpenVMS Systems

HP Digital Continuous Profiling Infrastructure

HP OpenVMS Systems

OpenVMS information

» What's new on our site
» Upcoming events
» Configuration and buying assistance
» Send us your comments

HP OpenVMS systems

» OpenVMS software
» Supported Servers
» OpenVMS virtualization
» OpenVMS solutions and partners
» OpenVMS success stories
» OpenVMS service and support
» OpenVMS resources and information
» OpenVMS documentation
» Education and training


» Home
» What's New
» Install Software
» Documentation
» Publications

Evolving business value

» Business Systems Evolution
» AlphaServer systems transition planning
» Alpha RetainTrust program

Related links

» HP Integrity servers
» HP Alpha systems
» HP storage
» HP software
» HP products and services
» HP solutions
» HP support
disaster proof
HP Integrity server animation
HP Integrity server animation
Content starts here



dcpilist - Produces procedure listing annotated with profile information


dcpilist [options] [-p] procedure-name image-file

dcpilist -V


Prints version number and exits.
Prints source code if it is available, else prints a disassembly of the specified procedure. This is the default output format.
Prints source code.
Prints a disassembly of the specified procedure.
Prints both the source code, and a disassembly of the specified procedure. The source code is always printed in line-number order. If the -order option is not given, for each source line, the set of instructions that correspond to the source line are printed immediately after the source line in address order. Since the compiler can mix instructions that come from different source lines, there may be gaps in the instruction output for a given source line. These gaps are indicated with a line of the form .... For example,
    if (x->ptr != NULL)
    0x120022464 ldq     t2, 0(s6)
    0x120022470 beq     t2, 0x120023fc4

This output format does not guarantee that the instructions are displayed in address order. For example, in the listing below, the instructions for the first two source lines are intermixed.

    a += x[0];
    0x120022504 ldq     t1, 0(s1)
    0x12002250c addq    s2, t1, s2
    b += x[1];
    0x120022508 ldq     t2, 0(s1)
    0x120022510 addq    s3, t2, s3

Therefore, the last instruction corresponding to the first source line occurs after the first instruction corresponding to the second source line, but is displayed earlier.

If you specify the -order option, dcpilist produces a different interleaving of the source code and the disassembled instructions. The source lines are still printed in line number order. In addition, the instructions are all printed in address order. To handle instructions reordering, dcpilist will group a set of source lines together and show the corresponding assembly instructions immediately after the group of source lines. The example above will produce the following output if you specify the -order option.

    a += x[0];
    b += x[1];
    0x120022504 ldq     t1, 0(s1)
    0x120022508 ldq     t2, 0(s1)
    0x12002250c addq    s2, t1, s2
    0x120022510 addq    s3, t2, s3

The -order option is not turned on by default because it does not work well under high optimizations levels when the compiler moves two instructions that belong to the same source line far apart from each other.

-f file
If dcpilist cannot find the source file automatically, the user can specify the file name explicitly with this option.
If this option is specified, dcpilist labels each source line and disassembled instruction with the corresponding source line number. This option can be helpful in understanding the output of -both -order.
See the description of the -both option above.
Output low, medium, and high confidence data.
Output medium and high confidence data. This is the default.
Output only high confidence data.
Experimental option for generating Tcl code that places the output in a Tk text widget.
-ranks n
When used in combination with the -tk option, each source line is tagged with a rank in the range 0..n-1 where the rank is determined by the number of samples that fell on that source line. Higher samples imply a higher rank.


By default, this command automatically finds all of the relevant profile files. The following options can be used to guide the search for the profile files.

-db <directory name>
Search for profile files in the specified profile database directory. The directory name should be the same name as the one specified when dcpid was started. That is, the named directory should contain a set of epochs. If this option is not specified, the directory name is obtained from the DCPIDB logical name. If neither of these methods succeeds in finding the appropriate directory, and no explicit set of profile files is provided via the -profiles option, then the command fails.
-epoch latest
Search for profile files in the latest epoch. This is the default.
-epoch latest-k
Search for profile files in the "k+1"th oldest epoch. For example, search in the third last epoch if "-epoch latest-2" is specified.
-epoch all
Search for profile files in all epochs.
-epoch <name>
Search for profile files in the named epoch. The epoch name should be the name of a subdirectory corresponding to a single epoch within the profile database directory. Epoch subdirectory names usually take the form YYYYMMDDHHMM (year-month-day-hours-minutes). For example, an epoch started on February 4, 2002 at 23:34 is named 200202042334. If an epoch is given a symbolic name by creating a symbol link to the actual epoch directory, then the symbolic name can also be used as an argument to the -epoch option.
-events all
Search for profile files corresponding to all event types such as cycles, icache misses, errors in branch predictions, etc. This is the default.
-events type(+type)*
Search for profile files for the specified event types. For example, search for cycles, icache misses, and data cache misses when the option -events cycles+imiss+dmiss is specified.
-events all(-type)*
Search for profile files for all event types except for the specified types. For example, search for all event types except for branch mispredictions when the option -events all-branchmp is specified.
-label <label>
Search for profile files with the specified label (see dcpilabel). If no labels are specified on the command line, profile file labels are ignored entirely. If any labels are specified on the command line (this option can be repeated several times), only profile files that have one of the specified labels are used.
-profiles <file names...> --
Use just the profile files named by the specified file names. The list of profile file names can be terminated either via --, or by the end of the option list. The command prints an error message and fails if the -profiles option is used in conjunction with any of the earlier automatic profile finding options. (Use either the automatic profile lookup mechanism, or explicitly name the profile file with the -profile option, but not both.)


Dcpilist prints the contents of the procedure specified on the command line. The name of the image in which the procedure can be found is also specified on the command line. Instead of a procedure name, you can specify an instruction address: the procedure that contains the specified address is printed. If multiple procedures in the image have the same name, you can give the address of one of these procedures instead of an ambiguous name.

Dcpilist can print the source code for the procedure, a disassembly of the procedure, or a mixed output that contains both the source code and the disassembly.

Each source line and disassebled instruction in the output is annotated with the sample counts obtained from corresponding profile files. When the cycle cost of an instruction or a source line can be determined (see dcpicalc(1)), then this cost is also printed in the output.

Samples that do not belong to the specified procedure are ignored. If the relevant profile files contain samples for multiple events, then a column for the count of each unique event type is included in the listing. If multiple profile files with the same event type contribute to the samples for the specified procedure, these samples are merged together in the output.

Input parameter procedure-name can be the ASCII procedure name, an address within a procedure (in C syntax, for example, 0x20000 is hex address 20000), or an explicit address range (useful when analyzing images without debug symbol information; for example, 0x20000:0x200c0).


dcpi(1), dcpi2ps(1), dcpicat(1), dcpictl(1), dcpid(1), dcpidiff(1), dcpiformat(4), dcpilist(1), dcpiprof(1), dcpitopstalls(1), dcpiwhatcg(1)  

For more information, see the HP Digital Continuous Profiling Infrastructure project home page (http://h30097.www3.hp.com/dcpi).

Last modified: April 8, 2004