Document revision date: 30 March 2001

## OpenVMS Debugger Manual

Previous | Contents | Index

The debugger might do type conversion during a deposit operation if the language rules allow it. For example, a real value specified to the right of the equal sign might be converted to an integer value if it is being deposited into a location with an integer type. In general, the debugger tries to follow the assignment rules for the current language.

There are several ways of changing the type associated with a program location so that you can deposit data of a different type into that location:

- To change the default type for all locations that do not have a symbolic name, you can specify a new type with the SET TYPE command.
- To change the default type for all locations (both those that do and do not have a symbolic name), you can specify a new type with the SET TYPE/OVERRIDE command.
- To override the type currently associated with a particular location for the duration of a single DEPOSIT command, you can specify a new type by using a qualifier (/ASCII:n, /BYTE, /TYPE=(name), and so on).

When debugging a C program, or a program in any case-specific language, you cannot use the DEPOSIT/TYPE command if the type specified is a mixed or lowercase name. For example, suppose the program has a function like the following:

    xyzzy_type foo ()
    {
    xyzzy_type     z;
    z = get_z ();
    return (z);
    }

If you try to enter the following command, the debugger issues a message that it cannot find the type "xyzzy_type":

    DBG> DEPOSIT/TYPE=(xyzzy_type) z="whatever"

The debugger can interpret and display integer data in any one of four radixes: binary, decimal, hexadecimal, and octal. The default radix for both data entry and display is decimal for most languages.

On VAX processors, the exceptions are BLISS and MACRO--32, which have a default radix of hexadecimal. On Alpha processors, the exceptions are BLISS, MACRO--32, and MACRO--64, which have a default radix of hexadecimal.

You can use the SET RADIX and SET RADIX/OVERRIDE commands to change the default radix.

The DEPOSIT command sets the current entity built-in symbols %CURLOC and period (.) to the location denoted by the address expression specified. Logical predecessors (%PREVLOC or the circumflex character (^)) and successors (%NEXTLOC) are based on the value of the current entity.

Related commands:

> CANCEL TYPE/OVERRIDE
> EVALUATE
> EXAMINE
> MONITOR
> (SET,SHOW,CANCEL) RADIX
> (SET,SHOW) TYPE

### Examples

#1
    DBG> DEPOSIT I = 7

> This command deposits the value 7 into the integer variable I.

#2
    DBG> DEPOSIT WIDTH = CURRENT_WIDTH + 24.80

> This command deposits the value of the expression CURRENT_WIDTH + 24.80 into the real variable WIDTH.

#3
    DBG> DEPOSIT STATUS = FALSE

> This command deposits the value FALSE into the Boolean variable STATUS.

#4
    DBG> DEPOSIT PART_NUMBER = "WG-7619.3-84"

> This command deposits the string WG-7619.3-84 into the string variable PART_NUMBER.

#5
    DBG> DEPOSIT EMPLOYEE.ZIPCODE = 02172

> This command deposits the value 02172 into component ZIPCODE of record EMPLOYEE.

#6
    DBG> DEPOSIT ARR(8) = 35
    DBG> DEPOSIT ^ = 14

> In this example, the first DEPOSIT command deposits the value 35 into element 8 of array ARR. As a result, element 8 becomes the current entity. The second command deposits the value 14 into the logical predecessor of element 8, namely element 7.

#7
    DBG> FOR I = 1 TO 4 DO (DEPOSIT ARR(I) = 0)

> This command deposits the value 0 into elements 1 to 4 of array ARR.

#8
    DBG> DEPOSIT COLOR = 3
    %DEBUG-E-OPTNOTALLOW, operator "DEPOSIT" not allowed on
         given data type

> The debugger alerts you when you try to deposit data of the wrong type into a variable (in this case, if you try to deposit an integer value into an enumerated type variable). The E (error) message severity indicates that the debugger does not make the assignment.

#9
    DBG> DEPOSIT VOLUME = - 100
    %DEBUG-I-IVALOUTBNDS, value assigned is out of bounds
         at or near '-'

> The debugger alerts you when you try to deposit an out-of-bounds value into a variable (in this case a negative value). The I (informational) message severity indicates that the debugger does make the assignment.

#10
    DBG> DEPOSIT/BYTE WORK = %HEX 21

> This command deposits the expression %HEX 21 into location WORK and converts it to a byte integer.

#11
    DBG> DEPOSIT/OCTAWORD BIGINT = 111222333444555

> This command deposits the expression 111222333444555 into location BIGINT and converts it to an octaword integer.

#12
    DBG> DEPOSIT/FLOAT BIGFLT = 1.11949*10**35

> This command converts 1.11949*10**35 to an F_floating type value and deposits it into location BIGFLT.

#13
    DBG> DEPOSIT/ASCII:10 WORK+20 = 'abcdefghij'

> This command deposits the string "abcdefghij" into the location that is 20 bytes beyond that denoted by the symbol WORK.

#14
    DBG> DEPOSIT/INSTR SUB2+2 = 'MOVL   #20A,R0'

> On VAX systems, this command deposits the instruction MOVL #20A,R0' into the location SUB2 + 2 bytes.

#15
    DBG> DEPOSIT/TASK VAR = %TASK 2
    DBG> EXAMINE/HEX VAR
    SAMPLE.VAR: 0016A040
    DBG> EXAMINE/TASK VAR
    SAMPLE.VAR: %TASK 2
    DBG>

> The DEPOSIT command deposits the Ada task value %TASK 2 into location VAR. The subsequent EXAMINE commands display the contents of VAR in hexadecimal format and as a task value, respectively.

## DISABLE AST

> Disables the delivery of asynchronous system traps (ASTs) in your program.

### Format

> DISABLE AST

### Description

> The DISABLE AST command disables the delivery of ASTs in your program and thereby prevents interrupts from occurring while the program is running. If ASTs are delivered while the debugger is running (processing commands, and so on), they are queued and are delivered when control is returned to the program.

> The ENABLE AST command reenables the delivery of ASTs, including any pending ASTs (ASTs waiting to be delivered).

> Note Any call by your program to the $SETAST system service that enables ASTs overrides a previous DISABLE AST command.

> Related commands:

> > (ENABLE,SHOW) AST

### Example

    DBG> DISABLE AST
    DBG> SHOW AST
    ASTs are disabled
    DBG>

> The DISABLE AST command disables the delivery of ASTs in your program, as confirmed by the SHOW AST command.

## DISCONNECT

> Releases a process from debugger control without terminating the process (kept debugger only).

### Format

> DISCONNECT process-spec

### Parameters

> #### process-spec

> Specifies a process currently under debugger control. Use any of the following forms:

> [%PROCESS_NAME] process-name | The process name, if that name does not contain spaces or lowercase characters. The process name can include the asterisk (*) wildcard character.
> [%PROCESS_NAME] " process-name" | The process name, if that name contains spaces or lowercase characters. You can also use apostrophes (') instead of quotation marks (").
> %PROCESS_PID process_id | The process identifier (PID, a hexadecimal number).
> [%PROCESS_NUMBER] process-number (or %PROC process-number) | The number assigned to a process when it comes under debugger control. A new number is assigned sequentially, starting with 1, to each process. If a process is terminated with the EXIT or QUIT command, the number can be assigned again during the debugging session. Process numbers appear in a SHOW PROCESS display. Processes are ordered in a circular list so they can be indexed with the built-in symbols %PREVIOUS_PROCESS and %NEXT_PROCESS.
> process-set-name | A symbol defined with the DEFINE/PROCESS_SET command to represent a group of processes.
> %NEXT_PROCESS | The next process after the visible process in the debugger's circular process list.
> %PREVIOUS_PROCESS | The process previous to the visible process in the debugger's circular process list.
> %VISIBLE_PROCESS | The process whose stack, register set, and images are the current context for looking up symbols, register values, routine calls, breakpoints, and so on.

### Description

> (Kept debugger only.) The DISCONNECT command releases a specified process from debugger control without terminating the process. This is useful if, for example, you have brought a running program under debugger control with a CONNECT command and you now want to release it without terminating the image. (In contrast, when you specify a process with the EXIT or QUIT command, the process is terminated.)

> Caution The debugger kernel runs in the same process as the image being debugged. If you issue the DISCONNECT command for this process, you release your process, but the kernel remains activated. This activation continues until the program image finishes running. If you install a new version of the debugger while one or more disconnected but activated kernels inhabit user program space, you can experience problems with debugger behavior if you try to reconnect to one of those kernels.

> Related commands:

> > EXIT
> > QUIT
> > CONNECT

### Example

    DBG> DISCONNECT JONES

> This command releases process JONES from debugger control without terminating the process.

## DISPLAY

> Creates a new screen display or modifies an existing display.

> Note This command is not available in the Compaq DECwindows Motif for OpenVMS user interface to the debugger.

### Format

> DISPLAY display-name [AT window-spec] [display-kind] [,...]

### Parameters

> #### display-name

> Specifies the display to be created or modified.

> If you are creating a new display, specify a name that is not already used as a display name.

> If you are modifying an existing display, you can specify any of the following entities:

> - A predefined display:

>   > SRC
>   > OUT
>   > PROMPT
>   > INST
>   > REG
>   > FREG (Alpha only)
>   > IREG

> - A display previously created with the DISPLAY command
> - A display built-in symbol:

>   > %CURDISP
>   > %CURSCROLL
>   > %NEXTDISP
>   > %NEXTINST
>   > %NEXTOUTPUT
>   > %NEXTSCROLL
>   > %NEXTSOURCE

> You must specify a display unless you use /GENERATE (parameter optional), or /REFRESH (parameter not allowed).

> You can specify more than one display, each with an optional window specification and display kind.

> #### window-spec

> Specifies the screen window at which the display is to be positioned. You can specify any of the following entities:
> - A predefined window. For example, RH1 (right top half).
> - A window definition previously established with the SET WINDOW command.
> - A window specification of the form (start-line, line-count[, start-column, column-count]). The specification can include expressions which can be based on the built-in symbols %PAGE and %WIDTH (for example, %WIDTH/4).

> If you omit the window specification, the screen position depends on whether you are specifying an existing display or a new display:

> - If you are specifying an existing display, the position of the display is not changed.
> - If you are specifying a new display, it is positioned at window H1 or H2, alternating between H1 and H2 each time you create another display.

> #### display-kind

> Specifies the display kind. Valid keywords are as follows:

> DO ( command[;...]) | Specifies an automatically updated output display. The commands are executed in the order listed each time the debugger gains control. Their output forms the contents of the display. If you specify more than one command, the commands must be separated by semicolons.
> INSTRUCTION | Specifies an instruction display. If selected as the current instruction display with the SELECT/INSTRUCTION command, it displays the output from subsequent EXAMINE/INSTRUCTION commands.
> INSTRUCTION ( command) | (VAX only) Specifies an automatically updated instruction display. The command specified must be an EXAMINE/INSTRUCTION command. The instruction display is updated each time the debugger gains control.
> OUTPUT | Specifies an output display. If selected as the current output display with the SELECT/OUTPUT command, it displays any debugger output that is not directed to another display. If selected as the current input display with the SELECT/INPUT command, it echoes debugger input. If selected as the current error display with the SELECT/ERROR command, it displays debugger diagnostic messages.
> REGISTER | Specifies an automatically updated register display. The display is updated each time the debugger gains control.
> SOURCE | Specifies a source display. If selected as the current source display with the SELECT/SOURCE command, it displays the output from subsequent TYPE or EXAMINE/SOURCE commands.
> SOURCE ( command) | Specifies an automatically updated source display. The command specified must be a TYPE or EXAMINE/SOURCE command. The source display is updated each time the debugger gains control.

> You cannot change the display kind of the PROMPT display.

> If you omit the display-kind parameter, the display kind depends on whether you are specifying an existing display or a new display:

> - If you specify an existing display, the display kind is not changed.
> - If you specify a new display, an OUTPUT display is created.

### Qualifiers

> #### /CLEAR

> Erases the entire contents of a specified display. Do not use this qualifier with /GENERATE or when creating a new display.

> #### /DYNAMIC (default)

> #### /NODYNAMIC

> Controls whether a display automatically adjusts its window dimensions proportionally when the screen height or width is changed by a SET TERMINAL command. By default (/DYNAMIC), all user-defined and predefined displays adjust their dimensions automatically.

> #### /GENERATE

> Regenerates the contents of a specified display. Only automatically generated displays are regenerated. These include DO displays, register displays, source (cmd-list) displays, and instruction (cmd-list) displays. The debugger automatically regenerates all these kinds of displays before each prompt. If you do not specify a display, it regenerates the contents of all automatically generated displays. Do not use this qualifier with /CLEAR or when creating a new display.

> #### /HIDE

> Places a specified display at the bottom of the display pasteboard (same as /PUSH). This hides the specified display behind any other displays that share the same region of the screen. You cannot hide the PROMPT display.

> #### /MARK_CHANGE

> #### /NOMARK_CHANGE (default)

> Controls whether the lines that change in a DO display each time it is automatically updated are marked. Not applicable to other kinds of displays.

> When you use /MARK_CHANGE, any lines in which some contents have changed since the last time the display was updated are highlighted in reverse video. This qualifier is particularly useful when you want any variables in an automatically updated display to be highlighted when they change.

> The /NOMARK_CHANGE qualifier (default) specifies that any lines that change in DO displays are not to be marked. This qualifier cancels the effect of a previous /MARK_CHANGE on the specified display.

> #### /POP (default)

> #### /NOPOP

> Controls whether a specified display is placed at the top of the display pasteboard, ahead of any other displays but behind the PROMPT display. By default (/POP), the display is placed at the top of the pasteboard and hides any other displays that share the same region of the screen, except the PROMPT display.

> The /NOPOP qualifier preserves the order of all displays on the pasteboard (same as /NOPUSH).

> #### /PROCESS[=(process-spec)]

> #### /NOPROCESS (default)

> Used only when debugging multiprocess programs (kept debugger only). Controls whether the specified display is process specific (that is, whether the specified display is associated only with a particular process). The contents of a process-specific display are generated and modified in the context of that process. You can make any display process specific, except the PROMPT display.

> The /PROCESS=(process-spec) qualifier causes the specified display to be associated with the specified process. You must include the parentheses. Use any of the following process-spec forms:

> [%PROCESS_NAME] process-name | The process name, if that name does not contain spaces or lowercase characters. The process name can include the asterisk (*) wildcard character.
> [%PROCESS_NAME] " process-name" | The process name, if that name contains spaces or lowercase characters. You can also use apostrophes (') instead of quotation marks (").
> %PROCESS_PID process_id | The process identifier (PID, a hexadecimal number).
> [%PROCESS_NUMBER] process-number (or %PROC process-number) | The number assigned to a process when it comes under debugger control. A new number is assigned sequentially, starting with 1, to each process. If a process is terminated with the EXIT or QUIT command, the number can be assigned again during the debugging session. Process numbers appear in a SHOW PROCESS display. Processes are ordered in a circular list so they can be indexed with the built-in symbols %PREVIOUS_PROCESS and %NEXT_PROCESS.
> process-set-name | A symbol defined with the DEFINE/PROCESS_SET command to represent a group of processes.
> %NEXT_PROCESS | The next process after the visible process in the debugger's circular process list.
> %PREVIOUS_PROCESS | The process previous to the visible process in the debugger's circular process list.
> %VISIBLE_PROCESS | The process whose stack, register set, and images are the current context for looking up symbols, register values, routine calls, breakpoints, and so on.

> The /PROCESS qualifier causes the specified display to be associated with the process that was the visible process when the DISPLAY/PROCESS command was executed.

> The /NOPROCESS qualifier (which is the default) causes the specified display to be associated with the visible process, which might change during program execution.

> If you do not specify /PROCESS, the current process-specific behavior (if any) of the specified display remains unchanged.

> #### /PUSH

> #### /NOPUSH

> The /PUSH qualifier has the same effect as /HIDE. The /NOPUSH qualifier preserves the order of all displays on the pasteboard (same as /NOPOP).

> #### /REFRESH

> Refreshes the terminal screen. Do not specify any command parameters with this qualifier. You can also use Ctrl/W to refresh the screen.

> #### /REMOVE

> Marks the display as being removed from the display pasteboard, so it is not shown on the screen unless you explicitly request it with another DISPLAY command. Although a removed display is not visible on the screen, it still exists and its contents are preserved. You cannot remove the PROMPT display.

> #### /SIZE:n

> Sets the maximum size of a display to n lines. If more than n lines are written to the display, the oldest lines are lost as the new lines are added. If you omit this qualifier, the maximum size of the display is as follows:
> - If you specify an existing display, the maximum size is unchanged.
> - If you are creating a display, the default size is 64 lines.

> For an output or DO display, /SIZE:n specifies that the display should hold the n most recent lines of output. For a source or instruction display, n gives the number of source lines or lines of instructions that can be placed in the memory buffer at any one time. However, you can scroll a source display over the entire source code of the module whose code is displayed (source lines are paged into the buffer as needed). Similarly, you can scroll an instruction display over all of the instructions of the routine whose instructions are displayed (instructions are decoded from the image as needed).

### Description

> You can use the DISPLAY command to create a display or to modify an existing display.

> To create a display, specify a name that is not already used as a display name (the SHOW DISPLAY command identifies all existing displays).

> By default, the DISPLAY command places a specified display on top of the display pasteboard, ahead of any other displays but behind the PROMPT display, which cannot be hidden. The specified display thus hides the portions of other displays (except the PROMPT display) that share the same region of the screen.

> For a list of the key definitions associated with the DISPLAY command, type Help Keypad_Definitions_CI. Also, use the SHOW KEY command to determine the current key definitions.

> Related commands:

> > Ctrl/W
> > EXPAND
> > MOVE
> > SET PROMPT
> > (SET,SHOW) TERMINAL
> > (SET,SHOW,CANCEL) WINDOW
> > SELECT
> > (SHOW,CANCEL) DISPLAY

### Examples

#1
    DBG> DISPLAY REG

> This command shows the predefined register display, REG, at its current window location.

#2
    DBG> DISPLAY/PUSH INST

> Previous | Next | Contents | Index

> | privacy and legal statement |
> 4538PRO_044.HTML