DEBUG DEFINE — VMS C_3.0
When used with the /ADDRESS, /COMMAND, /PROCESS_GROUP, or /VALUE
qualifier (/ADDRESS is the default), the DEFINE command is used
to assign a symbolic name (a string) to an address expression, a
debugger command, a group of processes, or a value, respectively.
This enables you to define an abbreviated name or string that you
can then use to refer to an address, a command, a group of
processes, or a value.
When used with /KEY, the DEFINE command is used to assign a
string to a function key. See the /KEY subtopic for complete
information on DEFINE/KEY.
See the /PROCESS_GROUP subtopic for complete information on
DEFINE/PROCESS_GROUP.
Format for /ADDRESS /COMMAND or /VALUE:
DEFINE [/qualifier] symbol=expression [,symbol=expression ...]
Additional information available:
/ADDRESS/COMMAND/KEY/LOCAL/PROCESS_GROUP
/VALUE
Examples
Note: See the /KEY subtopic for additional examples of
DEFINE/KEY. See the /PROCESS_GROUP subtopic for examples of
DEFINE/PROCESS_GROUP.
! In the following example we define a short name "X" for a
! program location whose name is long. Note that DEFINE/ADDRESS
! is the default, so we do not need to specify it here.
!
DBG> DEFINE X = ROUTINENAME\SUBROUTINENAME\VARNAME
DBG> EX X
ROUTINENAME\SUBROUTINENAME\VARNAME: 17
! The following abbreviates a debugger command.
!
DBG> DEF/COM Z = "STEP/SILENT; EX ARR[I]"
DBG> Z ! This now does the above command
! The following redefines the keypad key KP0
!
DBG> DEF/KEY/TERM/NOECHO KP0 "STEP/SILENT; EX ARR[I]"
Parameters
symbol
Specifies the name of the symbol to be defined. The symbol can
be composed of alphanumeric (A-Z and 0-9) characters and must not
start with a numeric.
For DEFINE/KEY, key-name must be the name of a keypad key.
expression
For DEFINE/ADDRESS, any address expression.
For DEFINE/COMMAND or DEFINE/KEY, any string enclosed in quotes
("). Quotes inside quotes must be doubled.
For DEFINE/VALUE, any language expression in the currently set
language.
/ADDRESS
This specifies that the expression is to be interpreted as an
address. The defined symbol can then be used anywhere that an
address expression is allowed, for example, in the EXAMINE
command, in the SET WATCH command, and so on. /ADDRESS is the
default.
Example:
DBG> DEFINE X = PROGRAM\VARNAME[4].COMPNAME
DBG> SET WATCH X
DBG> EXAM X
/COMMAND
This specifies that the expression is to be interpreted as a
string containing a debugger command. The defined symbol can
then be used as a debugger command, and it is expanded into the
given string. You can also define just the initial portion of a
debugger command.
Example:
DBG> DEF/COM EB = "EXAM/BINARY/LONG "
DBG> EB Y
PROGRAM\Y: 11000111 00000000 10000001 01111110
/KEY
DEFINE/KEY equates a string to a keypad key. This command gives
the same capabilities as DEFINE/KEY in DCL, and has the same
syntax.
You must have mode set to "KEYPAD". Default definitions are
provided (see "HELP KEYPAD"). DEFINE/KEY lets you change the
default definitions.
Format:
DEFINE/KEY [/qualifiers] key-name "key-definition"
Examples
DBG> DEFINE/KEY/NOECHO/TERMINATE KP0 "STEP"
DBG> DEFINE/KEY/IF_STATE=GOLD KP1 "EXAMINE X"
Additional information available:
/ECHO/IF_STATE/LOCK_STATE/LOG/NOECHO/NOIF_STATE
/NOLOCK_STATE/NOLOG/NOSET_STATE/NOTERMINATE
/SET_STATE/TERMINATE
/ECHO
(Default) Specifies that the keypad definition be echoed on the
terminal when the key is used.
/IF_STATE=state-name
Specifies that the key definition applies only to that state.
So, for example, if the PF1 key sets you to "GOLD" state, and you
do
DEFINE/KEY/IF_STATE=GOLD KP0 "EXAMINE X"
then the sequence "PF1", "KP0" expands to "EXAMINE X".
key-names
Key-name LK201 VT100-type VT52-type
PF1 PF1 PF1 PF1
PF2 PF2 PF2 PF2
PF3 PF3 PF3 PF3
PF4 PF4 PF4 PF4
KP0,...,KP9 0,1,...,9 0,1,...,9 0,1,...,9
PERIOD . . .
COMMA , , ,
MINUS - - -
ENTER Enter ENTER ENTER
UP ^ ^ ^
DOWN V V V
LEFT <- <- <-
RIGHT -> -> ->
E1 Find N/A N/A
E2 Insert Here N/A N/A
E3 Remove N/A N/A
E4 Select N/A N/A
E5 Prev Screen N/A N/A
E6 Next Screen N/A N/A
HELP Help N/A N/A
DO Do N/A N/A
F6,F7,...,F20 F6,F7,...,F20 N/A N/A
/LOCK_STATE
Specifies that the state set by the SET_STATE qualifier is to
remain the active state until explicitly changed.
/LOG
(Default) Controls whether the system displays a message
indicating that the key definition has been successfully created.
/NOECHO
Specifies that the keypad definition not be echoed on the
terminal when the key is used.
/NOIF_STATE
(Default) Specifies that the key is to be defined for the current
state only.
/NOLOCK_STATE
(Default) Specifies that the state transition specified by the
current key take effect only until the next terminator character
is typed, or until after the next function key is pressed.
/NOLOG
Inhibits display of the message confirming the key definition.
/NOSET_STATE
(Default) Do not change the current state when the function key
being defined is entered.
/NOTERMINATE
(Default) Specifies that the key expansion does not terminate the
command.
/SET_STATE=state-name
Specifies that using the key has the effect of putting you into
the specified state when the key being defined is used.
/TERMINATE
Specifies that the keypad key terminates the command.
/LOCAL
Specifies that the symbol definition is local to the command
procedure and is deleted when the command procedure is exited.
This qualifier is only valid for /ADDRESS, /COMMAND, and /VALUE.
/PROCESS_GROUP
Note: This command applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS).
The DEFINE/PROCESS_GROUP command assigns a symbolic name to a
list of process specifications. You can then use the symbol in
any command where a list of process specifications is allowed.
The command does not verify the existence of a specified process.
This enables you to specify processes that do not yet exist.
Format
DEFINE/PROCESS_GROUP process-group-name [=process-spec[, . . . ]]
To identify a symbol that was defined with the
DEFINE/PROCESS_GROUP command, use the SHOW SYMBOL/DEFINED
command. To delete a symbol that was defined with the
DEFINE/PROCESS_GROUP command, use the DELETE command.
Additional information available:
Examples
1 DBG_1> DEFINE/PROCESS_GROUP SERVERS=FILE_SERVER, NETWORK_SERVER
DBG_1> SHOW PROCESS SERVERS
Number Name Hold State Current PC
* 1 FILE_SERVER step FS_PROG\%LINE 37
2 NETWORK_SERVER break NET_PROG\%LINE 24
This DEFINE/PROCESS_GROUP command assigns the symbolic
name SERVERS to the process group consisting of FILE_
SERVER and NETWORK_SERVER. The SHOW PROCESS SERVERS
command displays information about the processes that
make up the group SERVERS.
2 USER_3> DEFINE/PROCESS_GR G1 = %PROCESS_NUMBER 1,%VISIBLE_PROCESS
USER_3> SHOW SYMBOL/DEFINED G1
defined G1
bound to: "%PROCESS_NUMBER 1, %VISIBLE_PROCESS"
was defined /process_group
USER_3> DELETE G1
This DEFINE/PROCESS_GROUP command assigns the symbolic
name G1 to the process group consisting of process
1 and the visible process (process 3). The command
SHOW SYMBOL/DEFINED G1 identifies the defined symbol
G1. The command DELETE G1 deletes the symbol from the
DEFINE symbol table.
3 DBG_2> DEFINE/PROCESS_GROUP A = B,C,D
DBG_2> DEFINE/PROCESS_GROUP B = E,F,G
DBG_2> DEFINE/PROCESS_GROUP E = I,J,A
%DEBUG-E-NORECSYM, recursive PROCESS_GROUP symbol definition
encountered at or near "A"
This series of DEFINE/PROCESS_GROUP commands
illustrate valid and invalid uses of the command.
Parameters
process-group-name
Specifies a symbolic name to be assigned to a list of process
specifications. The symbolic name can be composed of
alphanumeric characters and underscores. The debugger converts
lowercase alphabetic characters to uppercase. The first
character must not be a number. The symbolic name must be no
more than 31 characters long.
process-spec
Specifies a process. Use any of the following forms:
[%PROCESS_NAME] process-name The VMS process name, if that
name contains no spaces or
lowercase characters[1].
[%PROCESS_NAME] "process-name" The VMS process name, if that
name contains spaces or lowercase
characters. You can also use
apostrophes (') instead of
quotation marks (").
%PROCESS_PID process_id The VMS process identification
number (PID, a hexadecimal number).
%PROCESS_NUMBER process-number The number assigned to a process
(or %PROC process-number) when it comes under debugger control.
Process numbers appear in a
SHOW PROCESS display.
process-group-name A symbol defined with the
DEFINE/PROCESS_GROUP command to
represent a group of processes.
Do not specify a recursive
symbol definition.
%NEXT_PROCESS The next process in the debugger's
circular process list after the
visible process.
%PREVIOUS_PROCESS The previous process in the
debugger's circular process list
before the visible process.
%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.
_______________________________________________________
[1]The process name can include the asterisk wildcard
character (*)
If you do not specify a process, the symbolic name is created but
contains no process entries.
/VALUE
Specifies that the expression is to be interpreted as a value in
the current language. The defined symbol can then be used
anywhere a value expression is allowed, such as in an EVALUATE
command.
Example:
! The following defines an abbreviation for a double-floating
number.
!
DBG> DEF/VAL F = 1.103763783D27
DBG> EVAL F + 1.0D27
2.103763783D27