Document revision date: 30 March 2001

## OpenVMS Delta/XDelta Debugger Manual

Previous | Contents | Index

1. The base address of the program (determined from the map file) is virtual address 30000. The base address is stored in base register 0 with ;X, using the default offset. DELTA/XDELTA displays the value in base register 0 just loaded, 30000.
2. The address of a subroutine, 30070, is stored in base register 1, specifying a new offset of 200 (to override the default value of 100000). Note that this command could also have been expressed as "x0+70,1,200;X". DELTA/XDELTA displays the value in base register 1 just loaded, 30070.
3. The ;x command is used to display the current base registers. Note that for those not using the default offset, the offset is also displayed.
4. The S command is used to execute the first instruction in the main routine. DELTA/XDELTA displays the address of the next instruction, 30004, as x0+00000004 and then displays the instruction at that address.
5. The instruction at offset 10 from base register 1 is displayed in instruction mode using the ! command.

## = (Display Value of Expression)

> Evaluates an expression and displays its value.

### Format

> expression =

### Argument

> #### expression

> The expression to be evaluated.

### Description

> The Display Value of Expression command evaluates an expression and displays its value in hexadecimal. The expression can be any valid DELTA/XDELTA expression. See Section 2.1 for a description of DELTA/XDELTA expressions.

> All calculations and displays are in hexadecimal in the prevailing length mode.

### Example

>     FF+1=00000100  (1)
>     A-1=00000009   (2)

> 1. FF16 and 116 are added together. DELTA/XDELTA displays the sum in hexadecimal.
> 2. 116 is subtracted from A16. DELTA/XDELTA displays the result in hexadecimal.

## ;M (Set All Processes Writable)

> Sets the address spaces of all processes to be writable or read-only by your DELTA process. This command can be used only with DELTA. Use of this command requires CMKRNL privilege.

> On Alpha, this command also sets writable the general purpose registers of other processes, if, after issuing the ;M command, you specify another process with any command that takes the PID argument, such as the / command.

### Format

> n;M

### Argument

> #### n

> Specifies your process privileges for reading and writing at other processes. If 0, your DELTA process can only read locations in other processes; if 1, your process can read or write any location in any process. If not specified, DELTA returns the current value of the M (modify) flag (0 or 1).

### Description

> The Set All Processes Writable command is useful for changing values in the running system.

> Note Use this activity very carefully during timesharing. It affects all processes on the system. For this reason, your process must have change-mode-to-kernel (CMKRNL) privilege to use this command. It is safest to use this command only on a standalone system.

## ;L (List Names and Locations of Loaded Executive Images)

> List the names and virtual addresses of all loaded executive images.

### Format

> [sequence number];L

### Argument

> #### sequence number

> On Alpha, specifies a single executive image.

### Description

> On Alpha and VAX, use the ;L command when you are debugging code that resides in system space. Although you use this command mostly with XDELTA, you can use it with DELTA if your process has change-mode-to-executive (CMEXEC) privilege and you are running a program in executive mode.

> This command lists the names and locations of the loaded modules of the executive. A loading mechanism maps a number of images of the executive into system space. The ;L command lists the currently loaded images with their starting and ending virtual addresses. If you enter ;L before all the executive images are loaded (for example, at an XDELTA initial breakpoint), only those images that have been loaded will be displayed.

> On Alpha, this command displays additional information and provides a second use, based on the additional information. For each loaded executive image that is sliced into discontiguous image sections, the display shows the sequence number for the executive image and the base and ending addresses of each image section. A second use of this command is to display the base and ending addresses of a single image if you specify its sequence number.

### Examples

> The following example applies only to OpenVMS VAX. It shows the names and the starting and ending virtual addresses of the three executive images that are loaded in memory.

>     ;L
>     PRIMITIVE_IO.EXE              800EAA00  800EBC00
>     SYSTEM_SYNCHRONIZATION.EXE    800EBC00  800ED400
>     SYSTEM_PRIMITIVES.EXE         800ED400  800F1000

> The following examples apply only to OpenVMS Alpha.

> In the following example, the names, the starting and ending virtual addresses, and the sequence numbers for all the loaded executive images are shown. Only one image, EXEC_INIT.EXE, was not split into image sections. For every image that was split into image sections, it also shows the name and the base and ending address of each section.

>     ;L

>     Seq#  Image Name                               Base      End

>     0012  EXEC_INIT.EXE                            8080C000  80828000
>     0010  SYS$CPU_ROUTINES_0101.EXE
>               Nonpaged read only                   80038000  8003A200
>               Nonpaged read/write                  80420200  80420A00
>               Initialization                       80808000  80808400
>     000E  ERRORLOG.EXE
>               Nonpaged read only                   8002E000  80036600
>               Nonpaged read/write                  8041BE00  80420200
>               Initialization                       80804000  80804800
>     000C  SYSTEM_SYNCHRONIZATION.EXE
>               Nonpaged read only                   80024000  8002C800
>               Nonpaged read/write                  8041A000  8041BE00
>               Initialization                       80800000  80800800
>                   .       .     .
>                   .       .     .
>                   .       .     .
>     0002  SYS$BASE_IMAGE
>               Nonpaged read only                   80002000  80009400
>               Nonpaged read/write                  80403000  80414C00
>               Fixup                                80620000  80620600
>               Symbol Vector                        8040B010  80414560
>     0000  SYS$PUBLIC_VECTORS.EXE
>               Nonpaged read only                   80000000  80001C00
>               Nonpaged read/write                  80400000  80403000
>               Fixup                                8061E000  8061E200
>               Symbol Vector                        80401BF0  80402ED0

> The following example illustrates the use of the sequence number with the ;L command to display information about one image. In this example, the sequence number C for the SYSTEM_SYNCHRONIZATION.EXE module is specified with the ;L command. (It is not necessary to specify the leading zeros in the command.) The resulting display shows only the SYSTEM_SYNCHRONIZATION.EXE module (whose sequence number is 000C). The display includes the names of the image sections within the module and their base and ending addresses.

>     C;L

>     Seq#  Image Name                               Base      End

>     000C  SYSTEM_SYNCHRONIZATION.EXE
>               Nonpaged read only                   80024000  8002C800
>               Nonpaged read/write                  8041A000  8041BE00
>               Initialization                       80800000  80800800

## ;Q (Validate Queue) (Alpha Only)

> Analyzes absolute and self-relative longword queues and displays the results of the analysis.

### Format

> queue_header_address[,queue_type];Q

### Argument

> #### queue_header_address

> The queue header must be at least longword aligned.

> #### queue_type

> A queue type of zero (the default) represents an absolute queue. A queue type of 1 indicates a self-relative queue.

### Description

> The validate queue function is similar to the one in the OpenVMS Alpha System Dump Analyzer Utility. It can analyze both absolute and self-relative longword queues and display the results of the analysis. This function identifies various problems in the queue headers and invalid backward links for queue entries and evaluates the readability of both. For valid queues, it tells you the total number of entries. For invalid queues, it tells you the queue entry number and the address that is invalid and why.

### Example

>     FFFFFFFF8000F00D;Q      !Absolute at GF00D
>     GF00D,0;Q               !Absolute at GF00D
>     GF00,1;Q                !Self-relative at GF00

## ;C (Force the system to bugcheck and crash) (Alpha Only)

> Force the system to bugcheck and crash.

### Format

> ;C

### Description

> The ;C command forces the system to bugcheck and crash. You can do this from wherever you are in your debugging session. Although this command is for use primarily with XDELTA, you can also use it with DELTA, but only in kernel mode. When you issue this command, the following message is generated:

>     BUG$_DEBUGCRASH, Debugger forced system crash

## ;W (List Name and Location of a Single Loaded Image) (Alpha Only)

> Lists information about an image that contains the address you supplied.

### Format

> address-expression;W

### Format

> sequence number, offset;W

### Arguments

> #### address-expression

> An address contained within an executive image or a user image.

> #### sequence number

> The identifier assigned to an executive image.

> #### offset

> The distance from the base address of the image.

### Description

> The ;W command is used for debugging code that resides in system or user space. You can use this command with XDELTA for debugging an executive image. You can also use this command with DELTA.

> To examine the executive image list, you must be running in executive mode or your process must have change-mode-to-executive (CMEXEC) privilege.

> This command can be used in two ways. In the first way, if you supply an address that you are trying to locate, the command lists the name of the executive or user image that contains the address, its base and ending addresses, and the offset of the address from the base of the image. For any executive image that has been sliced, it also displays its sequence number. The offset can be used with the link map of the image to locate the actual code or data.

> In the second way, if you supply the sequence number of a sliced executive image and an offset, the command computes and displays the current location in memory.

### Examples

> The first form of the command takes a system space address as a parameter and attempts to locate that address within the loaded executive images. This command works for both sliced and unsliced loadable executive images. The output is very similar to ;L, except the offset is displayed for you, as shown in the following example:

>     80026530;W

>     Seq#  Image Name                          Base      End       Image Offset

>     000C  SYSTEM_SYNCHRONIZATION.EXE
>               Nonpaged read only              80024000  8002C800  00002530

> The second form of the command takes a loadable executive image sequence number and an image offset from the map file as parameters. The output, again, is very similiar to ;L, except that the system space address that corresponds to the image offset is displayed, as shown in the following example:

>     C,2530;W

>     Seq#  Image Name                               Base      End       Address

>     000C  SYSTEM_SYNCHRONIZATION.EXE
>               Nonpaged read only                   80024000  8002C800  80026530

## ;I (List Information About the Current Main Image and Its Shareable Images) (Alpha Only)

> List information about the current main image and all shareable images that were activated, including those that were installed /RESIDENT.

### Format

> ;I

### Description

> The ;I command peruses the image control block (IMCB) list and displays information about the current main image and all shareable images that were activated, including those that were installed /RESIDENT. The ;I command differs from the ;L command which displays information about the loadable image database.

> The display of the ;I command is similar to the ;L command display. It shows the image name, the starting and ending addresses, the symbol vector address, and some flags. The command is useful for debugging shareable images. For example, the display enables you to determine where LIBRTL is mapped.

> The field flags are M, S, and P. The flag M indicates the main image; S or P indicates images that are installed as shareable or protected, respectively.

> Unlike the ;L command, which only works from kernel mode or when you have CMEXEC or CMKRNL privileges, the ;I command works from any mode. However, to modify the IMCB database, you must be in executive or kernel mode.

> For sliced main and shareable images, the ;I command also includes an entry for each resident code section and each compressed data section, which shows the base and end address for each section.

> The ;I command is implemented only for DELTA.

### Example

>     $ define lib$debug delta
>     $ run/debug hello
>     Alpha/VMS DELTA Version 1.5

>     Brk 0 at 00020040

>     00020040!     LDA                SP,#XFFD0(SP) ;i
>     Image Name                          Base     End      Symbol-Vector  Flags

>     HELLO                               00010000 000301FF                  M
>     DECC$SHR                            00032000 001233FF 00106B90         S
>     DPML$SHR                            0012C000 001AC5FF 0019DED0         S
>     LIBRTL                              001AE000 0025E7FF 00240790         S
>     Resident Code Sections:
>                                         8015A000 801BBA00
>     LIBOTS                              00124000 0012A1FF 00128000         S
>     Resident Code Sections:
>                                         801BC000 801C2C00
>     Compressed Data Sections:
>                                         00124000 00124A00
>                                         00126000 00126800
>                                         00128000 00128600
>                                         0012A000 0012A200
>     SYS$PUBLIC_VECTORS                  80401C98 80403028 80401C98
>     DELTA                               00260000 002943FF 00260000
>     SYS$BASE_IMAGE                      8040C5B0 804163E0 8040C5B0

## ;H (Video Terminal Display Command) (Alpha Only)

> Specifies the display mode, either hardcopy terminal mode or DEC-CRT.

### Format

> ;H

### Description

> The ;H command enables you to choose the display mode of DELTA/XDELTA output. You can display output either in hardcopy terminal mode or DEC-CRT mode. The default display is DEC-CRT mode. You can toggle back and forth from one display mode to the other by repeating the ;H command.

## \string\ (Immediate mode text display command) (Alpha Only)

> Displays the ASCII text string enclosed in backslashes.

### Format

> \string\

### Description

> This mode is useful when creating your own predefined command strings. Use the backslash to begin and end an ASCII text string. Follow the ending backslash with a terminator. When DELTA or XDELTA encounters the ending backslash and terminator, it prints the ASCII text string.

## EXIT (Exit from DELTA Debugging Session)

> Terminates the DELTA debugging session. Use with DELTA only.

### Format

> EXIT

### Description

> Use the EXIT command to terminate a DELTA debugging session. You cannot use EXIT in XDELTA.

> You may have to enter EXIT twice, such as when your program terminates execution by the $EXIT system service or by the Return key (to DCL).

Previous | Next | Contents | Index

| privacy and legal statement |
4540PRO_005.HTML