DEBUG DEBUG — VMS 5.2
For more detailed help, choose one of the additional topics
listed below:
Additional information available:
ATTACHCALLCANCELCONNECTCTRL_CCTRL_YCTRL_Z
DECLAREDEFINEDELETEDEPOSITDISABLEDISPLAYDO
EDITENABLEEVALUATEEXAMINEEXITEXITLOOPEXPAND
EXTRACTFORGOHELPIFMOVEQUIT
REPEATSAVESCROLLSEARCHSELECTSETSHOW
SPAWNSS$_DEBUGSTEPSYMBOLIZETYPE
WHILE
@file specAddress ExpressionBuilt in SymbolsDebugging Configurations
KeypadLanguagesLogical NamesMessagesMultiprocessNew Features
PathnamesRelease NotesScreen Features
@file spec
Execute debugger commands from the specified file. If you have
entered a "SET OUTPUT VERIFY", all commands read from a command
procedure are echoed on the terminal.
Parameters may be passed in to a command procedure. Parameters
can be address expressions, language expressions, or strings.
(Corresponding to the three kinds of DEFINE symbols.) Inside the
command procedure, the parameters get bound to names via the
DECLARE command.
Format:
@file-spec [ parameter [,parameter...]]
Additional information available:
Examples
The following example invokes a "SETUP" command file that
establishes a particular set of defaults. The commands in the
command file are echoed because of the "SET OUT VERIFY".
DBG> SET OUT VERIFY
DBG> @SETUP.COM
!entering command file SETUP.COM
! SET SOURCE [],SRC$
! SET MODE SCREEN
! SET STEP SILENT
! SET RADIX HEX
!exiting command file SETUP.COM
Parameters
file-specification
Specifies the command procedure to be executed. If the
file-specification does not include a file type, the default file
type .COM is used. A logical name may be given. The default
file specification can be modified by using the SET ATSIGN
command. (See the help on SET ATSIGN).
parameter
This can be an address or value expression in the current
language, or a quoted string. It is bound to a name within the
command procedure by using the DECLARE command. (See the help on
DECLARE).
For example:
DBG> @DUMP X
!entering command procedure DUMP.COM
! DECLARE P1:ADDRESS
! EXAMINE P1
X: 23
!exiting command procedure DUMP.COM
Address Expression
The term "address expression" is used in many of the descriptions
in this help library. An address expression specifies a location
in your program. Commands for which you specify address
expressions are: SET BREAK, SET TRACE, SET WATCH, EXAMINE,
EVALUATE/ADDRESS, and DEPOSIT (at the left of the equal sign).
In general, you can specify addresses using the syntax of the
currently set language. For example,
DBG> EXAMINE A(1) ! FORTRAN
DBG> SET WATCH A[1] ! PASCAL
DBG> EXAMINE C OF R ! COBOL
In addition, you can specify addresses numerically, and you can
also use the built-in symbols %LINE and %LABEL for referring to
code locations:
DBG> EXAMINE 512
DBG> SET BREAK %LINE 10
Finally, you can use the following operators to specify addresses
that you might not be able to get to by name:
+ - * / Arithmetic operators
@ or . Indirection
<p,s> Select bit field
! Examine the instruction 3 bytes after line 10
DBG> EXAMINE %LINE 10 + 3
! Examine the location pointed to by P
DBG> EXAMINE @P
The difference between address expressions and language
expressions can best be illustrated by an example:
DBG> EVAL/ADDR X
512
DBG> EXAM X
X: 0
DBG> EVAL X+1 ! Language expression: adds 0+1
1
DBG> EXAM X+1 ! Address expression: 1 byte beyond X
513: 0
ATTACH
The ATTACH command allows you to switch to another process. It
is used in the same way as the ATTACH command in DCL.
Format:
ATTACH process-name
Example:
DBG> SPAWN ! Create SMITH_1 subprocess
$ ATTACH SMITH ! attach back to parent
DBG> ATTACH SMITH_1 ! attach to subprocess
Built in Symbols
The debugger built-in symbols provide control over the scanning
of language expressions and offer additional capability in
specifying entities in your program. They are logically grouped
here according to their purpose.
%R0 through %R11, %AP (R12), %FP (R13), %SP (R14), %PC (R15), and
%PSL -- used to specify the VAX registers.
%NAME -- used to construct identifiers.
%PARCNT -- used in command procedures to count parameters passed.
%BIN, %DEC, %HEX, and %OCT, -- used to control radix.
%CURLOC, %NEXTLOC, %PREVLOC, %CURVAL -- used to specify
consecutive program locations and the current value of an entity.
%LABEL and %LINE -- used to specify numeric labels and line
numbers.
%PAGE and %WIDTH -- used to specify the screen height and width.
%CURDISP, %CURSCROLL, %NEXTDISP, %NEXTINST, %NEXTOUTPUT,
%NEXTSCROLL, and %NEXTSOURCE -- used to specify screen-mode
displays.
%SOURCE_SCOPE -- used to specify the first scope down the call
stack for which source lines are available for display in screen
mode.
%ADAEXC_NAME, %EXC_FACILITY, %EXC_NAME, %EXC_NUM, and
%EXC_SEVERITY -- used to provide information about the current
exception.
%PROCESS_NAME, %PROCESS_PID, %PROCESS_NUMBER, %NEXT_PROCESS,
%PREVIOUS_PROCESS, and %VISIBLE_PROCESS -- used to specify
processes in multiprocess programs.
%ACTIVE_TASK, %CALLER_TASK, %NEXT_TASK, %TASK, and %VISIBLE_TASK
-- used to specify tasks in ADA tasking programs.
Additional information available:
%AP%FP%SP%PC%NAME%PARCNT%BIN
%DEC%HEX%OCT%CURLOC%NEXTLOC%PREVLOC%CURVAL
%LABEL%LINE%PAGE%WIDTH%CURDISP%CURSCROLL
%NEXTDISP%NEXTINST%NEXTOUTPUT%NEXTSCROLL
%NEXTSOURCE%SOURCE_SCOPE%PROCESS_NAME%PROCESS_PID
%PROCESS_NUMBER%NEXT_PROCESS%PREVIOUS_PROCESS%VISIBLE_PROCESS
%ADAEXC_NAME%EXC_FACILITY%EXC_NAME%EXC_NUM
%EXC_SEVERITY%ACTIVE_TASK%CALLER_TASK%NEXT_TASK
%TASK%VISIBLE_TASK
%Rn
%R0 through %R11 specify the VAX general purpose registers R0
through R11. For example:
DBG> DEPOSIT %R1 = 23
%AP
%AP specifies the VAX "argument pointer" register (R12).
%FP
%FP specifies the VAX "frame pointer" register (R13).
%SP
%SP specifies the VAX "stack pointer" register (R14).
%PC
%PC specifies the VAX "program counter" register (R15). The PC
contains the address of the next instruction to be executed by
the processor. For example:
DBG> EXAMINE %PC ! Display the value contained in the PC
MOD3\%PC: 1554 ! (the address of the next instruction to execute)
DBG> EXAMINE .%PC !Display the value at the address contained in the PC
MOD3\%LINE 12: MOVL B^12(R11),R1 !(the next instruction to execute)
3 %LANGUAGE
%NAME
%NAME allows identifiers to be constructed which are not
ordinarily legal in the current language.
Format:
%NAME id-char-string
%NAME 'any-char-string'
Examples:
EX %NAME 12 ! Allows examination of variable with name '12'
EX %NAME 'P.AAA' ! Allows examination of generated label P.AAA
%PARCNT
The %PARCNT symbol specifies the number of actual parameters to
the current command procedure. For example, suppose the command
file ABC is invoked with the command @ABC 111,222,333. Inside
ABC, %PARCNT then has the value 3 because there are three
parameters on this particular call to ABC. %PARCNT is used in
command procedures that can take a variable number of actual
parameters. %PARCNT can only be used inside command files; it is
not defined when commands are entered from the terminal.
Sample Format:
EVAL %PARCNT
FOR I = 1 TO %PARCNT DO (DECLARE X:VALUE; EVAL X)
%BIN
Specifies that the following numeric literal (or all numeric
literals in the following parenthesized expression) be
interpreted in binary radix.
Sample Format:
DBG> EVALUATE/DEC %BIN 10
2
DBG> EVALUATE/DEC %BIN (10 + 10)
4
%DEC
Specifies that the following numeric literal (or all numeric
literals in the following parenthesized expression) be
interpreted in decimal radix.
Sample Format:
DBG> EVALUATE/HEX %DEC 10
0A
DBG> EVALUATE/HEX %DEC (10 + 10)
14
%HEX
Specifies that the following numeric literal (or all numeric
literals in the following parenthesized expression) be
interpreted in hexadecimal radix.
Sample Format:
DBG> EVALUATE/DEC %HEX 10
16
DBG> EVALUATE/DEC %HEX (10 + 10)
32
%OCT
Specifies that the following numeric literal (or all numeric
literals in the following parenthesized expression) be
interpreted in octal radix.
Sample Format:
DBG> EVALUATE/DEC %OCT 10
8
DBG> EVALUATE/DEC %OCT (10 + 10)
16
%CURLOC
Specifies the current logical entity -- that is, the program
location last referenced by an EXAMINE or DEPOSIT command. The
period character "." can also be used for this purpose.
Sample Format:
DBG> EXAMINE RADIUS
CIRCLE\RADIUS: 0.0000000E+00
DBG> DEPOSIT %CURLOC = 1 ! Set RADIUS to 1
DBG> DEPOSIT . = 2 ! Set RADIUS to 2
%NEXTLOC
Specifies the logical successor of the current entity -- that is,
the program location that logically follows the location last
referenced by an EXAMINE or DEPOSIT command. Note that the
EXAMINE command without a parameter is equivalent to EXAMINE
%NEXTLOC.
Sample Format:
DBG> EXAMINE PRIMES(4)
SIEVE\PRIMES(4): 7
DBG> EXAMINE %NEXTLOC
SIEVE\PRIMES(5): 11
DBG> EXAMINE ! Equivalent to EXAMINE %NEXTLOC
SIEVE\PRIMES(6): 13
%PREVLOC
Specifies the logical predecessor of the current entity -- That
is, the program location that logically precedes the location
last referenced by an EXAMINE or DEPOSIT command. The circumflex
character "^" can also be used for this purpose.
Sample Format:
DBG> EXAMINE PRIMES(6)
SIEVE\PRIMES(6): 13
DBG> EXAMINE %PREVLOC
SIEVE\PRIMES(5): 11
DBG> EXAMINE ^
SIEVE\PRIMES(4): 7
%CURVAL
Specifies the value last displayed by an EVALUATE or EXAMINE
command, or deposited by a DEPOSIT command. The backslash
character "\" can also be used for this purpose.
Sample Format:
DBG> EXAMINE RADIUS
CIRCLE\RADIUS: 0.0000000E+00
DBG> EVALUATE %CURVAL
0.0000000E+00
%LABEL
"%LABEL n" is the debugger syntax for referring to label n in
your program. This is intended for languages like FORTRAN which
have numeric program labels. You can qualify the label with a
pathname specifying the containing module. For example:
SET BREAK MODULENAME\%LABEL 10
The "old" syntax of "%LABEL MODULENAME\10" is no longer accepted.
%LINE
"%LINE n" is the debugger syntax for referring to line n in your
program. You can qualify the line number with a pathname
specifying the containing module. For example:
SET BREAK MODULENAME\%LINE 10
The "old" syntax of "%LINE MODULENAME\10" is no longer accepted.
%PAGE
Specifies the current height of the screen, in lines, as used by
the debbuger. For example, the following command defines a
screen mode window named MIDDLE that occupies a region around the
middle of the screen:
DBG> SET WINDOW MIDDLE AT (%PAGE/4,%PAGE/2,%WIDTH/4,%WIDTH/2)
%WIDTH
Specifies the current width of the screen, in columns, as used by
the debugger. For example, the following command defines a
screen mode window named MIDDLE that occupies a region around the
middle of the screen:
DBG> SET WINDOW MIDDLE AT (%PAGE/4,%PAGE/2,%WIDTH/4,%WIDTH/2)
%CURDISP
Specifies the current display (screen mode). This is the display
most recently referenced with a DISPLAY or SET DISPLAY command--
the least occluded display. For example:
DBG> SELECT/SCROLL %CURDISP
%CURSCROLL
Specifies the current (screen mode) scrolling display. This is
the default display for the SCROLL, MOVE, and EXPAND commands, as
well as for the associated keypad keys (2, 4, 6, and 8). For
example:
DBG> EXPAND/DOWN:5 %CURSCROLL
%NEXTDISP
Specifies the next display after the current display in the
screen-mode display list. The next display is the display that
follows the topmost display. Because the display list is
circular, this is the display at the bottom of the
pasteboard--the most occluded display. For example:
DBG> DISPLAY/POP %NEXTDISP
%NEXTINST
Specifies the next instruction display after the current
instruction display in the screen-mode display list. The current
instruction display is the display that receives the output from
EXAMINE/INSTRUCTION commands. For example:
DBG> DISPLAY/REMOVE %NEXTINST
%NEXTOUTPUT
Specifies the next output display after the current output
display in the screen-mode display list. An output display
receives debugger output that is not already directed to another
display. For example:
DBG> EXTRACT %NEXTOUTPUT OUT4.TXT
%NEXTSCROLL
Specifies the next display after the current scrolling display in
the screen-mode display list. For example:
DBG> SELECT/SCROLL %NEXTSCROLL
%NEXTSOURCE
Specifies the next source display after the current source
display in the screen-mode display list. The current source
display is the display which receives the output from TYPE and
EXAMINE/SOURCE commands. For example:
DBG> SELECT/SOURCE %NEXTSOURCE
%SOURCE_SCOPE
Specifies the first scope down the call stack for which source
lines are available for display in screen mode. This symbol is
used in the definition of the predefined screen-mode source
display SRC:
DBG> SET DISPLAY SRC AT H1 SOURCE (EXAMINE/SOURCE .%SOURCE_SCOPE\%PC)
%PROCESS_NAME
Note: Applies to a multiprocess debugging configuration (when
DBG$PROCESS has the value MULTIPROCESS).
When specifying a VMS process name in a debugger command string,
you can optionally precede the name with the symbol
%PROCESS_NAME. For example:
DBG_2> EXIT %PROCESS_NAME JONES_4
Type HELP Multiprocess Specifying_Processes for more information.
%PROCESS_PID
Note: Applies to a multiprocess debugging configuration (when
DBG$PROCESS has the value MULTIPROCESS).
When specifying a VMS process identification number (PID) in a
debugger command string, you must precede the PID with the symbol
%PROCESS_PID. For example:
DBG_2> CONNECT %PROCESS_PID 258001B6
Type HELP Multiprocess Specifying_Processes for more information.
%PROCESS_NUMBER
Note: Applies to a multiprocess debugging configuration (when
DBG$PROCESS has the value MULTIPROCESS).
When specifying a debugger-assigned process number in a debugger
command string, you must precede the number with the symbol
%PROCESS_NUMBER (or the abbreviation %PROC). For example:
DBG_2> SHOW PROCESS %PROC 3
Type HELP Multiprocess Specifying_Processes for more information.
%NEXT_PROCESS
Note: Applies to a multiprocess debugging configuration (when
DBG$PROCESS has the value MULTIPROCESS).
%NEXT_PROCESS specifies the next process in the debugger's
process list after the visible process. For example:
DBG_3> SET PROCESS/HOLD %NEXT_PROCESS
Type HELP Multiprocess Specifying_Processes for more information.
%PREVIOUS_PROCESS
Note: Applies to a multiprocess debugging configuration (when
DBG$PROCESS has the value MULTIPROCESS).
%PREVIOUS_PROCESS specifies the previous process in the
debugger's process list before the visible process. For example:
DBG_3> SHOW PROCESS/FULL %PREVIOUS_PROCESS
Type HELP Multiprocess Specifying_Processes for more information.
%VISIBLE_PROCESS
Note: Applies to a multiprocess debugging configuration (when
DBG$PROCESS has the value MULTIPROCESS). Type HELP Multiprocess
Specifying_Processes for more information.
%VISIBLE_PROCESS specifies the visible process. This is the
process whose stack, register set, and images are the current
context for looking up symbols, register values, routine calls,
breakpoints, and so on. For example:
DBG_2> DO/PROCESS=(%VISIBLE_PROCESS,%NEXT_PROCESS) (EXAMINE X)
Type HELP Multiprocess Specifying_Processes for more information.
%ADAEXC_NAME
"%ADAEXC_NAME is a special form of %EXC_NAME for ADA programs.
In ADA, an exception can be raised with syntax such as "raise
XXX;". In this case, the exception name in the VMS sense is just
"EXCEPTION", and that is what %EXC_NAME returns. The ADA
exception name ("XXX") is returned by %ADAEXC_NAME.
Example:
DBG> SET BREAK/EXCEPTION WHEN (%ADAEXC_NAME = "XXX")
%EXC_FACILITY
"%EXC_FACILITY" gives you the facility of the current exception.
This provides a way of qualifying exception breaks.
Example:
DBG> EVAL %EXC_FACILITY
"SYSTEM"
DBG> SET BREAK/EXC WHEN (%EXC_FAC = "SYSTEM")
%EXC_NAME
"%EXC_NAME" gives you the name of the current exception. This
provides a way of qualifying exception breaks.
Example:
DBG> EVAL %EXC_NAME
"FLTDIV_F"
DBG> SET BREAK/EXC WHEN (%EXC_NAME = "FLTDIV_F")
%EXC_NUM
"%EXC_NUM" gives you the current exception number. This provides
a way of qualifying exception breaks.
Example:
DBG> EVAL %EXC_NUM
12
DBG> EVAL/COND %EXC_NUM
%SYSTEM-F-ACCVIO, access violation at PC !XL, virtual address !XL
DBG> SET BREAK/EXC WHEN (%EXC_NUM = 12)
%EXC_SEVERITY
"%EXC_SEVERITY" gives you the severity code of the current
exception. This provides a way of qualifying exception breaks.
Example:
DBG> EVAL %EXC_SEVERITY
"F"
DBG> SET BREAK/EXC WHEN (%EXC_SEV = "F")
%ACTIVE_TASK
Note: Applies only to ADA tasking programs.
"%ACTIVE_TASK" gives you the currently active task (the one that
was running when the debugger last took control). See the
command "SET TASK/ACTIVE".
Example:
DBG> EVALUATE %ACTIVE_TASK
%TASK 2
%CALLER_TASK
Note: Applies only to ADA tasking programs.
"%CALLER_TASK" gives you the task which is the entry caller of
the active task during a task rendezvous.
If the active task (%ACTIVE_TASK) is not currently executing an
accept statement (that is, a rendezvous is not in progress),
%CALLER_TASK returns %TASK 0.
Example:
The following command sets a breakpoint within an accept
statement. The breakpoint is triggered only when %TASK 3 is the
task making the entry call of the rendezvous.
DBG> TYPE 51:53
module SAMPLE
51: accept RENDEZVOUS do
52: PUT_LINE("Beginning the rendezvous");
53: end RENDEZVOUS;
DBG> SET BREAK %LINE 52 WHEN (%CALLER_TASK = %TASK 3)
%NEXT_TASK
Note: Applies only to ADA tasking programs.
"%NEXT_TASK" gives you the "next" task after the one that is
currently visible (%VISIBLE_TASK). "Next" in this context is
just an internal ordering that cycles through all the tasks.
This lets you set up command procedures that cycle through all
tasks.
Example:
DBG> WHILE %NEXT NEQ %ACTIVE DO -
(SET TASK %NEXT; SHOW CALLS)
%TASK
Note: Applies only to ADA tasking programs.
"%TASK n" (where "n" is a positive decimal integer) is the
debugger syntax for referring to an ADA task by its task ID. The
task ID is a unique number that is associated with a task at the
time the task is created. The task number "n" can be obtained
using the "SHOW TASK/ALL" command or by examining ADA task
objects.
Example:
DBG> EXAMINE T1
T1: %TASK 2
DBG> SET TASK %TASK 2
%VISIBLE_TASK
Note: Applies only to ADA tasking programs.
"%VISIBLE_TASK" gives you the task that the debugger is using to
do symbol lookups. It is the default task assumed by debugging
commands when you do not (or cannot) specify a task. For
example, the debugger command EXAMINE %R0 displays register 0 of
the visible task.
This is normally the same as %ACTIVE_TASK but can be changed
using the SET TASK command.
Example:
DBG> SET TASK %TASK 2
DBG> EVALUATE %VISIBLE
%TASK 2
CALL
The CALL command enables you to execute a routine that was linked
with your program, independently of the normal flow of execution
of your program. The program does not have to include a call to
that routine. One common use of the command is to invoke
procedures that dump debugging information.
Format:
CALL routine-name [(argument [,...])]
The CALL command is one of the four debugger commands that can
cause your program to execute (the others are GO, STEP, and
EXIT).
When you enter the CALL command at an exception breakpoint, any
breakpoints, tracepoints, or watchpoints that were previously set
within the called routine are disabled temporarily so that the
debugger does not lose the exception context. However, such
eventpoints are active if you enter the CALL command at a
location other than an exception breakpoint.
When you enter a CALL command, the debugger takes the following
action:
1. Saves the current values of the general registers.
2. Constructs an argument list.
3. Executes a call to the routine specified in the command and
passes any arguments.
4. Executes the routine.
5. Displays the value returned by the routine in R0. By VMS
convention, after a called routine has executed, register R0
contains the function return value (if the routine is a
function) or the procedure completion status (if the routine
is a procedure that returns a status value). If a called
procedure does not return a status value or function value,
the value in R0 may be meaningless, and the "value returned"
message can be ignored.
6. Restores the values of the general registers to the values
they had just before the CALL command was executed.
7. Issues the prompt.
Additional information available:
ExamplesParametersQualifiersMultiprocess Programs
Examples
1 DBG> CALL SUB1(X)
value returned is 19
DBG>
This command calls the routine SUB1, passing the address of "X"
as the required parameter (by default, the address of the
argument specified is passed). The routine is a function whose
returned value is 19.
2 DBG> CALL SUB(%REF 1)
value returned is 1
DBG>
This command passes a pointer to a memory location containing the
numeric literal 1, into the routine SUB.
3 DBG> SET MODULE SHARE$LIBRTL
DBG> CALL LIB$SHOW_VM
1785 calls to LIB$GET_VM, 284 calls to LIB$FREE_VM, 122216 bytes
still allocated, value returned is 00000001
DBG>
This example shows how you could call the run-time library
routine LIB$SHOW_VM (in the shareable image LIBRTL) to display
virtual memory statistics. The SET MODULE command makes the
universal symbols (routine names) in LIBRTL visible in the main
image. See the description of the /SHARE qualifier of the SHOW
MODULE command for more information on this subject.
Parameters
routine-name
Specifies the name or the virtual address of the procedure to be
called.
argument
Specifies an argument that is required by the routine. Arguments
can be passed by address (the default), by descriptor, by
reference, and by value, as described in the subtopics.
The debugger assumes that the called routine conforms to the VMS
procedure calling standard (see the VAX Architecture Handbook).
However, note that the debugger does not know about all the
argument-passing mechanisms for all supported languages.
Therefore, you may need to specify how to pass parameters-- for
example, use CALL SUB1(%VAL X) rather than CALL SUB1(X). See
your language documentation for complete information on how
arguments are passed to routines.
Additional information available:
%ADDR
Passes the argument by address. This is the default.
Format
CALL routine-name (%ADDR address-expression)
The debugger evaluates the address expression and passes that
address to the routine specified. For simple variables (such as
X), the address of X is passed into the routine. This passing
mechanism is how FORTRAN implements ROUTINE(X). In other words,
for named variables, using %ADDR corresponds to a call by
reference in FORTRAN. For other expressions, however, you must
use the %REF function to call by reference. For complex or
structured variables (such as arrays, records, and access types),
the address is passed when you specify %ADDR, but the called
routine may not handle the passed data properly. Do not specify
a literal value (a number or an expression composed of numbers)
when using %ADDR.
%DESCR
Passes the argument by descriptor.
Format
CALL routine-name (%DESCR language-expression)
The debugger evaluates the language expression and builds a
VAX-standard descriptor to describe the value. The descriptor is
then passed to the routine you named. You would use this
technique to pass strings to a FORTRAN routine.
%REF
Passes the argument by reference.
Format
CALL routine-name (%REF language-expression)
The debugger evaluates the language expression and passes a
pointer to the value, into the called routine. This passing
mechanism corresponds to the way FORTRAN passes the result of an
expression.
%VAL
Passes the argument by value.
Format
CALL routine-name (%VAL language-expression)
The debugger evaluates the language expression and passes the
value directly to the called routine.
Qualifiers
You can specify whether you want the delivery of asynchronous
system traps (ASTs) enabled or disabled during the routine call.
By default, if you do not specify /AST or /NOAST, delivery of
ASTs is enabled in the called routine if, and only if, delivery
was enabled before the CALL command was issued.
Additional information available:
/AST
Specifies that ASTs can be delivered during execution of the
called routine.
/NOAST
Specifies that ASTs cannot be delivered during execution of the
called routine.
Multiprocess Programs
If you are using the multiprocess debugging configuration to
debug a multiprocess program (if the logical name DBG$PROCESS has
the value MULTIPROCESS), note the following additional points:
1. The CALL command is executed in the context of the visible
process, but images in any other unheld processes (processes
that have not been put on hold with a SET PROCESS/HOLD
command) are also allowed to execute. If you use the DO
command to broadcast a CALL command to one or more processes,
the CALL command is executed in the context of each specified
unheld process, but images in any other unheld processes are
also allowed to execute. In all cases, a hold condition in
the visible process is ignored.
2. Once execution is started, the way in which it continues
depends on whether the command SET MODE [NO]INTERRUPT was
entered. By default (SET MODE INTERRUPT), execution
continues until it is suspended in any process. At that
point, execution is interrupted in any other processes that
were executing images, and the debugger prompts for input.
CANCEL
Cancels breakpoints, tracepoints, and watchpoints, and restores
scope and source directory search list and user-set entry/display
modes, radix, and types to their default values. Also cancels
screen displays and windows. The item canceled depends on the
keyword specified in the command.
Format:
CANCEL keyword [/qualifier] [parameters]
Additional information available:
ALLBREAKDISPLAYIMAGEMODEMODULERADIX
SCOPESOURCETRACETYPEWATCHWINDOW
Parameters
keyword
Specifies the item to be canceled. Keyword can be ALL, BREAK,
DISPLAY, IMAGE, MODE, MODULE, RADIX, SCOPE, SOURCE, TRACE,
TYPE/OVERRIDE, WATCH, or WINDOW,
qualifier
Depends on the keyword specified.
parameters
Depends on the keyword specified.
ALL
Cancels all breakpoints, tracepoints, and watchpoints. Restores
some modes established with the SET MODE command to their default
values. Restores the scope and type to their default values.
Format:
CANCEL ALL [/qualifier]
The CANCEL ALL command performs the following steps:
1. Cancels all breakpoints, tracepoints, and watchpoints. This
is equivalent to entering the commands CANCEL BREAK/ALL,
CANCEL TRACE/ALL, and CANCEL WATCH/ALL. Depending on the
type of program (for example Ada, multiprocess), certain
predefined breakpoints or tracepoints may be set
automatically when you invoke the debugger. By default
(CANCEL ALL/USER), only user defined breakpoints,
tracepoints, and watchpoints are canceled -- those that were
previously set explicitly with the SET BREAK, SET TRACE, and
SET WATCH commands. If you specify /PREDEFINED but not
/USER, all predefined (but no user defined) breakpoints,
tracepoints, and watchpoints are canceled. If you specify
both /PREDEFINED and /USER, all predefined and user defined
breakpoints, tracepoints, and watchpoints are canceled.
2. Restores the scope search list to its default value (0,1,2, .
. . ,n). This is equivalent to entering the CANCEL SCOPE
command.
3. Restores the data type for memory locations that are
associated with a compiler generated type to the associated
type. Restores the type for locations that are not
associated with a compiler generated type to "longword
integer". This is equivalent to entering the commands CANCEL
TYPE/OVERRIDE and SET TYPE LONGWORD.
4. Restores some modes established with the SET MODE command to
their default values. This is equivalent to entering the
following command:
DBG> SET MODE LINE,SYMBOLIC,NOG_FLOAT
5. The CANCEL ALL command does not affect the current language
setting or modules included in the run-time symbol table (SET
MODULE).
CANCEL ALL does not affect the current language setting or the
modules included in the debugger symbol table.
Additional information available:
Examples
1 DBG> CANCEL ALL
This command cancels all user defined breakpoints, tracepoints,
and watchpoints and restores scopes, types, and some modes to
their default values. In this example, there are no predefined
breakpoints, tracepoints, or watchpoints.
2 DBG> CANCEL ALL
%DEBUG-I-PREDEPTNOT, predefined eventpoint(s) not canceled
This command cancels all user defined breakpoints, tracepoints,
and watchpoints and restores scopes, types, and some modes to
their default values. In this example, there are some predefined
breakpoints, tracepoints, or watchpoints, and these are not
canceled, by default.
3 DBG> CANCEL ALL/PREDEFINED
This command cancels all predefined breakpoints, tracepoints, and
watchpoints and restores scopes, types, and some modes to their
default values. No user defined breakpoints, tracepoints, or
watchpoints are affected.
Qualifiers
Additional information available:
/PREDEFINED
Cancels all predefined (but no user defined) breakpoints,
tracepoints, and watchpoints.
/USER
Cancels all user defined (but no predefined) breakpoints,
tracepoints, and watchpoints. CANCEL ALL/USER is assumed by
default unless you specify /PREDEFINED.
BREAK
Cancels breakpoints.
Format:
CANCEL BREAK [/qualifier] [address-expression [,...]]
Breakpoints may be user defined or predefined. User defined
breakpoints are those that you set explicitly with the SET BREAK
command. Predefined breakpoints, which depend on the type of
program you are debugging (for example, Ada or multiprocess), are
established automatically when you invoke the debugger. Use the
SHOW BREAK command to identify all breakpoints that are currently
set. Any predefined breakpoints are identified as such.
User defined and predefined breakpoints are set and canceled
independently. For example, a location or event may have both a
user defined and a predefined breakpoint. Canceling the user
defined breakpoint does not affect the predefined breakpoint, and
conversely.
To cancel only user defined breakpoints, do not specify
/PREDEFINED with the CANCEL BREAK command (/USER is the default).
To cancel only predefined breakpoints, specify /PREDEFINED but
not /USER. To cancel both user defined and predefined
breakpoints, specify both /USER and /PREDEFINED.
In general, note that the effect of the CANCEL BREAK command is
symmetrical with that of the SET BREAK command (even though the
SET BREAK command is used only with user defined breakpoints).
Thus,
to cancel a breakpoint that was established at a specific
location, specify that same location (address expression) with
the CANCEL BREAK command. To cancel breakpoints that were
established on a class of instructions or events, specify the
class of instructions or events with the corresponding qualifier
(for example, /LINE, /BRANCH, /ACTIVATING, /EVENT=, and so on).
See the qualifier descriptions for more specific information.
Additional information available:
Examples:
1 DBG> SET BREAK/SILENT A\B DO (EX X)
DBG> CANCEL BREAK A\B
This CANCEL BREAK command cancels the effect of the SET BREAK command
2 DBG> SET BREAK/INST WHEN (A .NE. 0)
DBG> CANCEL BREAK/INST
This CANCEL BREAK command cancels the effect of the SET BREAK command
3 DBG> CANCEL BREAK MAIN\LOOP+10
This command cancels the user defined breakpoint set
at the address expression MAIN\LOOP+10.
4 DBG> CANCEL BREAK/ALL
This command cancels all user defined breakpoints.
5 DBG> CANCEL BREAK/ALL/USER/PREDEFINED
This command cancels all user defined and predefined breakpoints.
6 DBG_1> CANCEL BREAK/ACTIVATING
This command cancels a previous user defined SET
BREAK/ACTIVATING command. As a result, the debugger
does not suspend execution when a new process is
brought under debugger control.
7 DBG> CANCEL BREAK/EVENT=DEPENDENTS_EXCEPTION/PREDEFINED
This command cancels the predefined breakpoint set on
dependent exceptions. This breakpoint is predefined
for Ada programs.
Parameters
address-expression
Specifies a breakpoint to be canceled. Do not use the asterisk
wildcard character (*). Do not specify an address expression
when using any of the qualifiers except for /EVENT, /PREDEFINED,
or /USER.
Qualifiers
Additional information available:
/ACTIVATING/ALL/BRANCH/CALL/EVENT/EXCEPTION
/INSTRUCTION/LINE/PREDEFINED/TERMINATING
/USER
/ACTIVATING
Note: This qualifier applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS).
Cancels the effect of a previous SET BREAK/ACTIVATING command.
/ALL
By default, cancels all user defined breakpoints. When used with
/PREDEFINED, cancels all predefined breakpoints but no user
defined breakpoints. Specify both /USER and /PREDEFINED to
cancel all breakpoints.
/BRANCH
Cancel effect of SET BREAK/BRANCH.
/CALL
Cancel effect of SET BREAK/CALL.
/EVENT=event-name
Cancel effect of the command
SET BREAK/EVENT=event-name [expression[, expression...]]
Format:
CANCEL BREAK/EVENT=event-name [expression[, expression...]]
The event-name keyword and expression parameter(s) cancel the
breakpoint(s) which was set with the same keyword and expression
parameter. If the expression parameter was omitted on the SET
command, the expression parameter should also be omitted on the
CANCEL command.
/EXCEPTION
Cancel effect of SET BREAK/EXCEPTION.
/INSTRUCTION
Cancel effect of the command SET BREAK/INSTRUCTION or SET
BREAK/INSTRUCTION=(opcode-list).
/LINE
Cancel effect of SET BREAK/LINE.
/PREDEFINED
Cancels a specified predefined breakpoint without affecting any
user defined breakpoints. When used with /ALL, cancels all
predefined breakpoints.
/TERMINATING
Cancels the effect of a previous SET BREAK/TERMINATING command.
/USER
Cancels a specified user defined breakpoint without affecting any
predefined breakpoints. When used with /ALL, cancels all user
defined breakpoints. CANCEL BREAK/USER is assumed by default
unless you specify /PREDEFINED.
DISPLAY
Cancels a specified screen display or cancels all screen
displays. You must specify the names of the displays to be
cancelled or the /ALL qualifier, but not both. When a screen
display is cancelled, it is deleted entirely: Its contents are
lost, it is removed from the screen display list, and all its
memory is released to the memory pool.
Format:
CANCEL DISPLAY [/qualifier] [disp_name [,disp_name...]]
Example:
CANCEL DISPLAY OUT
The above cancels the output display and thus causes input and
output to be intermixed.
Additional information available:
Parameters
disp_name
The name of a screen display to be cancelled.
Qualifiers
Additional information available:
/ALL
Specifies that all screen displays be cancelled.
/SUFFIX[=process-identifier-type]
Note: This qualifier applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS). Use
this qualifier only directly after a display name.
Appends a process-identifying suffix to a display name. The
suffix denotes the visible process. This qualifier is used
primarily in command procedures when specifying display
definitions or key definitions that are bound to display
definitions. Use any of the following process-identifier-type
keywords:
PROCESS_NAME The display-name suffix is the VMS process name.
PROCESS_NUMBER The display-name suffix is the process number
(as shown in a SHOW PROCESS display).
PROCESS_PID The display-name suffix is the VMS process
identification number (PID).
If you specify /SUFFIX without a process-identifier- type
keyword, the process identifier type used for the display-name
suffix is, by default, the same as that used for the prompt
suffix (see SET PROMPT/SUFFIX).
IMAGE
Cancels a previously "set" shareable image (see the help on SET
IMAGE and SHOW IMAGE). Cancelling an image deallocates the data
structures that were built when the image was set. If you cancel
the "current image", then "current image" reverts back to the
main image. You cannot cancel the main image.
Format:
CANCEL IMAGE [/ALL] [image-name [,...]]
Example: say you want to set a breakpoint on routine R in
shareable image SHARE:
DBG> SET IMAGE SHARE
DBG> SET BREAK R
DBG> CANCEL IMAGE SHARE
MODE
Cancels radix mode, symbolic/nosymbolic mode and G_float/D_float
mode settings established by the SET MODE command, thus
reestablishing language-specific default mode values.
Format:
CANCEL MODE
MODULE
Removes symbols declared in the specified module(s) or in all
modules from the debugger symbol table. If debugger response
time becomes a problem, it may help to cancel modules that you
are not referencing. This removes symbols from those modules
from the debugger symbol table and thus may speed up searches of
the symbol table.
You can remove the symbols from one module, from a list of
modules, or from all modules.
Format:
CANCEL MODULE [/qualifier] [ module[,module,...] ]
Examples:
DBG> CANCEL MODULE A,B,C
DBG> CANCEL MODULE/ALL
Additional information available:
Parameters
module(s)
Specifies the name of the module(s) whose symbols are to be
removed from the symbol table.
Qualifiers
Additional information available:
/ALL
Specifies that symbols in all modules be removed from the symbol
table.
/NORELATED
(Meaningful for language ADA only). This qualifier tells the
debugger to cancel only the module or modules specified in this
command. In language ADA, "related" modules may also be
cancelled unless this qualifier is specified.
Example:
DBG> CANCEL MODULE/NOREL M ! Cancel only M
DBG> CANCEL MODULE/RELAT M ! Cancel M and all the
! packages it imports.
/RELATED
(Meaningful for language ADA only). This qualifier is the
default. It enables automatic module cancelling and thereby
cancels all those modules that are related to this one.
RADIX
Cancels radix mode settings established by the SET RADIX command,
thus reestablishing language-specific default radix mode values.
Format:
CANCEL RADIX
CANCEL RADIX/OVERRIDE
Additional information available:
Qualifiers
/OVERRIDE is the only qualifier allowed. CANCEL RADIX/OVERRIDE
cancels the effect of a previous SET RADIX/OVERRIDE command.
Additional information available:
/OVERRIDE
Cancels radix mode settings established by the SET RADIX/OVERRIDE
command.
SCOPE
Cancels the current scope search list established by the SET
SCOPE command. The scope search list is set back to its default
value of 0,1,2,3,4,...,N. As a result of the CANCEL SCOPE
command, symbols without pathname prefixes are looked up relative
to the current PC. See the help on "SET SCOPE default" for more
precise details on what this means.
Format:
CANCEL SCOPE
SOURCE
Cancels the current source directory search list established by
previous SET SOURCE commands.
The CANCEL SOURCE command without the /MODULE qualifier cancels
the effect of a previous SET SOURCE command.
The CANCEL SOURCE/MODULE=modname command cancels the effect of a
previous SET SOURCE/MODULE=modname command in which the same
module name was specified.
The CANCEL SOURCE/EDIT command cancels the effect of a previous
SET SOURCE/EDIT. The use of the /EDIT qualifier means that the
source directory search list is only to be applied on the EDIT
command.
Format:
CANCEL SOURCE [/MODULE=modname] [/EDIT]
Examples:
DBG> SET SOURCE [],SRC$
DBG> CANCEL SOURCE ! Cancels effect of above
DBG> SET SOURCE/MODULE=M []
DBG> CANCEL SOURCE/MODULE=M ! Cancels effect of above
Additional information available:
Qualifiers
Additional information available:
/MODULE=modname
Specifies the name of a module for which a source directory
search list is to be canceled.
/EDIT
Cancels the effect of a previous SET SOURCE/EDIT. The /EDIT
qualifier means that the source directory search list is only to
be used on the EDIT command.
TRACE
Cancels tracepoints.
Format:
CANCEL TRACE [/qualifier] [address-expression [,...]]
Tracepoints may be user defined or predefined. User defined
tracepoints are those that you set explicitly with the SET TRACE
command. Predefined tracepoints, which depend on the type of
program you are debugging (for example, Ada or multiprocess), are
established automatically when you invoke the debugger. Use the
SHOW TRACE command to identify all tracepoints that are currently
set. Any predefined tracepoints are identified as such.
User defined and predefined tracepoints are set and canceled
independently. For example, a location or event may have both a
user defined and a predefined tracepoint. Canceling the user
defined tracepoint does not affect the predefined tracepoint, and
conversely.
To cancel only user defined tracepoints, do not specify
/PREDEFINED with the CANCEL TRACE command (/USER is the default).
To cancel only predefined tracepoints, specify /PREDEFINED but
not /USER. To cancel both user defined and predefined
tracepoints, specify both /USER and /PREDEFINED.
In general, note that the effect of the CANCEL TRACE command is
symmetrical with that of the SET TRACE command (even though the
SET TRACE command is used only with user defined tracepoints).
Thus,
to cancel a tracepoint that was established at a specific
location, specify that same location (address expression) with
the CANCEL TRACE command. To cancel tracepoints that were
established on a class of instructions or events, specify the
class of instructions or events with the corresponding qualifier
(for example, /LINE, /BRANCH, /ACTIVATING, /EVENT=, and so on).
See the qualifier descriptions for more specific information.
Additional information available:
Examples:
1 DBG> SET TRACE X DO (SHOW CALLS)
DBG> CANCEL TRACE X
This CANCEL TRACE command cancels the effect of the SET TRACE command
2 DBG> SET TRACE/INST WHEN (A .NE. 0)
DBG> CANCEL TRACE/INST
This CANCEL TRACE command cancels the effect of the SET TRACE command
3 DBG> CANCEL TRACE MAIN\LOOP+10
This command cancels the user defined tracepoint at
the location MAIN\LOOP+10.
4 DBG> CANCEL TRACE/ALL
This command cancels all user defined tracepoints.
5 DBG_1> CANCEL TRACE/TERMINATING
This command cancels a previous user defined SET
TRACE/TERMINATING command. As a result, a tracepoint
is not triggered when a process performs an image exit.
Parameters
address-expression
Specifies a tracepoint to be canceled. Do not use the asterisk
wildcard character (*). Do not specify an address expression
when using any of the qualifiers except for /EVENT, /PREDEFINED,
or /USER.
Qualifiers
Additional information available:
/ACTIVATING/ALL/BRANCH/CALL/EVENT/EXCEPTION
/INSTRUCTION/LINE/PREDEFINED/TERMINATING
/USER
/ACTIVATING
Note: This qualifier applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS).
Cancels the effect of a previous SET TRACE/ACTIVATING command.
/ALL
Cancel all tracepoints.
/BRANCH
Cancel effect of SET TRACE/BRANCH.
/CALL
Cancel effect of SET TRACE/CALL.
/EVENT=
Cancel effect of the command
SET TRACE/EVENT=event-name [expression[, expression...]]
Format:
CANCEL TRACE/EVENT=event-name [expression[, expression...]]
The event-name keyword and expression parameter(s) cancel the
tracepoint(s) which was set with the same keyword and expression
parameter. If the expression parameter was omitted on the SET
command, the expression parameter should also be omitted on the
CANCEL command.
/EXCEPTION
Cancel effect of SET TRACE/EXCEPTION.
/INSTRUCTION
Cancel effect of SET TRACE/INSTRUCTION or SET
TRACE/INSTRUCTION=(opcode-list).
/LINE
Cancel effect of SET TRACE/LINE.
/PREDEFINED
Cancels a specified predefined tracepoint without affecting any
user defined tracepoints. When used with /ALL, cancels all
predefined tracepoints.
/TERMINATING
Cancels the effect of a previous SET TRACE/TERMINATING command.
/USER
Cancels a specified user defined tracepoint without affecting any
predefined tracepoints. When used with /ALL, cancels all user
defined tracepoints. CANCEL BREAK/USER is assumed by default
unless you specify /PREDEFINED.
TYPE
Cancels the debugger override type established by the SET
TYPE/OVERRIDE command, thus setting the current override type to
"none."
As a result of the CANCEL TYPE/OVERRIDE command, program entities
are interpreted in compiler-generated types or in the default
type.
Format:
CANCEL TYPE/OVERRIDE
Additional information available:
Qualifiers
Additional information available:
/OVERRIDE
Must be specified. The minimum abbreviation is /OVERR.
WATCH
Cancels the specified watchpoint(s).
If you specify an address-expression as a parameter, the
watchpoint at the location denoted by that address-expression is
canceled. If you specify /ALL, all watchpoints are canceled.
Format:
CANCEL WATCH [/qualifier]
[address-expression [,address-expression...]]
Examples:
DBG> SET WATCH A[1] DO (SHOW CALLS)
DBG> CANCEL WATCH A[1] ! Cancels effect of above
DBG> CANCEL WATCH/ALL ! Cancels all watchpoints
Additional information available:
Parameters
address-expression
Specifies the location of the watchpoint to be canceled.
Qualifiers
Additional information available:
/ALL
Specifies that all watchpoints be canceled.
WINDOW
Cancels one or more specified screen window definitions or
cancels all such definitions. You must specify the names of the
screen windows to be cancelled or the /ALL qualifier, but not
both. When a screen window definition is cancelled, the
corresponding window name is no longer available for use in
DISPLAY or SET DISPLAY commands. The command does not affect any
existing screen displays.
Format:
CANCEL WINDOW [/ALL] [wind-name [,wind-name...]]
Example:
CANCEL WINDOW Q1,Q2
Additional information available:
Parameters
wind-name
The name of a screen window to be cancelled.
Qualifiers
Additional information available:
/ALL
Specifies that all screen window definitions be cancelled. Note
that this cancels all predefined as well as user-defined window
definitions.
CONNECT
Note: This command applies only to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS).
Interrupts an image that is running without debugger control in
another process and brings that process under debugger control.
When used without a parameter, brings any spawned process that is
waiting to connect to the debugger under debugger control.
Format:
CONNECT [/qualifier] [process-spec[, . . . ]]
When you specify a process, the CONNECT command enables you to
interrupt an image that is running without debugger control in
that process and bring the process under debugger control. The
command is useful if, for example, you run a debuggable image
with the DCL command RUN/NODEBUG or if your program issues a
LIB$SPAWN run-time library call or a $CREPRC system service call
that does not invoke the debugger.
You can bring a process under debugger control in this manner
only if that process is in the same job tree as the process
running the debugging session (the process running the main
debugger image, DEBUGSHR.EXE), and only if the image was not
linked with the /NOTRACEBACK qualifier. Also, you have full
symbolic information for that image only if its modules were
compiled and linked with the /DEBUG command qualifier.
When the process is brought under debugger control, execution of
the image is suspended at the point at which it was interrupted.
When used without a parameter, the CONNECT command brings any
processes that are waiting to connect to your debugging session
under debugger control. If no process is waiting, you can press
CTRL/C to abort the CONNECT command.
By default, a tracepoint is triggered when a process is brought
under debugger control. This predefined tracepoint is equivalent
to that resulting from entering the command SET TRACE/ACTIVATING.
The process is then known to the debugger and is identified in a
SHOW PROCESS display.
Additional information available:
Examples
1 DBG_1> CONNECT
This command brings any processes that are waiting to
be connected to the debugger under debugger control.
2 DBG_1> CONNECT JONES_3
This command interrupts the image running in process
JONES_3 and brings the process under debugger control.
Process JONES_3 must be in the same job tree as the
process where the debugger was invoked. Also, the
image must not have been linked with the /NOTRACEBACK qualifier.
Parameters
process-spec
Specifies a process in which an image to be interrupted is
running. The process must be in the same job tree as the
debugging session. 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).
_______________________________________________________
[1]The process name can include the asterisk wildcard
character (*)
CTRL_C
When entered from within a debugging session, aborts the
execution of a debugger command or interrupts program execution
without interrupting the debugging session. This is useful when,
for example, the program is executing an infinite loop that does
not have a breakpoint, or you want to abort a debugger command
that takes a long time to complete. The debugger prompt is then
displayed, so that you can enter debugger commands.
Format:
<CTRL/C>
After a CTRL/C interruption, any processes of a multiprocess
program that were executing images are in the "interrupted"
state.
If your program already has a CTRL/C AST service routine enabled,
use the SET ABORT_KEY command to assign the debugger's abort
function to another CTRL-key sequence. Note, however, that many
CTRL- key sequences have VMS predefined functions, and the SET
ABORT_KEY command enables you to override such definitions (see
the VMS DCL Concepts Manual). Some of the CTRL-key characters
not used by the VMS operating system are G, K, N, and P.
If your program does not have a CTRL/C AST service routine
enabled, and you assign the debugger's abort function to another
CTRL-key sequence, the CTRL/C sequence then behaves like CTRL/Y
--- that is, it interrupts the debugging session and returns you
to DCL level.
Do not use CTRL/Y from within a debugging session. Always use
either CTRL/C or an equivalent CTRL-key sequence established with
the SET ABORT_KEY command.
Note that you can use the SPAWN and ATTACH commands to leave and
return to a debugging session without losing the debugging
context.
Additional information available:
Example
DBG> GO
...
<CTRL/C>
%DEBUG-W-ABORTED, command aborted by user request
DBG> EXAMINE/BYTE 1000:101000 !should have typed 1000:1010
1000: 0
1004: 0
1008: 0
1012: 0
1016: 0
<CTRL/C>
%DEBUG-W-ABORTED, command aborted by user request
DBG>
This example shows how to use the CTRL/C sequence to,
first, interrupt program execution, and then, abort
the execution of a debugger command.
CTRL_Y
Pressing CTRL/Y at DCL level enables you to interrupt an image
that is running without debugger control, so that you can then
invoke the debugger with the DCL DEBUG command.
Format:
<CTRL/Y>
Note that you can bring an image under debugger control only if,
as a minimum, that image was linked with the /TRACEBACK command
qualifier (/TRACEBACK is a LINK command default). Also, you can
reference all of the image's symbols while debugging only if its
modules were compiled and linked with the /DEBUG command
qualifier (in that case, you could use the DCL command
RUN/NODEBUG to execute the image without the debugger).
When you press CTRL/Y to interrupt the image's execution, control
is passed to the DCL command interpreter. If you then type the
DCL DEBUG command, the interrupted image is brought under control
of the debugger. The debugger sets its language dependent
parameters to the source language of the module where execution
was interrupted and displays its prompt. You can then determine
where execution was suspended by issuing a SHOW CALLS command
(and a SHOW PROCESS command, in the case of a multiprocess
program).
When a new debugging session is started, a process is created to
run the main debugger image (DEBUGSHR.EXE) that controls the
session. The main debugger process is a subprocess of the
process that is running the image to be debugged. The debugger
displays its banner when a new session is started.
Other details about the effect of a CTRL/Y - DEBUG sequence
depends on the debugging configuration (default or multiprocess),
which is determined by the current definition of the logical name
DBG$PROCESS in the process where the interrupted image was
executing.
Do not use CTRL/Y from within a debugging session. Instead, use
CTRL/C (or an equivalent CTRL-key sequence established with the
SET_ABORT_KEY command) This enables you to abort the execution of
a debugger command or to interrupt program execution without
interrupting the debugging session.
Additional information available:
ExamplesDefault ConfigurationMultiprocess Configuration
Examples
1 $ RUN/NODEBUG TEST_B
...
<CTRL/Y>
Interrupt
$ DEBUG
VAX DEBUG Version *****
%DEBUG-I-INITIAL, language is ADA, module set to SWAP
DBG>
The RUN/NODEBUG command executes the image TEST_B without
debugger control. Execution is interrupted with CTRL/Y. The
DEBUG command then causes the debugger to be invoked. The
debugger displays its banner, sets the language-dependent
parameters to the language (Ada, in this case) of the module
(SWAP) where execution was interrupted, and displays the prompt.
This is the default debugging configuration, as indicated by the
DBG> prompt.
2 $ DEFINE/JOB DBG$PROCESS MULTIPROCESS
$ RUN/NODEBUG PROG2
...
<CTRL/Y>
Interrupt
$ DEBUG
VAX DEBUG Version *****
%DEBUG-I-INITIAL, language is FORTRAN, module set to SUB4
predefined trace on activation at SUB4\%LINE 12 in %PROCESS_NUMBER 1
12: K = K + 1
DBG_1>
The DEFINE/JOB command establishes a multiprocess debugging
configuration. The RUN/NODEBUG command executes the image PROG2
without debugger control. The CTRL/Y - DEBUG sequence interrupts
execution and invokes the debugger. The VAX DEBUG banner
indicates that a new debugging session has been started. The
process-specific prompt (DBG_1>) indicates that this is a
multiprocess configuration and that execution is suspended in
process 1, which is running PROG2. The activation tracepoint
identifies the location where execution was interrupted (and
where the debugger took control of the process).
Default Configuration
The default debugging configuration is achieved when DBG$PROCESS
is either undefined or has the value DEFAULT. In this case a new
default debugging session is started every time you invoke the
debugger with the CTRL/Y -- DEBUG sequence.
Multiprocess Configuration
The multiprocess debugging configuration is achieved when
DBG$PROCESS has the job-wide definition MULTIPROCESS. In this
case, the effect of a CTRL/Y -- DEBUG sequence is as follows:
o If a multiprocess debugging session does not already exist in
the same job tree as the process running the interrupted
image, a new multiprocess debugging session is created.
o If a multiprocess debugging session already exists in the
same job tree, the interrupted image and its process come
under control of that session. In this case the debugger
does not display its banner.
Note that, within a debugging session, you can use the CONNECT
command to connect an image that is running without debugger
control in another process (of the same job tree) to that
debugging session.
CTRL_Z
Pressing CTRL/Z causes orderly termination of the debugging
session. It is identical in effect to the EXIT command.
Format:
<CTRL/Z>
Debugging Configurations
You can use the debugger in two configurations, default or
multiprocess. Use the default configuration to debug a program
that normally runs (without the debugger) in only one process.
Use the multiprocess configuration to debug a program that
normally runs in more than one process. The configuration
depends only on the definition of the logical name DBG$PROCESS,
as indicated in the following table:
DBG$PROCESS: Configuration:
Undefined or DEFAULT Default
MULTIPROCESS Multiprocess
Note that a multiprocess configuration results from DBG$PROCESS
having the value MULTIPROCESS and does not depend on whether a
program runs in more than one process. The value of DBG$PROCESS
determines whether or not images running in different processes
can connect to the same debugging session.
Type HELP Multiprocess for more information on debugging
multiprocess programs.
Additional information available:
Examples
1 $ DEFINE/JOB DBG$PROCESS MULTIPROCESS
$ RUN PROG1
...
DBG_1>
In this example, the DEFINE/JOB command establishes the
multiprocess configuration. This is demonstrated by the
process-specific prompt suffix, "_1", which is displayed
initially when the debugger is invoked with the RUN command. The
prompt suffix indicates that execution is suspended in process 1,
the first process that was brought under debugger control.
Process 1 is currently the visible process -- the context for
executing process-specific commands like STEP, EXAMINE, and so
on.
2 $ DEFINE DBG$PROCESS DEFAULT
$ RUN PROG1
...
DBG>
In this example, the DEFINE command establishes the default
configuration. This is demonstrated by the DBG> prompt, which is
displayed when the debugger is invoked with the RUN command.
Process Relationships
The debugger consists of two parts:
1. A relatively small kernel debugger image (DEBUG.EXE) that
runs in the same process as the image being debugged
2. A larger main debugger image (DEBUGSHR.EXE) that contains
most of the debugger code and runs in a subprocess.
In the default (non-multiprocess) configuration, the program
being debugged (which may consist of several images) runs in one
process along with the kernel debugger. The main debugger runs
in a subprocess.
In the multiprocess configuration, the program being debugged
(which may consist of several images) runs in several processes.
Each process that is running an image under debugger control is
also running a local copy of the kernel debugger. One main
debugger runs in a separate subprocess and communicates with the
other processes through their kernel debuggers.
Regardless of the configuration, the presence of a main debugger
running in some process establishes a unique debugging session.
The current definition of DBG$PROCESS determines whether or not
debuggable images running in different processes can connect to
the same main debugger.
Additional information available:
Default ConfigurationMultiprocess Configuration
Default Configuration
The default configuration is achieved when DBG$PROCESS is either
undefined or has the value DEFAULT:
$ DEFINE DBG$PROCESS DEFAULT
Under these conditions, when you invoke the debugger, the program
runs in its original process along with the kernel debugger, but
a new subprocess is created to run the main debugger (see Figure
1).
When you use the default configuration, a new main debugger (and,
therefore, a new debugging session) is established every time you
invoke the debugger.
Figure 1 Default Debugging Configuration
+--------+
|program |
|being |
|debugged|
|--------|
|kernel |
|debugger|
+--------+
|
+--------+
|main |
|debugger|
+--------+
Multiprocess Configuration
The multiprocess configuration enables you to interact with
several processes from one debugging session. This configuration
is achieved when the definition of DBG$PROCESS is MULTIPROCESS:
$ DEFINE/JOB DBG$PROCESS MULTIPROCESS
When defining DBG$PROCESS, use a job logical definition to ensure
that the definition applies to all processes in that job tree.
An image can be connected to an existing multiprocess debugging
session only if the process running the image is in the same job
tree as the main debugger of that debugging session.
In the multiprocess configuration, the main debugger runs in one
process. Each process associated with the multiprocess program
runs a kernel debugger along with one or more images of the
program. The main debugger communicates with each kernel
debugger. Although all processes of a multiprocess configuration
must be in the same job tree, they do not have to be related in a
particular process/subprocess hierachy. Moreover, the program
images running in separate processes do not have to communicate
with each other.
Two possible multiprocess configurations are illustrated in
Figures 1 and 2. Figure 1 shows the typical multiprocess
configuration. The program runs in one master parent process and
several subprocesses. The debugger is invoked from the master
process, then the program creates subprocesses during execution
(a subprocess may also become the parent of another level of
subprocesses).
Figure 1 Multiprocess Configuration, Single Master Process
+--------+
| master |
/|--------|\
/ |kernel | \
+--------+ |debugger| +--------+
|child1 | +--------+ |child2 |
/|--------| | |--------|
/ |kernel | | |kernel |
+--------+ |debugger| | |debugger|
|child3 | +--------+ | +--------+
|--------| | | /
|kernel | | | /
|debugger| | | /
+--------+ | | /
\ | | /
+------------------+
| main |
| debugger |
+------------------+
In Figure 2, the multiprocess program runs in several peer
processes. There is no master process. This configuration would
result if you invoked the debugger by running one debuggable
image and then used the SPAWN/NOWAIT command repeatedly to spawn
other processes and run a debuggable image in each spawned
process.
Figure 2 Multiprocess Configuration, Peer Processes
+--------+ +--------+ +--------+ +--------+
| proc1 |--| proc2 |--| proc3 |--| proc4 |
|--------| |--------| |--------| |--------|
|kernel | |kernel | |kernel | |kernel |
|debugger| |debugger| |debugger| |debugger|
+--------+ +--------+ +--------+ +--------+
\ | | /
+-----------------------+
| main |
| debugger |
+-----------------------+
DECLARE
This command is only valid inside a debugger command procedure.
The command is used to bind the actual parameters to names of
formal parameters inside the command procedure.
In the simplest case, this could look like DECLARE A,B,C. Then,
if three parameters were passed in to the command procedure, they
can be referenced inside the command procedure by the names A, B,
and C. The number of parameters to the procedure is given by the
symbol %PARCNT (type HELP Built_in_Symbols %PARCNT).
Format:
DECLARE name [:kind] [, name [:kind] ...]
Additional information available:
Example:
$ CREATE DUMPMEM.COM
DECLARE P1:ADDRESS,P2:VALUE
EXAMINE P1:P1+P2
Parameters
name
The name of the formal parameter. This can be composed of
alphabetics (A-Z) and numerics (0-9) and must start with an
alphabetic.
kind
Can be any of ADDRESS, COMMAND, or VALUE, corresponding to the
three kinds of DEFINE symbols.
DEFINE
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
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
/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
enter
DEFINE/KEY/IF_STATE=GOLD KP0 "EXAMINE X"
then the sequence "PF1", "KP0" expands to "EXAMINE X".
/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
DELETE
The command DELETE "symbol-name" deletes a symbol definition that
was established with the DEFINE command. (Note that, to delete a
key definition, you must use the command DELETE/KEY "key-name".
See the /KEY subtopic for information).
Format:
DELETE[/qualifier] [symbol-name[,...]]
Examples:
DBG> DEFINE A = MAIN\VAR1
DBG> EXAM A
MAIN\VAR1: 5
DBG> DELETE A ! Cancels effect of "DEFINE A"
DBG> EXAM A
%DEBUG-E-NOSYMBOL, symbol 'A' is not in the symbol table
Additional information available:
symbol-name
symbol-name can be any name that was previously defined with the
DEFINE command
Qualifiers
Additional information available:
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
Additional information available:
/ALL/LOG/NOLOG/NOSTATE/STATE/LOCAL
/ALL
Deletes all key definitions in the specified states.
/LOG
Prints an informational message for each key deleted. (Default)
/NOLOG
Inhibits informational messages for the deleted keys.
/NOSTATE
(Default) The DELETE command applies to the current state only.
/STATE=(state-name[,...])
Deletes key definitions for the given state(s).
/LOCAL
Deletes the (local) definition of the specified symbol from the
current command procedure. The symbol must have been previously
defined with the DEFINE/LOCAL command.
/ALL
Delete all global definitions established with the DEFINE
command. If you specify /LOCAL, deletes all local definitions
established with the DEFINE command that are associated with the
current command procedure (but not the global definitions). Do
not specify a symbol name with /ALL.
/KEY
DELETE/KEY deletes a key definition that was established with the
DEFINE/KEY command or was established by default by the debugger.
This provides the same capability as the DCL command DELETE/KEY.
Format:
DELETE/KEY[/qualifier] [key-name]
Examples:
DBG> DEFINE/KEY F6 "STEP"
DBG> DELETE/KEY F6 ! Cancels effect of above
DEPOSIT
The DEPOSIT command is used to change the contents of memory
locations in your program. The value specified to the right of
the equal sign is deposited into the location specified to the
left of the equal sign. Type conversion is done, if necessary,
according to the rules of the currently set language. In other
words, "DEPOSIT A = B" should have the same effect as the
assignment statement "A = B" in your program. (Note - for PASCAL
and ADA, substitute ":=" for "=" in the above sentence).
You can also change the assembly-language instructions being
executed using the DEPOSIT/INSTRUCTION command. See the
qualifier /INSTRUCTION for details.
Format:
DEPOSIT [/qualifier] address-expression = expression
DEPOSIT [/qualifier] address-expression := expression (PASCAL,
ADA)
Additional information available:
ExamplesParametersQualifiersQualifiers
Examples
DBG> DEPOSIT L = 10
DBG> DEPOSIT/FLOAT L = 1.1
DBG> DEPOSIT/INSTRUCTION %LINE 100 = 'MOVL R0,R1'
DBG> DEP X = %HEX 10
Parameters
address-expression
Specifies the location to be deposited.
expression
Specifies the value to be deposited. This is usually a constant
(for example, "DEPOSIT X = 2"), but it may be an expression
(e..g., "DEPOSIT X = X + 2").
Qualifiers
The qualifiers on DEPOSIT are used to override the type
information associated with the location. For example, suppose F
is a floating point number. If you do
DBG> DEPOSIT F = 1
then the debugger converts integer 1 to floating 1.0, and put the
1.0 into location F. But if you want to put integer 1 into the
location, you need to override the type of F with the /LONG
(integer longword) qualifier:
DBG> DEPOSIT/LONG F = 1
See the individual subtopics for a description of each qualifier.
Qualifiers
Additional information available:
/ASCIC/ASCID/ASCII:n/ASCIW/ASCIZ/BYTE/D_FLOAT
/DATE_TIME/FLOAT/G_FLOAT/H_FLOAT/INSTRUCTION
/LONGWORD/QUADWORD/OCTAWORD/PACKED:n
/TASK/TYPE/WORD
/ASCIC
Deposit a counted ascii string into the target. This is a string
in which the first byte specifies the length. /AC is also
accepted as an abbreviation for /ASCIC. For example:
DBG> DEPOSIT/AC X = "111"
DBG> EXAM/HEX/LONG X
X: 31313103
/ASCID
The target of the deposit must contain a string descriptor. The
expression on the right-hand side must be a string. The string
is deposited into the address given by the string descriptor. If
the lengths do not match then the string is either truncated on
the right or padded with blanks on the right. /AD is also
accepted.
Example:
DBG> EXAM/QUAD/HEX D
D: 7FFF0000 01E00004
DBG> DEP/AD D = "ABCD"
DBG> EXAM/ASCII:4 7FFF0000
7FFF0000: "ABCD"
DBG> EXAM/AD D
D: "ABCD"
/ASCII:n
Deposits "n" bytes of string into the target location. The
expression on the right-hand-side must be a string. If its
length is not "n" then it is truncated or padded with blanks on
the right. If "n" is omitted then the debugger uses the actual
length of the data item at the target location.
Example:
DBG> DEPOSIT/ASCII:5 X = "ABCDE"
DBG> EXAM/ASCII:5 X
X: "ABCDE"
/ASCIW
A "asciw string" (a string with a word count at the beginning) is
depositing into the target location. The right-hand-side of the
deposit must specify a string.
/AW is also accepted.
Example:
DBG> DEPOSIT/AW X = "11"
DBG> EXAM/HEX/LONG X
X: 31310002
/ASCIZ
The right-hand-side must be a string. The string is deposited
into the target followed by a zero byte indicating end of string.
/AZ is also accepted.
Example:
DBG> DEP/AZ X = "AAA"
DBG> EXA/LONG/HEX X
X: 00313131
/BYTE
One byte is deposited into the target location.
Example:
DBG> EXA/HEX X
X: 0FFFFFFFF
DBG> DEP/BYTE X = 0
DBG> EXA/HEX X
X: 0FFFFFF00
/D_FLOAT
Specifies that the D_floating type (length 8 bytes) be associated
with the target of the deposit. The right-hand-side is converted
to d_float and deposited into the specified location.
Example:
DBG> DEP/D_ X = 1.1
DBG> EXA/D_ X
X: 1.1000000000000000
/DATE_TIME
The right-hand-side is a string representing a date and time (for
example, "14-Oct-1984 12:00:00"). The date and time is converted
to the quadword representation used by VMS to represent
date-time. This quadword representation is deposited into eight
bytes at the target address.
Example:
DBG> DEP/DATE_TIME X = "14-Oct-1984 12:00:00"
DBG> EXA/DATE_TIME X
X: "14-Oct-1984 12:00:00"
/FLOAT
The right-hand-side is converted to floating point, and the
floating
point value is deposited into the location specified by the
left-hand-side.
Example:
DBG> DEP/F X = 1.1
DBG> EXA/FLOAT X
X: 1.100000
/G_FLOAT
The right-hand-side is converted to floating point (G-format),
and the floating point value is deposited into the location
specified by the left-hand-side.
Example:
DBG> DEP/G_FLOAT X = 1.1
DBG> EXA/G_FLOAT X
X: 1.100000000000000
/H_FLOAT
The right-hand-side is converted to floating point (H-format),
and the floating point value is deposited into the location
specified by the left-hand-side.
Example:
DBG> DEP/H_FLOAT X = 1.1
DBG> EXA/H_FLOAT X
X: 1.10000000000000000000000000000
/INSTRUCTION
The right-hand-side must be a string representing a VAX
instruction. The instruction is deposited into the location
specified by the left hand side.
Example:
DBG> DEP/INS %LINE 100 = 'MOVL 2,B4(R1)'
DBG> E/I %LI 100
%LINE 100: "MOVL 2,B4(R1)"
/LONGWORD
A longword is deposited into the target location.
Example:
DBG> EXA/HEX X
X: 0FFFFFFFF
DBG> DEP/LONG X = 0
DBG> E/HEX X
X: 00000000
/QUADWORD
A quadword (8 bytes) is deposited into the target location.
Example:
DBG> EXA/QUAD/HEX X
X: 0FFFFFFFF FFFFFFFF
DBG> DEP/QUAD X = 0
DBG> EXA/QUAD/HEX X
X: 00000000 00000000
/OCTAWORD
An octaword (16 bytes) is deposited into the target location.
Example:
DBG> E/OCTAW/HEX X
X: 00000000 00000000 00000000 00000000
DBG> DEP/OCTAW X = -1
DBG> EXA/OCTAW/HEX X
X: 0FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
/PACKED:n
The right hand side is converted to a packed decimal
representation (length n nibbles) before doing the deposit. "n"
nibbles ((n+1)/2 bytes) are deposited into the left hand side.
Example:
DBG> DEP/PACKED:5 X = 12345
DBG> EXA/PACKED:5 X
X: 12345
/TASK
The location given by "address-expression" is interpreted as the
address of an Ada task object. The right-hand "expression" is
interpreted as an Ada task value and deposited in the location
specified by "address-expression".
Example:
DBG> EXAMINE VAR
SAMPLE.VAR: 0
DBG> DEPOSIT/TASK VAR = %TASK 2
DBG> EXAMINE/HEX VAR
0016A040
DBG> EXAMINE/TASK VAR
SAMPLE.VAR: %TASK 2
/TYPE=(expression)
Treat the left-hand-side as if it were of the specified type.
(Note - this qualifier is normally only used on EXAMINE, for
example, "EXAMINE/TYPE=(T) 1000". See the help on EXAMINE /TYPE
for more information. The /TYPE qualifier is supplied on DEPOSIT
for completeness.
/WORD
A word (2 bytes) is deposited into the target location.
Example:
DBG> EXA X
X: 0FFFFFFFF
DBG> DEP/WORD X = 0
DBG> EXA X
X: 0FFFF0000
DISABLE
Disables ASTs in the user program. ASTs can be disabled during a
debugging session using the command "DISABLE AST", and they can
be re-enabled using the command "ENABLE AST". Temporarily
disabling ASTs in this fashion allows the user to prevent
interrupts from occuring while he is debugging a particular piece
of code.
Format
DISABLE AST
Example:
DBG> SHOW AST
ASTs are enabled
DBG> DISABLE AST
%DEBUG-I-DISABLEAST, ASTs were enabled, are now disabled
DBG> SHOW AST
ASTs are disabled
DISPLAY
The DISPLAY command may be used to create a display or modify an
existing display.
Format:
DISPLAY [disp-name [AT w-spec] [disp-kind]] [, . . . ]
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 for the
PROMPT display) that share the same region of the screen.
Type HELP Keypad for keypad-key definitions associated with the
DISPLAY command.
Additional information available:
Examples
1. DBG> DISPLAY REG
This command shows the predefined register display, REG, at its
current window location.
2. DBG> DISPLAY/PUSH INST
This command pushes display INST to the bottom of the display
pasteboard, behind all other displays.
3. DBG> DISPLAY NEWDISP AT RT2
DBG> SELECT/INPUT NEWDISP
In this example, the DISPLAY command shows the user-defined
display NEWDISP at the right middle third of the screen. The
SELECT/INPUT command selects NEWDISP as the current input
display. NEWDISP now echoes debugger input.
4. DBG> DISPLAY DISP2 AT RS45
DBG> SELECT/OUTPUT DISP2
In this example, the DISPLAY command creates a display named
DISP2 essentially at the right bottom half of the screen, above
the PROMPT display, which is located at S6. This is an output
display by default. The SELECT/OUTPUT command then selects DISP2
as the current output display.
5. DBG> SET WINDOW TOP AT (1,8,45,30)
DBG> DISPLAY NEWINST AT TOP INSTRUCTION
DBG> SELECT/INST NEWINST
In this example, the SET WINDOW command creates a window named
TOP starting at line 1 and column 45, and extending down for 8
lines and to the right for 30 columns. The DISPLAY command
creates an instruction display named NEWINST to be displayed
through TOP. The SELECT/INST command selects NEWINST as the
current instruction display.
6. DBG> DISPLAY CALLS AT Q3 DO (SHOW CALLS)
This command creates a DO display named CALLS at window Q3. Each
time the debugger gains control from the program, the SHOW CALLS
command is executed and the output is displayed in display CALLS,
replacing any previous contents.
7. DBG> DISPLAY/MARK EXAM AT Q2 DO (EXAMINE A,B,C)
This command creates a DO display named EXAM at window Q2. The
display shows the current values of variables A, B, and C
whenever the debugger prompts for input. Any changed values are
highlighted.
8. DBG_3> DISPLAY/PROCESS OUT_X AT S4
This command makes display OUT_X specific to the visible process
(process 3) and puts the display at window S4.
9. DBG_2> DISPLAY/PROCESS OUT_/SUFFIX AT S45 OUTPUT
This command creates an output display at window S45. The
/PROCESS qualifier, by default, makes the display specific to the
visible process (process 2, in this example). The /SUFFIX
qualifier appends a process-identifying suffix, that denotes the
visible process, to the display name OUT_. By default, the
/SUFFIX qualifier appends the same process identifier suffix that
appears on the prompt. Therefore, the full display name is
OUT_2.
Parameters
disp-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 may specify any of
the following:
o A predefined display: SRC, OUT, PROMPT, INST, REG
o A display previously created with the DISPLAY (or SET
DISPLAY) command
o A pseudo-display name: %CURDISP, %CURSCROLL, %NEXTDISP,
%NEXTINST, %NEXTOUTPUT, %NEXTSCROLL, %NEXTSOURCE
You must specify this parameter unless you use /GENERATE
(parameter optional), or /REFRESH (parameter not allowed).
You may specify more than one display, each with an optional
window specification (w-spec) and display kind (disp-kind).
w-spec
Specifies the screen window at which the display is to be
positioned. You may specify any of the following:
o A predefined window. For example, RH1 (right top half).
o A window definition previously established with the SET
WINDOW command.
o A window specification of the form (start-line, line-count
[,start-column, column-count]). The specification can
include expressions which may be based on the built-in
symbols %PAGE and %WIDTH (for example, %WIDTH/4).
If you omit the w-spec parameter, the screen position depends on
whether you are specifying an existing display or a new display:
o If you are specifying an existing display, the position of
the display is not changed.
o 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.
disp-kind
Specifies the display kind. Valid keywords are the following:
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, they 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) 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 disp-kind parameter, the display kind depends on
whether you are specifying an existing display or a new display:
o If you are specifying an existing display, the display kind
is not changed.
o If you are specifying a new display, an OUTPUT display is
created.
Qualifiers
Additional information available:
/CLEAR/DYNAMIC/GENERATE/HIDE/MARK_CHANGE
/NODYNAMIC/NOMARK_CHANGE/NOPOP/NOPROCESS
/NOPUSH/POP/PROCESS/PUSH/REFRESH/REMOVE/SIZE:n
/SUFFIX
/CLEAR
Erases the entire contents of a specified display. Do not use
/CLEAR when creating a new display. Do not use /GENERATE with
/CLEAR.
/DYNAMIC
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
no display is specified, regenerates the contents of all
automatically generated displays. Do not use /GENERATE when
creating a new display. Do not use /CLEAR with /GENERATE.
/HIDE
Places a specified display at the bottom of the display
pasteboard. This hides the specified display behind any other
displays that share the same region of the screen. You cannot
hide the PROMPT display. /HIDE has the same effect as /PUSH.
/MARK_CHANGE
Controls whether the lines that change in a DO display each time
it is automatically updated are marked. 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. /NOMARK_CHANGE (default) specifies that any
lines that change in DO displays are not to be marked. This
qualifier cancels the effect of a previously entered /MARK_CHANGE
qualifier on the specified display. This qualifier is not
applicable to other kinds of displays.
/NODYNAMIC
Specifies that a display is not to automatically adjust its
window dimensions when you change the screen height or width with
a SET TERMINAL command.
/NOMARK_CHANGE
Specifies that changed lines of a DO(debug-cmd-list) display are
not marked when the display is automatically updated. This
qualifier cancels the effect of an earlier /MARK_CHANGE qualifier
for the specified displays. This qualifier is not applicable to
other kinds of displays.
/NOPOP
Does not pop the specified screen displays to the front of the
other displays. This qualifier preserves the pasting order of
all the displays. This has the same effect as the /NOPUSH
qualifier.
/NOPROCESS
Note: This qualifier applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS).
Causes the specified display to always be associated with the
visible process, which may change during program execution. This
is the default behavior.
/NOPUSH
Does not push or hide the specified screen displays under any
other displays. This qualifier preserves the pasting order of
all the displays. This has the same effect as the /NOPOP
qualifier.
/POP
Pops the specified screen displays to the front of all other
displays that occupy the same region on the terminal screen.
This is the default action of the DISPLAY command.
/PROCESS[=(process-spec)]
Note: This qualifier applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS).
Causes the specified display to be process specific -- that is,
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 for the PROMPT display.
/PROCESS=(process-spec) 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 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.
%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 (*)
/PROCESS causes the specified display to be associated with the
process that was the visible process when the DISPLAY/PROCESS
command was executed. If you do not specify /PROCESS, the
current process-specific behavior (if any) of the specified
display remains unchanged. See also /SUFFIX.
/PUSH
Pushes the specified screen displays under any other displays
that occupy the same region on the terminal screen. The effect
is to make visible any displays that were occluded by the
specified displays. This has the same effect as the /HIDE
qualifier.
/REFRESH
Refreshes the terminal screen. If you specify this qualifier, do
not specify command parameters.
/REMOVE
Marks the specified display as being removed. A removed display
does not appear on the screen unless explicitly requested with a
later DISPLAY command. Although a removed display is not visible
on the screen, the display and its contents are preserved.
/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:
1. If you specify an existing display, the maximum size is
unchanged
2. 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).
/SUFFIX[=process-identifier-type]
Note: This qualifier applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS). Use
this qualifier only directly after a display name.
Appends a process-identifying suffix to a display name. The
suffix denotes the visible process. This qualifier is used
primarily in command procedures when specifying display
definitions or key definitions that are bound to display
definitions. Use any of the following process-identifier-type
keywords:
PROCESS_NAME The display-name suffix is the VMS process name.
PROCESS_NUMBER The display-name suffix is the process number
(as shown in a SHOW PROCESS display).
PROCESS_PID The display-name suffix is the VMS process
identification number (PID).
If you specify /SUFFIX without a process-identifier- type
keyword, the process identifier type used for the display-name
suffix is, by default, the same as that used for the prompt
suffix (see SET PROMPT/SUFFIX). See also /[NO]PROCESS.
DO
Note: This command applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS).
The DO command executes commands in the context of one or more
processes. By default, commands are executed in the context of
the visible process. The DO command enables you to execute
commands in the context of specific processes or all processes.
The DO command is equivalent to entering a SET PROCESS/VISIBLE
command for each process specified with the /PROCESS qualifier
(or for all processes, if /PROCESS is not specified) and then
entering the specified commands. To change the visible process,
use the SET PROCESS command.
Format:
DO [/qualifier] (command[; . . . ])
Additional information available:
Examples
1 DBG_2> DO (SHOW CALLS)
For %PROCESS_NUMBER 1
module name routine name line rel PC abs PC
*MAIN_MODULE MAIN 31 0000001E 0000041E
For %PROCESS_NUMBER 2
module name routine name line rel PC abs PC
*SUB_MODULE SUB 4 0000000B 0000040B
This command executes a SHOW CALLS command in the
context of all processes.
2 DBG_3> DO/PROCESS=(%PROC 2,%PROC 1) (EVAL/ADDR X;EXAM X)
For %PROCESS_NUMBER 2
%DEBUG-E-NOSYMBOL, symbol 'X' is not in the symbol table
For %Process_number 1
512
TEST\X: 1
This command executes the two commands EVAL/ADDR X and
EXAM X in the context of processes 2 and 1.
Parameters
command
Specifies a debugger command that is to be executed in the
context of the processes specified.
Qualifiers
Additional information available:
/PROCESS=(process-spec[, . . . ])
Specifies one or more processes in whose context the commands are
to be executed. You must include the parentheses even if only
one process is specified. If you do not specify /PROCESS, the
commands are executed in the context of all processes (this
effect is also achieved if you specify the asterisk wildcard
character (*) for process-spec). 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.
%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 (*)
EDIT
Note: in order to use the default state of the EDIT command, you
must have the LSE editor on your system.
Typing EDIT while in screen mode causes you to begin editing the
file that you were looking at in your source window. If you use
the LSE editor, the cursor is positioned at the place your source
window was centered. You can optionally override the default
file and start position by specifying a location in the same way
as you would with the TYPE command, for example, "EDIT
MODNAME\10".
What EDIT actually does is invoke the editor specified in the SET
EDITOR command. The default is to SPAWN the command:
$ LSEDIT/START_POSITION=(n,1) filespec
(where "n" is a number corresponding to the central line in your
source window).
See the SET EDITOR command for more details.
Syntax:
EDIT [/EXIT] [[module-name\] line-number]
Additional information available:
Parameters
The normal usage is to not specify any parameters. In this case,
if you are using the LSE editor, the editing cursor is positioned
on the same text that is displayed in the debugger source window.
DBG> EDIT
You can optionally give a module name and line number, specifying
a different place that you want to come up in the editor:
DBG> EDIT modname\line-number
You can specify the line number by itself, in which case the
module is assumed to be the same as the one currently in your
source window.
DBG> EDIT line-number
Qualifiers
Additional information available:
/EXIT
/EXIT - specifies that you want to end the debugging session and
start an editing session. In this case, the debugger performs a
$EXIT call after leaving the editor.
/NOEXIT
/NOEXIT (default) - specifies that you want to continue the
debugging session after you make your edits.
ENABLE
Enables ASTs in the user program. ASTs can be disabled during a
debugging session using the command "DISABLE AST", and they can
be re-enabled using the command "ENABLE AST". Temporarily
disabling ASTs in this fashion allows the user to prevent
interrupts from occuring while he is debugging a particular piece
of code.
Format
ENABLE AST
Example:
DBG> SHOW AST
ASTs are disabled
DBG> ENAB AST
%DEBUG-I-ENABLEAST, ASTs were disabled, are now enabled
DBG> SHOW AST
ASTs are enabled
EVALUATE
Evaluates an expression in the currently set language. The
debugger interprets the parameter in an EVALUATE command as a
source-language expression, evaluates it in the semantics of the
source language, and displays its value as a literal in the
source-language.
If an expression contains symbols with different
compiler-generated types, the debugger uses the type-conversion
rules of the current language to evaluate the expression.
Format:
EVALUATE [/qualifier] expression [,expression,...]
Additional information available:
ExamplesParametersQualifiersQualifiers
Examples
DBG> SET LANG FORT
DBG> EVAL 1+1*2
3
DBG> EVAL 1+1.1
2.10000
DBG> EVAL 3 .EQ. X(1)
True
DBG> SET LAN PAS
DBG> EVAL 3 = X[1]
True
Parameters
expression
Any legal expression in the source language, where an expression
may be composed of one or more operators, operands, or
delimiters. See the help on "Languages lang-name" for tables
specifying what operators and datatypes are accepted for each
language.
Qualifiers
Allowed qualifiers are: /ADDRESS, /CONDITION_VALUE, and the four
radix qualifiers (/DECIMAL, /HEX, /BINARY, and /OCTAL). See the
individual subtopics for details.
Qualifiers
Additional information available:
/ADDRESS/BINARY/CONDITION_VALUE/DECIMAL/HEXADECIMAL
/OCTAL
/ADDRESS
Specifies that the expression which is the parameter in the
EVALUATE command be interpreted as an address-expression, whose
value is a virtual memory address.
Example:
DBG> EVAL/ADDRESS X
512
DBG> EXAM 512
X: 3
DBG> EVAL X
3
/BINARY
Display the result in binary radix.
Example:
DBG> EVAL/BIN X
00000000 00000000 00000000 0000011
/CONDITION_VALUE
Specified that the value of the expression be interpreted as a
return status, and the message associated with that return status
be displayed.
Example:
DBG> EVAL/COND 12
"%SYSTEM-F-ACCVIO, access violation at address !XL, PC=!XL"
/DECIMAL
Display the result in decimal radix.
Example:
DBG> EVAL/DEC %HEX 10
16
/HEXADECIMAL
Display the result in hexadecimal radix.
Example:
DBG> EVAL/HEX %DEC 10
0A
/OCTAL
Display the result in octal radix.
Example:
DBG> EVAL/OCTAL %DEC 10
12
EXAMINE
EXAMINE is the way you find out about the value of your program
variables. In general, you can specify a location in the same
way it is specified in your source program (for example, "EXAM
X", "EXAM A[1]", "EXAM R.C", and so on).
The value of the object is displayed according to its
compiler-generated type.
Examples:
DBG> E X ! X is floating point
PROG\X: 1.12340
DBG> E A.B[1] ! Language is PASCAL
PROG\X.B[1]: 3
Format:
EXAMINE [/qualifiers] [address-expression[:address-expression]
[,address-expression[:address-expression]...]]
Additional information available:
AggregateParametersQualifiersQualifiers
Aggregate
Aggregate examine allows display of entire arrays or records.
Format:
EXAMINE aggregate-name
A related feature is the ability to examine slices of arrays.
Format:
EXAMINE array_name(lower_bound:upper_bound)
Example:
DBG> EXAM R ! R is a record
PROG\R
A: 12
B: 1.3
Parameters
address-expression
Specifies the entity to be examined. In general, you use the
same syntax as in your source program (for example, "EXAM A(1)"
for a FORTRAN array component). Sometimes, you may need to use
pathnames to disambiguate a name (for example, "EXAM A\B\C").
See the help on "Pathnames" for details. You can also examine
arbitrary addresses in your program that are not necessary
associated with program data (for example, "EXAM 1000"). See the
help on "Address-expressions".
You can specify a range of addresses. For example, "EXAMINE
A(1):A(100)".
You can specify a list of objects. For example, "EXAMINE A,B,C".
Qualifiers
The qualifiers on EXAMINE are used to specify a format or a data
type or a radix other than the default. See the individual
subtopics for details.
Example:
DBG> EXAM X ! default radix is decimal
PROG\X: 17
DBG> EXAM/HEX X
PROG\X: 11 ! hexadecimal
Qualifiers
Additional information available:
/ASCIC/ASCID/ASCII:n/ASCIW/ASCIZ/BINARY/BYTE
/CONDITION_VALUE/D_FLOAT/DATE_TIME/DECIMAL/DEFAULT
/FLOAT/G_FLOAT/H_FLOAT/HEXADECIMAL/INSTRUCTION
/LINE/LONGWORD/NOLINE/NOSYMBOL/OCTAL
/OCTAWORD/OPERANDS/PACKED:n/PSL/PSW
/QUADWORD/SOURCE/SYMBOL/TASK/TYPE/WORD
/ASCIC
The memory location is interpreted as an ASCIC string. This is a
string with a count byte at the beginning saying how long it is.
/AC is also accepted.
Example:
DBG> EXA/HEX X
X: 33323103
DBG> EXA/AC X
X: "123"
/ASCID
The memory location is interpreted as a VAX string descriptor,
and the string is displayed. /AD is also accepted.
Example:
DBG> EXA/HEX/QUAD X
X: 7FFF0000 010E0003
DBG> EXA/ASC:3 7FFF0000
7FFF0000: "123"
DBG> EXA/AD X
X: "123"
/ASCII:n
The memory location is interpreted as an ASCII string of length
"n". If "n" is omitted the length used is the length of the
object as given in the symbol table.
Example:
DBG> EXA/ASC:3 X
X: "123"
DBG> EXA/ASC:4 X
X: "1234"
/ASCIW
Specifies that the contents of the memory location be interpreted
as a counted ascii string with a word count. /AW is also
accepted.
Example:
DBG> EXA/HEX X
X: 31310002
DBG> EXA/AW X
X: "11"
/ASCIZ
Specifies that the contents of the memory location be interpreted
as a zero-terminated string. /AZ is also accepted.
Example:
DBG> EXA/HEX X
X: 00313131
DBG> EXA/AZ X
X: "111"
/BINARY
Specifies that output should be displayed as an integer in binary
radix.
Example:
DBG> EXA X
X: 3
DBG> EXA/BIN X
X: 00000000 00000000 00000000 00000011
/BYTE
Specifies that the examined entity or entities be displayed in
the type byte integer (length 1 byte)
Example:
DBG> EXA/LONG/HEX X
X: 12345678
DBG> EXA/BYTE/HEX X
X: 78
/CONDITION_VALUE
Specified that the contents of the memory location (usually %R0
in this case) be interpreted as a return status, and the message
associated with that return status be displayed.
Example:
DBG> EXA R0
%R0: 12
DBG> E/COND R0
R0: "%SYSTEM-F-ACCVIO, access violation at PC = !XL, virtual
address = !XL
/D_FLOAT
Specifies that the examined entity or entities be displayed in
the D_floating type (length 8 bytes).
Example:
DBG> E/D_ X
X: 3.13332884848421D12
/DATE_TIME
The memory location is interpreted as a quadword integer
containing the internal VMS representation of date-time. This
value is converted to printable format and displayed.
Example:
DBG> E/DATE_TIME X
X: "12-OCT-1984 12:00:00"
/DECIMAL
Specifies that output should be displayed as an integer in
decimal radix.
Example:
DBG> E/HEX X
X: 0FFFFFFFF
DBG> E/DEC X
X: -1
/DEFAULT
Specifies that output should be displayed in the default radix.
/FLOAT
Specifies that the examined entity or entities be displayed in
the F_floating type (length 4 bytes). /F_FLOAT is also accepted.
DBG> E/F X
X: 2.345671
/G_FLOAT
Specifies that the examined entity or entities be displayed in
the G_floating type (length 8 bytes).
DBG> E/G_ X
X: 2.34747474722222
/H_FLOAT
Specifies that the examined entity or entities be displayed in
the H_floating type (length 16 bytes).
DBG> E/H_ X
X: 2.174389247892374892324879487923
/HEXADECIMAL
Specifies that output should be displayed as an integer in
hexadecimal radix.
Example:
DBG> E/DEC X
X: -1
DBG> E/HEX X
X: 0FFFFFFFF
/INSTRUCTION
Specifies that the examined entity or entities be displayed as a
VAX assembly-language instruction. See also /OPERANDS.
Example:
DBG> E/I .PC
%LINE 100: "MOVL B10(R4),R7"
/LINE
Turns on the symbolization to line numbers, so that code
locations are displayed as "%LINE x" instead of "routine +
offset". Mostly useful in the "SET MODE LINE" form; the
qualifier is included on EXAMINE just for completeness.
Example:
DBG> SET MODE LINE
DBG> STEP
stepped to %LINE 100
DBG> SET MODE NOLINE
DBG> STEP
stepped to ROUTINENAME + 0B7
/LONGWORD
Specifies that the examined entity or entities be displayed in
the type long integer (length 4 bytes)
Example:
DBG> EXAM F
F: 1.000000
DBG> EXAM/LONG F
F: 1024
/NOLINE
Turns off the symbolization to line numbers, so that code
locations are displayed as "routine+offset" instead of "%LINE x".
Mostly useful in the "SET MODE NOLINE" form; the qualifier is
included on EXAMINE just for completeness.
Example:
DBG> SET MODE LINE
DBG> STEP
stepped to %LINE 100
DBG> SET MODE NOLINE
DBG> STEP
stepped to ROUTINENAME + 0B7
/NOSYMBOL
Turns off the symbolization of addresses, so that locations
entered as absolute addresses are displayed as absolute
addresses.
Example:
DBG> EXAM 512
X: 3
DBG> EXAM/NOSY 512
512: 3
/OCTAL
Specifies that output should be displayed as an integer in octal
radix.
Example:
DBG> EXAM X
X: 8
DBG> EXAM/OCTAL X
X: 10
/OCTAWORD
Specifies that the examined entity or entities be displayed in
the type octaword integer (length 16 bytes).
Example:
DBG> EXA/OCTAW/HEX X
X: 00000000 00000000 00000000 00000001
/OPERANDS
Specifies that the examined instruction also include a display of
each operand address and its contents beneath the instruction
display. The thing being examined must be of type "instruction".
You may control the amount of information which you see, by
specifying either OPERANDS=BRIEF or OPERANDS=FULL. These
qualifiers can be used on either the SET MODE OPERANDS or
EXAMINE/OPERANDS commands. The default is OPERANDS=BRIEF.
You should use the EXAMINE/OPERANDS command only to examine the
current PC. Other locations do not have the proper state (such
as the contents of registers), and will probably give erroneous
results when you compute the addresses of the operands.
Example:
DBG> EXAMINE/OPERANDS .0\%PC
X\X$START+0C: MOVL B^04(R4),R7
B^04(R4) X\X$START\K (address 00001058) contains 00000016
R7 R7 contains 00000000
DBG> EXAMINE/OPERANDS=FULL .0\%PC
X\X$START+0C: MOVL B^04(R4),R7
B^04(R4) R4 contains X\X$START\M (address 00001054),
B^04(00001054) evaluates to X\X$START\K
(address 00001058), which contains 00000016
R7 R7 contains 00000000
/PACKED:n
Specifies that the examined entity be interpreted as a packed
decimal number of length n nibbles.
Example:
DBG> EXAM/PACKED:5 X
X: -23412
/PSL
Specifies that the location is to be displayed in PSL format
(this is the format used when displaying the processor status
longword, that is, "EXAM %PSL"). This is intended for use in
displaying copies of the PSL which are saved in call frames on
the stack.
Example:
DBG> EXA/PSL .SP+40
7FFF0000:
CMP TP FPD IS CURMOD PRVMOD IPL DV FU IV T N Z V C
0 0 0 0 USER USER 0 0 0 1 0 0 0 0 0
/PSW
Same as /PSL, except that only the low-order 16 bits are
displayed (the processor status word).
Example:
DBG> EXA/PSW .SP+40
7FFF0000:
DV FU IV T N Z V C
0 0 1 0 0 0 0 0
/QUADWORD
Specifies that the examined entity or entities be displayed in
the type quadword integer (length 8 bytes).
Example:
DBG> EXAM/QUAD/HEX X
X: 00000000 00000000
/SOURCE
Specifies that the parameter is to be interpreted as an address,
and the source line corresponding to the address is to be
displayed. Note - in screen mode, EXAMINE/SOURCE just has the
effect of re-positioning the source window to be centered around
the specified address.
Example:
DBG> EXAM .PC
%LINE 12: INCL R0
DBG> EXAM/SOURCE .PC
module M
12: X = X + 1
/SYMBOL
Specifies that the debugger attempt to symbolize absolute
addresses. For example:
DBG> EXAM/SYM 512
PROG\X: 3
DBG> EXAM/NOSYM 512
512: 3
/TASK
The location given by "address-expression" is interpreted as the
address of an Ada task object. Its contents are displayed as an
Ada task value.
Example:
DBG> EXAMINE/HEX ALPHA
SAMPLE.ALPHA 0016A040
DBG> EXAMINE/TASK ALPHA
SAMPLE.ALPHA %TASK 2
/TYPE=(expression)
EXAMINE/TYPE=(expression) provides a way of "type-casting". The
expression specified should be the name of a data object in your
program, and the location you are examining should be an untyped
address. Under these conditions, the debugger displays the
address as if it were of the specified type.
Example: "R" is the name of a record in your program. It has
components A, an integer, and B, a floating point number. You
have also allocated an object of type R at address 2000. Then:
DBG> EXAMINE 2000 ! The debugger has no type
! information for address 2000.
2000: 12
DBG> EXAMINE/TYPE=(R) 2000 ! Show the location as if
! it were a record R.
2000:
A: 12
B: 1.7
/WORD
Specifies that the examined entity or entities be displayed as a
word integer (length 2 bytes)
Example:
DBG> EXAM/HEX X
X: 12345678
DBG> EXAM/WORD/HEX X
X: 5678
EXIT
The EXIT command ends a debugging session, or terminates one or
more processes of a multiprocess program, allowing any
user-declared exit handlers to run.
If used within a command procedure or DO clause and no process is
specified, the EXIT command exits the command procedure or DO
clause at that point.
The EXIT command is one of the four debugger commands that can
cause your program to execute (the others are CALL, GO, and
STEP).
Format:
EXIT [process-spec[, . . . ]]
Additional information available:
Ending Debugging SessionExiting Command ProceduresTerminating Processes
ExamplesParameters
Ending Debugging Session
To end a debugging session, enter the EXIT command at the
debugger prompt without specifying any parameters. This causes
orderly termination of the session: the program's user-declared
exit handlers (if any) are executed, the debugger exit handler is
executed (closing log files, restoring the screen and keypad
states, and so on), and control is returned to the command
interpreter. You cannot then continue to debug your program by
entering the DCL commands DEBUG or CONTINUE. To restart the
debugger, you must run the program again.
Note that, since EXIT runs any user-declared exit handlers, you
can set breakpoints in such exit handlers, and the breakpoints
are triggered upon typing EXIT. EXIT can thus be used to debug
your exit handlers.
To end a debugging session without running any user-declared exit
handlers, use the QUIT command instead of EXIT.
Exiting Command Procedures
When the debugger executes an EXIT command (without any
parameters) in a command procedure, control returns to the
command stream that invoked the command procedure. A command
stream can be the terminal, an outer (containing) command
procedure, or a DO clause in a command or screen display
definition. For example, if the command procedure was invoked
from within a DO clause, control returns to that DO clause, where
the debugger executes the next command (if any remain in the
command sequence).
When the debugger executes an EXIT command (without any
parameters) in a DO clause, it ignores any remaining commands in
that clause and displays its prompt.
Terminating Processes
If you are using the multiprocess debugging configuration to
debug a multiprocess program (if the logical name DBG$PROCESS has
the value MULTIPROCESS), you can use the EXIT command to
terminate selected processes without ending the debugging
session. The same techniques and behavior apply, whether you
enter the EXIT command at the prompt or use it within a command
procedure or DO clause.
To terminate one or more processes, enter the EXIT command,
specifying these processes as parameters. This causes orderly
termination of the images in these processes, executing any
user-declared exit handlers associated with these images.
Subsequently, the specified processes are no longer identified in
a SHOW PROCESS/ALL display. If any specified processes were on
hold, as the result of a SET PROCESS/HOLD command, the hold
condition is ignored.
When the specified processes begin to exit, any unspecified
process that is not on hold begins execution. Once execution is
started, the way in which it continues depends on whether the
command SET MODE [NO]INTERRUPT was entered previously. By
default (SET MODE INTERRUPT), execution continues until it is
suspended in any process. At that point, execution is
interrupted in any other processes that were executing images,
and the debugger prompts for input.
To terminate selected processes without running any user-declared
exit handlers or otherwise starting execution, use the QUIT
command instead of EXIT.
Examples
1 DBG> EXIT
$
This command ends the debugging session and returns you to DCL
command level.
2 JONES_1> EXIT %NEXT_PROCESS, %PROCESS_NAME JONES_3, %PROC 5
JONES_1>
This command causes orderly termination of three processes of a
multiprocess program: the next process after the visible process
on the process list, process JONES_3, and process 5. Control is
returned to the debugger after the specified processes have
exited.
Parameters
process-spec
Note: This parameter applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS).
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.
%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 (*)
You can also use the asterisk wilcard character (*) to specify
all processes.
EXITLOOP
Brings you out of an enclosing WHILE, REPEAT, or FOR loop. If an
integer parameter n is supplied, then EXITLOOP brings you out of
n levels of loops.
Format:
EXITLOOP [n]
Example:
DBG> WHILE 1 DO (STEP; IF X .GT. 3 THEN (EXITLOOP))
Additional information available:
Parameters
n
An integer specifying how many levels of loops to exit from.
EXPAND
Expands or contracts the window associated with a screen display.
The EXPAND command moves one or more display-window borders
according to the qualifier(s) specified (/UP, /DOWN, RIGHT,
/LEFT). For example, the following command moves the right
border of display SRC four columns to the right, and the bottom
border six lines up:
EXPAND/RIGHT:4/DOWN:-6 SRC
The EXPAND command does not affect the order of a display in the
pasteboard circular list. Depending on the relative order of
displays, the EXPAND command may cause the specified display to
hide or uncover another display or be hidden by another display,
partially or totally.
Except for the PROMPT display, any display can be shrunk down to
the point where it disappears (at which point it is marked as
"removed"). It can then be expanded from that point. The PROMPT
display cannot be shrunk (or expanded) horizontally, but can be
shrunk vertically to a height of 2 lines. Contracting a display
to the point where it disappears causes it to lose any attributes
that were selected for it.
A window border can be expanded only up to the edge of the
screen. Thus, specifying EXPAND/DOWN:99 SRC lowers the bottom
border of display SRC to the bottom edge of the screen.
The left and top window borders cannot be expanded beyond the
left and top edges of the display, respectively. The right
border can be expanded up to 255 columns from the left display
edge. The bottom border of a source or instruction display can
be expanded down only to the bottom edge of the display (last
line of the source module or last instruction of the routine). A
register display cannot be expanded beyond its full size.
In the case of an OUTPUT or DO display, the scrolling region
preserved in memory extends to 64 lines by default but may be
increased or decreased through the /SIZE qualifier with the
DISPLAY and SET DISPLAY commands.
Format:
EXPAND /qualifier[...] [disp_name [,disp_name...] ]
Additional information available:
ExamplesKey DefinitionsParametersQualifiers
Examples
DBG> EXPAND/DOWN:99 FOO ! Move the bottom border of display FOO
! down to the bottom edge of the screen
DBG> EXPAND/UP/RIGHT:-6 ! Move the top border of the current
! scrolling display up by 1 line, and
! the right border to the left by
! 6 columns.
Key Definitions
Several keypad keys have been bound to the EXPAND and MOVE
commands, to facilitate expanding, contracting, and moving
displays. (See HELP KEYPAD STATE_KEYS for more information).
Parameters
disp_name
The name (or list of names) of the screen display(s) to be
expanded or shrunk. If this name is omitted, the current
selected scrolling display is used. (See HELP SELECT/SCROLL).
Qualifiers
Additional information available:
/DOWN[:n]
Move the bottom border of the display down by n lines (if n is
positive) or up by n lines (if n is negative). If n is omitted,
the border is moved down by 1 line. See the EXPAND command
description for restrictions.
/LEFT[:n]
Move the left border of the display to the left by n lines (if n
is positive) or to the right by n lines (if n is negative). If n
is omitted, the border is moved to the left by 1 line. See the
EXPAND command description for restrictions.
/RIGHT[:n]
Move the right border of the display to the right by n lines (if
n is positive) or to the left by n lines (if n is negative). If
n is omitted, the border is moved to the right by 1 line. See
the EXPAND command description for restrictions.
/SUFFIX[=process-identifier-type]
Note: This qualifier applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS). Use
this qualifier only directly after a display name.
Appends a process-identifying suffix to a display name. The
suffix denotes the visible process. This qualifier is used
primarily in command procedures when specifying display
definitions or key definitions that are bound to display
definitions. Use any of the following process-identifier-type
keywords:
PROCESS_NAME The display-name suffix is the VMS process name.
PROCESS_NUMBER The display-name suffix is the process number
(as shown in a SHOW PROCESS display).
PROCESS_PID The display-name suffix is the VMS process
identification number (PID).
If you specify /SUFFIX without a process-identifier- type
keyword, the process identifier type used for the display-name
suffix is, by default, the same as that used for the prompt
suffix (see SET PROMPT/SUFFIX).
/UP[:n]
Move the top border of the display up by n lines (if n is
positive) or down by n lines (if n is negative). If n is
omitted, the border is moved up by 1 line. See the EXPAND
command description for restrictions.
EXTRACT
Saves screen displays into a file, or creates a file with all of
the debugger commands necessary to re-create the current screen
state at a later time.
Format:
EXTRACT [/qualifier [...]] [disp-name [,disp-name...]] file-spec]
Additional information available:
Examples
DBG> EXTRACT SRC ! Write all the lines in the SRC
! display into file DEBUG.TXT
! in the current directory.
DBG> EXTRACT SRC,OUT MYFILE.TXT ! Write all the lines in displays
! SRC and OUT into MYFILE.TXT
! in the current directory.
DBG> EXTRACT/ALL [MYDIR]MYFILE ! Write all the lines in all of
! the displays into the file
! [MYDIR]MYFILE.TXT.
DBG> EXTRACT/APPEND SRC MYFILE ! Append all the lines in display
! SRC to the end of MYFILE.TXT
! in the current directory.
DBG> EXTRACT/SCREEN_LAYOUT ! Write the debugger commands
needed
! to re-construct the screen into
! file DBGSCREEN.COM in the
! current directory.
Parameters
disp-name
The name (or list of names) of the screen display(s) to be
extracted. The name of screen displays can be wild-carded. You
must specify either one or more display names, or the /ALL
qualifier, but not both.
file-spec
Specifies the file specification to write the information to. If
you do not specify a file name or file type, the default file
name DEBUG and default file type TXT are provided, unless you
specify /SCREEN_LAYOUT. If you specify /SCREEN_LAYOUT, the
default file name and file type of the generated command file are
DBGSCREEN and COM, respectively. A logical name may be given.
You can modify the default file specification of the command file
provided with /SCREEN_LAYOUT by using the SET ATSIGN command
(Type HELP SET ATSIGN).
Qualifiers
Additional information available:
/ALL/APPEND/SCREEN_LAYOUT/SUFFIX
/ALL
Extract all displays. If /ALL is used, do not specify a display
name. Do not specify /ALL with /SCREEN_LAYOUT.
/APPEND
Append the information at the end of the file, rather than
creating a new file. The default is to create a new file. Do
not specify /APPEND with /SCREEN_LAYOUT.
/SCREEN_LAYOUT
Write a file which contains the debugger commands that describe
the current state of the screen. This information includes the
screen height and width, and the position, kind, and SELECT
attributes of every display which exists at the current time.
This file can then be executed with the "@" command to
re-construct the screen at a later time.
/SUFFIX[=process-identifier-type]
Note: This qualifier applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS). Use
this qualifier only directly after a display name.
Appends a process-identifying suffix to a display name. The
suffix denotes the visible process. This qualifier is used
primarily in command procedures when specifying display
definitions or key definitions that are bound to display
definitions. Use any of the following process-identifier-type
keywords:
PROCESS_NAME The display-name suffix is the VMS process name.
PROCESS_NUMBER The display-name suffix is the process number
(as shown in a SHOW PROCESS display).
PROCESS_PID The display-name suffix is the VMS process
identification number (PID).
If you specify /SUFFIX without a process-identifier- type
keyword, the process identifier type used for the display-name
suffix is, by default, the same as that used for the prompt
suffix (see SET PROMPT/SUFFIX).
FOR
Provides a way of iterating a sequence of debugger commands.
Format:
FOR name = expr1 TO expr2 [BY expr3] DO (debug-cmd-list)
Example:
DBG> FOR I = 1 TO 3 DO (STEP)
stepped to ...
stepped to ...
stepped to ...
Additional information available:
Parameters
name
A name which is initially bound to the value of expr1, as if you
had done DEFINE/VALUE name = expr1
expr1
A language expression of integer or enumeration type.
expr2
A language expression of integer or enumeration type.
expr3
A language expression of integer or enumeration type.
expr3 may be negative but may not be zero.
debug-cmd-list
A sequence of debugger commands separated by semicolons and
enclosed in parentheses.
GO
The GO command starts program execution or resumes execution from
the point at which it is currently suspended. GO is one of the
four debugger commands that can cause your program to execute
(the others are CALL, EXIT, and STEP).
Note that specifying an address expression with the GO command
can produce unexpected results because it alters the normal
control flow of your program. For example, during a debugging
session you can restart execution at the beginning of the program
by entering the command GO %LINE 1. However, because the program
has executed, the contents of some variables may now be
initialized differently from when you first invoked the debugger.
Format:
GO [address-expression]
Additional information available:
ExamplesMultiprocess ProgramsParameters
Examples
1 DBG> GO
.
.
%DEBUG-I-EXITSTATUS, is '%SYSTEM-S-NORMAL, normal successful completion
DBG>
This command starts program execution, which then completes
successfully.
2 DBG> SET BREAK RESTORE
DBG> GO
.
.
break at routine INVENTORY\RESTORE
137: procedure RESTORE;
DBG> GO
.
.
This SET BREAK command sets a breakpoint on routine RESTORE. The
first GO command starts program execution, which is then
suspended at the breakpoint on routine RESTORE. The second GO
command resumes execution from the breakpoint.
3 DBG> GO %LINE 42
This command resumes program execution at line 42 of the module
where execution is currently suspended.
Multiprocess Programs
If you are using the multiprocess debugging configuration to
debug a multiprocess program (if the logical name DBG$PROCESS has
the value MULTIPROCESS), note the following additional points:
1. The GO command is executed in the context of the visible
process, but images in any other unheld processes (processes
that have not been put on hold with a SET PROCESS/HOLD
command) are also allowed to execute. If you use the DO
command to broadcast a GO command to one or more processes,
the GO command is executed in the context of each specified
unheld process, but images in any other unheld processes are
also allowed to execute. In all cases, a hold condition in
the visible process is ignored.
2. Once execution is started, the way in which it continues
depends on whether the command SET MODE [NO]INTERRUPT was
entered. By default (SET MODE INTERRUPT), execution
continues until it is suspended in any process. At that
point, execution is interrupted in any other processes that
were executing images, and the debugger prompts for input.
Parameters
address-expression
Specifies that program execution resume at the location denoted
by the address expression. If you do not specify an address
expression, execution resumes at the point of suspension or, in
the case of debugger start up, at the image transfer address.
HELP
Invokes the HELP Facility to display information about a DEBUG
command or topic. In response to the "Topic?" prompt, you can:
o Type the name of the command or topic for which you need
help.
o Type a question mark (?) to redisplay the most recently
requested text.
o Press the RETURN key one or more times or the CTRL/Z key to
exit from HELP.
You can abbreviate any topic name, although ambiguous
abbreviations result in all matches being displayed.
Format:
HELP [topic ...]
Additional information available:
Parameters
topic ...
Specifies the name of the command or feature with which you need
help. In general, you can get help on a command by specifying
the command after "HELP". For example, to get help on "EXAMINE
/SOURCE", specify "HELP EXAMINE /SOURCE". There is also help on
general features (for example, "HELP Screen_features").
If you use an asterisk in place of any topic or subtopic, the
HELP command displays all information available at the level that
the asterisk replaces. For example, "HELP SET BREAK *" displays
all the subtopics under the topic "SET BREAK".
If you use an ellipsis immediately after any topic, HELP displays
all the information on the specified topic and all subtopics of
that topic. For example, "HELP SHOW..." displays information on
the "SHOW" topic as well as information on all the subtopics
under "SHOW".
IF
Provides conditional execution of a debugger command. If the
language expression given in the IF clause is true, the command
given in the THEN clause is executed. If the language expression
is false, and an ELSE clause is present, the command given in the
ELSE clause is executed.
This feature is primarily useful in debugger command procedures
and in the DO clause of breakpoints.
Format:
IF lang-exp THEN (debug-cmd-list) [ELSE (debug-cmd-list)]
Example:
DBG> SET BRE/SILENT X DO (IF Y .NE. 3 THEN (GO))
! The above is equivalent to:
DBG> SET BRE/SILENT X WHEN (Y .EQ. 3)
Additional information available:
Parameters
lang-exp
Any expression in the currently set language which evaluates to
TRUE or FALSE. For example, (X .EQ. 5) in FORTRAN, or (Y[3] >
2) in PASCAL. See "HELP Languages *" for information about the
syntax of each language.
debug-cmd-list
A single debugger command or a sequence of debugger commands
separated by semicolons.
Keypad
On Digital VT-series terminals and MicroVAX workstations, you can
use the numeric keypad to enter debugger commands provided you
are in "keypad mode". Keypad mode is enabled by default, but can
be disabled and enabled by the commands SET MODE NOKEYPAD and SET
MODE KEYPAD, respectively. In keypad mode, keypad keys are bound
to commonly used debugger commands such as STEP, GO and EXAMINE.
Most keys are bound to screen mode commands, to help you
manipulate the predefined screen displays efficiently. Some keys
are "terminated": the corresponding command is executed
immediately. Others are not: you can enter additional
parameters to the command before terminating it with a carriage
return or the ENTER key. Also, some keys echo on the terminal
while others do not, depending on the key. You can define your
own keypad definitions with the DEFINE/KEY command.
Additional information available:
DEFAULTGOLDBLUEMOVEEXPANDCONTRACTMOVE_GOLD
EXPAND_GOLDCONTRACT_GOLDMOVE_BLUEEXPAND_BLUE
CONTRACT_BLUESUMMARY
DEFAULT
Keypad definitions when you do +--------+--------+--------+--------+
not use a color key. | | Help | Set | |
| GOLD | Keypad | Mode | BLUE |
For more keypad help, enter HELP | |Default | Screen | |
KEYPAD GOLD, HELP KEYPAD BLUE +--------+--------+--------+--------+
or HELP KEYPAD STATE_KEYS. | Src LH1| | | Disp |
|Inst RH1| Scroll | Disp | next |
Control-W does a Display/Refresh | Out S45| Up | next | S12345 |
to refresh screen in screen mode. +--------+--------+--------+--------+
| | Exam | | |
| Scroll | Source | Scroll | Go |
| Left | .0\%PC | Right | |
+--------+--------+--------+--------+
| | | Select | |
| Exam | Scroll | Scroll | E |
| | Down | next | N |
+--------+--------+--------+ T |
| | | E |
| Step | Reset | R |
| | | |
+-----------------+--------+--------+
GOLD
Keypad definitions when you +--------+--------+--------+--------+
press the GOLD key first. | | Help |Set Mode| |
| GOLD | Keypad | No | BLUE |
Reset cancels the GOLD key. | | Gold | Screen | |
+--------+--------+--------+--------+
For more keypad help, enter HELP |Inst LH1| | Set | |
KEYPAD BLUE, HELP KEYPAD DEFAULT | Reg RH1| Scroll | Process| |
or HELP KEYPAD STATE_KEYS. | Out S45| Top | next | |
+--------+--------+--------+--------+
Control-W does a Display/Refresh | Scroll | | Scroll | Select |
to refresh screen in screen mode. | Left | Show | Right | Source |
| 255 | Calls | 255 | next |
+--------+--------+--------+--------+
| Exam | | Select | |
| prev | Scroll | Output | E |
| | Bottom | next | N |
+--------+--------+--------+ T |
| | | E |
| Step/Into | Reset | R |
| | | |
+-----------------+--------+--------+
BLUE
Keypad definitions when you +--------+--------+--------+--------+
press the BLUE key first. | | Help | | |
| GOLD | Keypad | Disp | BLUE |
"..." means that you must enter | | Blue | Gener | |
more input after pressing key. +--------+--------+--------+--------+
|2 SRC Qn| Scroll | 2 SRC | Disp |
Reset cancels the BLUE key. | 2 INST | Up | at | Src H1 |
| at RQn | ... | Q1,Q2 | Out S45|
For more keypad help, enter HELP +--------+--------+--------+--------+
KEYPAD GOLD, HELP KEYPAD DEFAULT | Scroll | Show | Scroll | Select |
or HELP KEYPAD STATE_KEYS. | Left | Calls | Right | Inst |
| ... | 3 | ... | next |
Control-W does a Display/Refresh +--------+--------+--------+--------+
to refresh screen in screen mode. |3 SRC Sn| Scroll | 3 SRC | |
| 3 INST | Down | at | E |
| at RSn | ... |S1,S2,S3| N |
+--------+--------+--------+ T |
| | | E |
| Step/Over | Reset | R |
| | | |
+-----------------+--------+--------+
MOVE
Keypad definitions in the MOVE +--------+--------+--------+--------+
state when you do not use a color | | Help | Set | |
key. | GOLD | Keypad | Mode | BLUE |
| | Move | Screen | |
For more keypad help, enter HELP +--------+--------+--------+--------+
KEYPAD GOLD, HELP KEYPAD BLUE | Src LH1| | | Disp |
or HELP KEYPAD STATE_KEYS. |Inst RH1| Move | Disp | next |
| Out S45| Up | next | S12345 |
Control-W does a Display/Refresh +--------+--------+--------+--------+
to refresh screen in screen mode. | | Exam | | |
| Move | Source | Move | Go |
| Left | .0\%PC | Right | |
+--------+--------+--------+--------+
| | | Select | |
| Exam | Move | Scroll | E |
| | Down | next | N |
+--------+--------+--------+ T |
| | | E |
| Step | Reset | R |
| | | |
+-----------------+--------+--------+
EXPAND
Keypad definitions in the EXPAND +--------+--------+--------+--------+
state when you do not use a color | | Help | Set | |
key. | GOLD | Keypad | Mode | BLUE |
| | Expand | Screen | |
For more keypad help, enter HELP +--------+--------+--------+--------+
KEYPAD GOLD, HELP KEYPAD BLUE | Src LH1| | | Disp |
or HELP KEYPAD STATE_KEYS. |Inst RH1| Expand | Disp | next |
| Out S45| Up | next | S12345 |
Control-W does a Display/Refresh +--------+--------+--------+--------+
to refresh screen in screen mode. | | Exam | | |
| Expand | Source | Expand | Go |
| Left | .0\%PC | Right | |
+--------+--------+--------+--------+
| | | Select | |
| Exam | Expand | Scroll | E |
| | Down | next | N |
+--------+--------+--------+ T |
| | | E |
| Step | Reset | R |
| | | |
+-----------------+--------+--------+
CONTRACT
Keypad definitions in the CONTRACT +--------+--------+--------+--------+
state when you do not use a color | | Help | Set | |
key. | GOLD | Keypad | Mode | BLUE |
| |Contract| Screen | |
For more keypad help, enter HELP +--------+--------+--------+--------+
KEYPAD GOLD, HELP KEYPAD BLUE | Src LH1| Expand | | Disp |
or HELP KEYPAD STATE_KEYS. |Inst RH1| Up= | Disp | next |
| Out S45| -1 | next | S12345 |
Control-W does a Display/Refresh +--------+--------+--------+--------+
to refresh screen in screen mode. | Expand | Exam | Expand | |
| Left= | Source | Right= | Go |
| -1 | .0\%PC | -1 | |
+--------+--------+--------+--------+
| | Expand | Select | |
| Exam | Down= | Scroll | E |
| | -1 | next | N |
+--------+--------+--------+ T |
| | | E |
| Step | Reset | R |
| | | |
+-----------------+--------+--------+
MOVE_GOLD
Keypad definitions in the MOVE +--------+--------+--------+--------+
state when you press the GOLD key | | Help |Set Mode| |
first. | GOLD | Keypad | No | BLUE |
| |MoveGold| Screen | |
Reset cancels the GOLD key. +--------+--------+--------+--------+
|Inst LH1| Move | Set | |
For more keypad help, enter HELP | Reg RH1| Up= | Process| |
KEYPAD BLUE, HELP KEYPAD DEFAULT | Out S45| 999 | next | |
or HELP KEYPAD STATE_KEYS. +--------+--------+--------+--------+
| Move | | Move | Select |
Control-W does a Display/Refresh | Left= | Show | Right= | Source |
to refresh screen in screen mode. | 999 | Calls | 999 | next |
+--------+--------+--------+--------+
| Exam | Move | Select | |
| prev | Down= | Output | E |
| | 999 | next | N |
+--------+--------+--------+ T |
| | | E |
| Step/Into | Reset | R |
| | | |
+-----------------+--------+--------+
EXPAND_GOLD
Keypad definitions in the EXPAND +--------+--------+--------+--------+
state when you press the GOLD key | | Help |Set Mode| |
first. | GOLD | Keypad | No | BLUE |
| |ExpaGold| Screen | |
Reset cancels the GOLD key. +--------+--------+--------+--------+
|Inst LH1| Expand | Set | |
For more keypad help, enter HELP | Reg RH1| Up= | Process| |
KEYPAD BLUE, HELP KEYPAD DEFAULT | Out S45| 999 | next | |
or HELP KEYPAD STATE_KEYS. +--------+--------+--------+--------+
| Expand | | Expand | Select |
Control-W does a Display/Refresh | Left= | Show | Right= | Source |
to refresh screen in screen mode. | 999 | Calls | 999 | next |
+--------+--------+--------+--------+
| Exam | Expand | Select | |
| prev | Down= | Output | E |
| | 999 | next | N |
+--------+--------+--------+ T |
| | | E |
| Step/Into | Reset | R |
| | | |
+-----------------+--------+--------+
CONTRACT_GOLD
Keypad definitions in the CONTRACT +--------+--------+--------+--------+
state when you press the GOLD key | | Help |Set Mode| |
first. | GOLD | Keypad | No | BLUE |
| |CntrGold| Screen | |
Reset cancels the GOLD key. +--------+--------+--------+--------+
|Inst LH1| Expand | Set | |
For more keypad help, enter HELP | Reg RH1| Up= | Process| |
KEYPAD BLUE, HELP KEYPAD DEFAULT | Out S45| -999 | next | |
or HELP KEYPAD STATE_KEYS. +--------+--------+--------+--------+
| Expand | | Expand | Select |
Control-W does a Display/Refresh | Left= | Show | Right= | Source |
to refresh screen in screen mode. | -999 | Calls | -999 | next |
+--------+--------+--------+--------+
| Exam | Expand | Select | |
| prev | Down= | Output | E |
| | -999 | next | N |
+--------+--------+--------+ T |
| | | E |
| Step/Into | Reset | R |
| | | |
+-----------------+--------+--------+
MOVE_BLUE
Keypad definitions in the MOVE +--------+--------+--------+--------+
state when you press the BLUE key | | Help | | |
first. | GOLD | Keypad | Disp | BLUE |
| |MoveBlue| Gener | |
"..." means that you must enter +--------+--------+--------+--------+
more input after pressing key. |2 SRC Qn| | 2 SRC | Disp |
| 2 INST | Move | at | Src H1 |
Reset cancels the BLUE key. | at RQn | Up=5 | Q1,Q2 | Out S45|
+--------+--------+--------+--------+
For more keypad help, enter HELP | | Show | | Select |
KEYPAD GOLD, HELP KEYPAD DEFAULT | Move | Calls | Move | Inst |
or HELP KEYPAD STATE_KEYS. | Left=10| 3 |Right=10| next |
+--------+--------+--------+--------+
Control-W does a Display/Refresh |3 SRC Sn| | 3 SRC | |
to refresh screen in screen mode. | 3 INST | Move | at | E |
| at RSn | Down=5 |S1,S2,S3| N |
+--------+--------+--------+ T |
| | | E |
| Step/Over | Reset | R |
| | | |
+-----------------+--------+--------+
EXPAND_BLUE
Keypad definitions in the EXPAND +--------+--------+--------+--------+
state when you press the BLUE key | | Help | | |
first. | GOLD | Keypad | Disp | BLUE |
| |ExpaBlue| Gener | |
"..." means that you must enter +--------+--------+--------+--------+
more input after pressing key. |2 SRC Qn| | 2 SRC | Disp |
| 2 INST | Expand | at | Src H1 |
Reset cancels the BLUE key. | at RQn | Up=5 | Q1,Q2 | Out S45|
+--------+--------+--------+--------+
For more keypad help, enter HELP | | Show | | Select |
KEYPAD GOLD, HELP KEYPAD DEFAULT | Expand | Calls | Expand | Inst |
or HELP KEYPAD STATE_KEYS. | Left=10| 3 |Right=10| next |
+--------+--------+--------+--------+
Control-W does a Display/Refresh |3 SRC Sn| | 3 SRC | |
to refresh screen in screen mode. | 3 INST | Expand | at | E |
| at RSn | Down=5 |S1,S2,S3| N |
+--------+--------+--------+ T |
| | | E |
| Step/Over | Reset | R |
| | | |
+-----------------+--------+--------+
CONTRACT_BLUE
Keypad definitions in the CONTRACT +--------+--------+--------+--------+
state when you press the BLUE key | | Help | | |
first. | GOLD | Keypad | Disp | BLUE |
| |CntrBlue| Gener | |
"..." means that you must enter +--------+--------+--------+--------+
more input after pressing key. |2 SRC Qn| Expand | 2 SRC | Disp |
| 2 INST | Up= | at | Src H1 |
Reset cancels the BLUE key. | at RQn | -5 | Q1,Q2 | Out S45|
+--------+--------+--------+--------+
For more keypad help, enter HELP | Expand | Show | Expand | Select |
KEYPAD GOLD, HELP KEYPAD DEFAULT | Left= | Calls | Right= | Inst |
or HELP KEYPAD STATE_KEYS. | -10 | 3 | -10 | next |
+--------+--------+--------+--------+
Control-W does a Display/Refresh |3 SRC Sn| Expand | 3 SRC | |
to refresh screen in screen mode. | 3 INST | Down= | at | E |
| at RSn | -5 |S1,S2,S3| N |
+--------+--------+--------+ T |
| | | E |
| Step/Over | Reset | R |
| | | |
+-----------------+--------+--------+
State keys
The four scrolling keys (KP8, KP2, KP4, and KP6) can also be used
to expand, contract, and move displays. Just as they can perform
a SCROLL /UP, /DOWN, /LEFT, or /RIGHT, they can now perform a
MOVE, etc. in those directions as well. The GOLD key can be
used to cause the operation to advance more than one line or
column. The commands are directed at the current scrolling
display. The key KP3 can be used to select the current scrolling
display from the display circular list.
Four keys on the LK201 keyboard are used to facilitate this.
They place the numeric keypad in one of the following four
states: DEFAULT, MOVE, EXPAND, CONTRACT. This changes the
definition of the keys KP8, KP2, KP4, and KP6. The meaning of
all other keys remains unchanged.
For example, in the MOVE state (F18), pressing the key KP2 causes
the default scrolling display to move down by one character
position. Pressing GOLD KP2 causes the display to move down by a
larger increment. The keypad remains in the MOVE state until
another state, such as the DEFAULT state (F17), is selected.
This restores the definition of the SCROLL operation.
If you do not have an LK201 keyboard with the F17-F20 keys on it,
you may get the same effect by typing the corresponding command:
F17 F18 F19 F20
SET KEY/STATE=DEFAULT or +--------+--------+--------+--------+
SET KEY/STATE=MOVE | | | | |
SET KEY/STATE=EXPAND | DEFAULT| MOVE | EXPAND |CONTRACT|
SET KEY/STATE=CONTRACT | | | | |
+--------+--------+--------+--------+
SUMMARY
Summary of debugger key definitions. +--------+--------+--------+--------+
| | | | |
For more keypad help, enter HELP | GOLD | Help | Screen | BLUE |
KEYPAD DEFAULT, HELP KEYPAD GOLD, | | | Mode | |
HELP KEYPAD BLUE, or HELP KEYPAD +--------+--------+--------+--------+
STATE_KEYS. | Select | | | Disp |
| Screen | Up | Disp | next |
Control-W does a Display/Refresh | Layout | | next | at FS |
to refresh screen in screen mode. +--------+--------+--------+--------+
| | | | |
| Left | Where | Right | Go |
| | am I? | | |
+--------+--------+--------+--------+
| | | | |
| Exam | Down | Select | E |
| | | next | N |
+--------+--------+--------+ T |
| | | E |
| Step | Reset | R |
| | | |
+-----------------+--------+--------+
Languages
This section gives help on each of the languages supported by the
debugger. The help information includes tables saying which
language operators and data types are supported by the debugger
in language expressions (for example, in the EVALUATE command).
Additional information available:
ADABASICBLISSCCCOBOLDIBOLFORTRAN
MACROPASCALPLIRPGSCANUNKNOWN
ADA
The debugger completely supports the ADA language. It knows
about ADA names, operators, and data types when evaluating
expressions in an EXAMINE or EVALUATE command. It knows about
ADA packages, with clauses, and use clauses, and follows ADA
scoping rules when looking up symbols. There are a large number
of special-purpose commands to support debugging of ADA
multitasking programs and ADA exception events.
Additional information available:
Data TypesEventsExceptionsMultitaskingOperatorsNamesOverloading
PackagesSubunitsTick Operators
Data Types
Supported ADA Data Types
Integer
Float
Fixed
Enumeration
Arrays
Records
Pointers
Tasks
Events
The debugger allows you to set breakpoints and tracepoints (known
generically as "eventpoints") on certain types of events
occurring during the execution of your program which are defined
and detected by the Ada RTL. These events would otherwise be
very difficult (or impossible) for you to set a breakpoint on.
They fall into two broad categories: exception events and
tasking events. Exception events allow you to break or trace on
any exception that is about to be handled by an Ada exception
handler. They are applicable to any Ada program. Tasking events
deal specifically with multitasking programs. They allow you to
break or trace on task scheduling, termination, and other state
transitions.
Additional information available:
CommandsEvent parametersExamples
Commands
To tell debugger to use the Ada RTL as the event detection
facility for succeeding commands, type the command "SET
EVENT_FACILITY ADA"
To see what the run time event facility is and what the defined
events are, type the command "SHOW EVENT_FACILITY".
To set an eventpoint for the Ada RTL to detect, use the commands
"SET BREAK/EVENT=keyword" or "SET TRACE/EVENT=keyword".
To display the eventpoints you have set, use the commands "SHOW
BREAK" or "SHOW TRACE".
To remove the eventpoints use the commands "CANCEL
BREAK/EVENT=keyword" or "CANCEL TRACE/EVENT=keyword"
Event parameters
Generally, the SET BREAK/EVENT and SET TRACE/EVENT commands can
take parameters which may be either address expressions or
language expressions. For Ada, the allowed parameters are task
names. Parameters are optional; omitting them implies a
"wildcard" as a parameter.
Examples
Initialize the debugger for Ada events:
DBG> SET EVENT_FACILITY ADA
Display the defined event names:
DBG> SHOW EVENT_FACILITY
event facility is ADA
Ada event names and definitions:
...
Set a breakpoint that is triggered whenever any exception is
handled by an Ada exception handler:
DBG> SET BREAK/EVENT=HANDLED
DBG> GO
...
break on Ada event HANDLED in %TASK 1
task %TASK 1 is about to handle an exception
the Ada exception handler is at: SCREEN_IO.%LINE 36
%ADA, Exception was copied at a "raise" or "accept".
Error PC=0000F60B
-ADA, Exception BAD_INPUT
-ADA, Exception raised prior to PC=00000670
Set two tracepoints that are triggered when either task GAMMA or
%TASK 1 respectively, make a transition to the RUN state. When
the event is triggered, display information about all the tasks
in the program:
DBG> SET TRACE/EVENT=RUN GAMMA, %TASK 1 DO (SHOW TASK/ALL)
DBG> GO
trace on ADA event RUN in %TASK 1
task %TASK 1 is about to run
task id pri hold state substate task object
* %TASK 1 7 RUN 81600
%TASK 2 7 READY SAMPLE.ALPHA
%TASK 3 7 READY SAMPLE.BETA
%TASK 4 7 READY SAMPLE.GAMMA
%TASK 5 7 READY SAMPLE.DELTA
trace on ADA event RUN in %TASK 4
task %TASK 4 is about to run
task id pri hold state substate task object
%TASK 1 7 SUSP Dependents 81600
%TASK 2 7 READY SAMPLE.ALPHA
%TASK 3 7 READY SAMPLE.BETA
* %TASK 4 7 RUN SAMPLE.GAMMA
%TASK 5 7 READY SAMPLE.DELTA
Set a breakpoint that is triggered whenever any task enters the
TERMINATED state. When the event is triggered, display
information about all the tasks in the program:
DBG> SET BREAK/EVENT=TERMINATED DO (SHOW TASK/ALL)
DBG> GO
break on ADA event TERMINATED in %TASK 5
task %TASK 5 is terminating normally.
task id pri hold state substate task object
%TASK 1 7 READY 81600
%TASK 2 7 READY SAMPLE.ALPHA
%TASK 3 7 READY SAMPLE.BETA
%TASK 4 7 READY SAMPLE.GAMMA
* %TASK 5 7 RUN Terminated SAMPLE.DELTA
DBG> GO
break on ADA event TERMINATED in %TASK 4
task %TASK 4 is terminating normally.
task id pri hold state substate task object
%TASK 1 7 READY 81600
%TASK 2 7 READY SAMPLE.ALPHA
%TASK 3 7 READY SAMPLE.BETA
* %TASK 4 7 RUN Terminated SAMPLE.GAMMA
%TASK 5 7 TERM Terminated SAMPLE.DELTA
Exceptions
The debugger has built-in symbols that provide information about
the current exception. Type HELP Built_in_Symbols %ADAEXC for
Ada specific exceptions and HELP Built_in_Symbols %EXC for
non-Ada-specific exceptions.
Also type HELP Languages ADA Events for information on
Ada-specific exception events.
Multitasking
The debugger has a large number of commands to help you debug ADA
multitasking programs:
SHOW TASK -- lets you observe the state of the multitasking
system.
SET TASK -- lets you alter the state of the multitasking system.
SET BREAK/EVENT and SET TRACE/EVENT -- lets you set breakpoints
on tasking events of interest to you.
The HELP text for these commands provides detailed information.
Also see the support for tasking events described under "Language
Ada EVENTS".
Operators
Supported ADA Operators in Expressions
Kind Symbol Function
------ ------ --------
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix MOD Modulus
Infix REM Remainder
Infix ** Exponentiation
Prefix ABS Absolute value
Infix & Concatenation
Infix = Equal to
Infix /= Not equal to
Infix > Greater than
Infix >= Greater than or equal to
Infix < Less than
Infix <= Less than or equal to
Prefix NOT Logical NOT
Infix AND Logical AND
Infix OR Logical OR
Infix XOR Logical Exclusive OR
Names
Supported Constructs for ADA names
Symbol Construct
------ ---------
( ) Subscripting
. Record component selection
.ALL Pointer dereferencing
Overloading
If a function F is overloaded, then the debugger invents names of
the form F__1, F__2, and so on, to refer to the individual
instances of the overloaded function. You can find out about
these names as follows:
DBG> SET BREAK F
%DEBUG-W-NOUNIQUE, F is not unique due to overloading
DBG> SHOW SYMBOL F
Overloaded function F
Overloaded instance F__1
Overloaded instance F__2
DBG> SET BREAK F__1
The "SEARCH" command and the "EXAMINE/SOURCE" command may also be
useful in locating the source associated with the definitions of
F.
Packages
The debugger knows about ADA packages, and follows ADA scoping
rules (that is, takes into account WITH and USE clauses) when
looking up symbols.
Library packages are treated as modules that can be set and
cancelled individually. If the library package has a spec and a
body then each has its own module. If the package name is "P",
then the module for the package body has the name "P", while the
module with the package spec gets the name "P_". Set the module
"P_" to make visible the names declared in the spec. Set the
module "P" to make visible the names local to the body.
The debugger sometimes sets package spec modules for you, in
order to be able to correctly follow ADA's scoping rules during
symbol lookup. See the help on "SET MODULE/RELATED", "SHOW
MODULE/RELATED" for details.
Example:
package P is
...
end P;
package body P is
...
end P;
with P;
procedure M is
...
end M;
DBG> SHOW MODULE
module name symbols
M no
P no
P_ no
DBG> SET MODULE M
module name symbols
M yes
P no
P_ yes
Subunits
The debugger knows about ADA subunits. A subunit is treated as a
debugger module. If S is a subunit of M, then the module
containing S has the invented name M__S. It has a special
relationship with the parent module M: if you set the subunit
module M__S, then the parent module M is also set by the
debugger. This is done in order to make visible symbols that are
up-level referenced.
Example:
procedure M is
...
procedure S is separate;
...
end M;
separate(M);
procedure S is
begin
...
end;
DBG> SHOW MODULE
module name symbols
M no
M__S no
DBG> SET MODULE S
DBG> SHOW MODULE
module name symbols
M yes
M__S no
Tick Operators
Supported ADA "Tick Operators"
'CONSTRAINED
'FIRST
'LAST
'LENGTH
'POS
'PRED
'SIZE
'SUCC
'VAL
Example:
DBG> EVAL DAY'SUCC(MONDAY)
TUESDAY
BASIC
Debugger Support for Language BASIC
Additional information available:
OperatorsExpressionsData TypesNotes
Operators
Supported BASIC Operators in Language Expressions
Kind Symbol Function
------ ------ --------
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition, String concatenation
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix ** Exponentiation
Infix ^ Exponentiation
Infix = Equal to
Infix <> Not equal to
Infix >< Not equal to
Infix > Greater than
Infix >= Greater than or equal to
Infix => Greater than or equal to
Infix < Less than
Infix >= Less than or equal to
Infix => Less than or equal to
Prefix NOT Bit-wise NOT
Infix AND Bit-wise AND
Infix OR Bit-wise OR
Infix XOR Bit-wise exclusive OR
Infix IMP Bit-wise implication
Infix EQV Bit-wise equivalence
Expressions
Supported Constructs in Language and Address Expressions for BASIC
Symbol Construct
------ ---------
( ) Subscripting
:: Record component selection
Data Types
Supported BASIC Data Types
BYTE HFLOAT
WORD DECIMAL
LONG STRING
SINGLE RFA
DOUBLE Arrays
GFLOAT Records
Notes
Expressions that overflow in the BASIC language do not necessarily overflow when evaluated by the debugger. The debugger tries to compute a numerically correct result, even when the BASIC rules call for overflows. This difference is particularly likely to affect DECIMAL computations. BASIC constants of the forms [radix]"numeric-string"[type] (such as "12.34"GFLOAT) or n% (such as 25% for integer 25) are not supported in debugger expressions.
BLISS
Debugger Support for Language BLISS
Additional information available:
OperatorsExpressionsData Types
Operators
Supported BLISS Operators in Language Expressions
Kind Symbol Function
------ ------ --------
Prefix . Indirection
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix MOD Remainder
Infix ^ Left shift
Infix EQL Equal to
Infix EQLU Equal to
Infix EQLA Equal to
Infix NEQ Not equal to
Infix NEQU Not equal to
Infix NEQA Not equal to
Infix GTR Greater than
Infix GTRU Greater than unsigned
Infix GTRA Greater than unsigned
Infix GEQ Greater than or equal to
Infix GEQU Greater than or equal to unsigned
Infix GEQA Greater than or equal to unsigned
Infix LSS Less than
Infix LSSU Less than unsigned
Infix LSSA Less than unsigned
Infix LEQ Less than or equal to
Infix LEQU Less than or equal to unsigned
Infix LEQA Less than or equal to unsigned
Prefix NOT Bit-wise NOT
Infix AND Bit-wise AND
Infix OR Bit-wise OR
Infix XOR Bit-wise exclusive OR
Infix EQV Bit-wise equivalence
Expressions
Supported Constructs in Language and Address Expressions for BLISS
Symbol Construct
------ ---------
[ ] Subscripting
[fldname] Field selection
<p,s,e> Bit field selection
Data Types
Supported BLISS Data Types
BYTE BITVECTOR
WORD BLOCK
LONG BLOCKVECTOR
BYTE UNSIGNED REF VECTOR
WORD UNSIGNED REF BITVECTOR
LONG UNSIGNED REF BLOCK
VECTOR REF BLOCKVECTOR
CC
Debugger Support for Language C
Additional information available:
OperatorsExpressionsData TypesNotes
Operators
Supported C Operators in Language Expressions
Kind Symbol Function
------ ------ --------
Prefix * Indirection
Prefix & Address of
Prefix SIZEOF Size of
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix % Remainder
Infix << Left shift
Infix >> Right shift
Infix == Equal to
Infix != Not equal to
Infix > Greater than
Infix >= Greater than or equal to
Infix < Less than
Infix <= Less than or equal to
Prefix ~ Bit-wise NOT
Infix & Bit-wise AND
Infix | Bit-wise OR
Infix ^ Bit-wise exclusive OR
Prefix ! Logical NOT
Infix && Logical AND
Infix || Logical OR
Expressions
Supported Constructs in Language and Address Expressions for C
Symbol Construct
------ ---------
[ ] Subscripting
. Structure component selection
-> Pointer dereferencing
Data Types
Supported C Data Types
INT DOUBLE
SHORT INT ENUM
UNSIGNED INT STRUCT
UNSIGNED SHORT INT UNION
CHAR Pointers
UNSIGNED CHAR Arrays
FLOAT
Notes
Symbol names are case-sensitive for language C, meaning that upper-case and lower-case letters are treated as different characters. Since the exclamation point (!) is an operator in C, it cannot be used as the comment delimiter. When the language is set to C, the debugger instead accepts /* as the comment delimiter. The comment continues to the end of the current line. (A matching */ is neither needed nor recognized.) To permit debugger log files to be used as debugger input, the debugger still recognizes ! as a comment delimiter if it is the first non-blank character on a line. The debugger accepts the prefix asterisk (*) as an indirection operator in both C language expressions and debugger address expressions. In address expressions, prefix "*" is synonymous to prefix "." or "@" when the language is set to C. The debugger does not support any of the assignment operators in C (or any other language) in order to prevent unintended modifications to the program being debugged. Hence such operators as =, +=, -=, ++, and -- are not recognized. If you wish to alter the contents of a memory location, you must do so with an explicit DEPOSIT command.
COBOL
Debugger Support for Language COBOL
Additional information available:
OperatorsExpressionsData TypesNotes
Operators
Supported COBOL Operators in Language Expressions
Kind Symbol Function
------ ------ --------
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix ** Exponentiation
Infix = Equal to
Infix NOT = Not equal to
Infix > Greater than
Infix NOT < Greater than or equal to
Infix < Less than
Infix NOT > Less than or equal to
Infix NOT Logical NOT
Infix AND Logical AND
Infix OR Logical OR
Expressions
Supported Constructs in Language and Address Expressions for COBOL
Symbol Construct
------ ---------
( ) Subscripting
OF Record component selection
IN Record component selection
Data Types
Supported COBOL Data Types
COMP Records
COMP-1 Numeric Unsigned
COMP-2 Leading Separate Sign
COMP-3 Leading Overpunched Sign
INDEX Trailing Separate Sign
Alphanumeric Trailing Overpunched Sign
Notes
The debugger can show source text included in a program with the COPY or COPY REPLACING verb. However, when COPY REPLACING is used, the debugger always shows the original source text as it appeared before text replacement. In other words, the original source file is shown instead of the modified source text generated by the COPY REPLACING verb. The debugger cannot show the original source lines associated with the code for a REPORT section. You can see the DATA SECTION source lines associated with a REPORT, but no source lines are associated with the compiled code that generates the report. VAX COBOL may use quadword, longword, or word to represent a COMP data type.
DIBOL
Debugger Support for Language DIBOL
Additional information available:
OperatorsExpressionsData Types
Operators
Supported DIBOL Operators in Language Expressions
Kind Symbol Function
------ ------ --------
Prefix # Round
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix // Division with fractional result
Infix .EQ. Equal to
Infix .NE. Not equal to
Infix .GT. Greater than
Infix .GE. Greater than or equal to
Infix .LT. Less than
Infix .LE. Less than or equal to
Prefix .NOT. Logical NOT
Infix .AND. Logical AND
Infix .OR. Logical OR
Infix .XOR. Exclusive OR
Expressions
Supported Constructs in Language and Address Expressions for DIBOL
Symbol Construct
------ ---------
( ) Substring
[ ] Subscripting
. Record component selection
Data Types
Supported DIBOL Data Types
Byte integer (I1)
Word integer (I2)
Long integer (I4)
Packed decimal (Pn)
Implied packed decimal (Pn.m)
Zoned decimal (Dn)
Implied zoned decimal (Dn.m)
Ascii (An)
Arrays
Records
FORTRAN
Debugger Support for Language FORTRAN
Additional information available:
OperatorsExpressionsPredefined SymbolsData TypesNotes
Operators
Supported FORTRAN Operators in Language Expressions
Kind Symbol Function
------ ------ --------
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix ** Exponentiation
Infix // Concatenation
Infix .EQ. Equal to
Infix .NE. Not equal to
Infix .GT. Greater than
Infix .GE. Greater than or equal to
Infix .LT. Less than
Infix .LE. Less than or equal to
Prefix .NOT. Logical NOT
Infix .AND. Logical AND
Infix .OR. Logical OR
Infix .XOR. Exclusive OR
Infix .EQV. Equivalence
Infix .NEQV. Exclusive OR
Expressions
Supported Constructs in Language and Address Expressions for FORTRAN
Symbol Construct
------ ---------
( ) Subscripting
. Record component selection
Predefined Symbols
Supported FORTRAN Predefined Symbols
Symbol Meaning
------ -------
.TRUE. Logical True
.FALSE. Logical False
Data Types
Supported FORTRAN Data Types
LOGICAL*1 REAL*16
LOGICAL*2 COMPLEX*8
LOGICAL*4 COMPLEX*16
INTEGER*2 CHARACTER
INTEGER*4 Arrays
REAL*4 Records
REAL*8
Notes
Even though the VAX type codes for unsigned integers (BU, WU, LU) are used internally to describe the LOGICAL data types, the debugger (like the compiler) treats LOGICAL variables and values as being signed when used in language expressions. The debugger prints the numeric values of LOGICAL variables or expressions instead of TRUE or FALSE. Normally, only the low-order bit of a LOGICAL variable or value is significant (0 is FALSE and 1 is TRUE). However, VAX FORTRAN does allow all bits in a LOGICAL value to be manipulated and LOGICAL values can be used in integer expressions. For this reason, it is at times necessary to see the entire integer value of a LOGICAL variable or expression, and that is what the debugger shows. COMPLEX constants such as (1.0,2.0) are not supported in debugger expressions. Floating point numbers of type REAL*8 and COMPLEX*16 may be represented by D_Floating or G_Floating depending on compiler switches.
MACRO
Debugger Support for Language MACRO
Additional information available:
OperatorsExpressionsData Types
Operators
Supported Operators in Language Expressions
Language MACRO does not have expressions in the same sense as
high-level languages. Only assembly-time expressions and only a
limited set of operators are accepted. To permit the MACRO
programmer to use expressions at debug-time as freely as in other
languages, the debugger accepts a number of operators in MACRO
language expressions that are not found in MACRO itself. In
particular, the debugger accepts a complete set of comparison and
boolean operators modeled after BLISS. It also accepts the
indirection operator and the normal arithmetic operators.
Kind Symbol Function
------ ------ --------
Prefix @ Indirection
Prefix . Indirection
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix MOD Remainder
Infix @ Left shift
Infix EQL Equal to
Infix EQLU Equal to
Infix NEQ Not equal to
Infix NEQU Not equal to
Infix GTR Greater than
Infix GTRU Greater than unsigned
Infix GEQ Greater than or equal to
Infix GEQU Greater than or equal to unsigned
Infix LSS Less than
Infix LSSU Less than unsigned
Infix LEQ Less than or equal to
Infix LEQU Less than or equal to unsigned
Prefix NOT Bit-wise NOT
Infix AND Bit-wise AND
Infix OR Bit-wise OR
Infix XOR Bit-wise exclusive OR
Infix EQV Bit-wise equivalence
Expressions
Supported Constructs in Language and Address Expressions for MACRO
Symbol Construct
------ ---------
<p,s,e> Bitfield selection as in BLISS
[ ] Subscripting
The DST information generated by the MACRO assembler treats a label
that is followed by an assembler directive for storage allocation as
an array variable whose name is the label. This enables you to use
the array syntax of a high-level language when examining or
manipulating such data.
In the following example of MACRO source code, the label LAB4
designates hexadecimal data stored in four words:
LAB4: .WORD ^X3F,5[2],^X3C
The debugger treats LAB4 as an array variable. For example, the next
command displays the value stored in each element (word):
DBG> EXAMINE LAB4
.MAIN.\MAIN\LAB4
[0]: 003F
[1]: 0005
[2]: 0005
[3]: 003C
DBG>
The next command displays the value stored in the fourth word (the
first word is indexed as element "0"):
DBG> EXAMINE LAB4[3]
.MAIN.\MAIN\LAB4[3]: 03C
DBG>
Data Types
Supported MACRO Data Types
Byte Unsigned (BU)
Word Unsigned (WU)
Longword Unsigned (LU)
Byte Integer (B)
Word Integer (W)
Longword Integer (L)
PASCAL
Debugger Support for Language PASCAL
Additional information available:
OperatorsExpressionsPredefined SymbolsData TypesNotes
Operators
Supported PASCAL Operators in Language Expressions
Kind Symbol Function
------ ------ --------
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition, concatenation
Infix - Subtraction
Infix * Multiplication
Infix / Real division
Infix DIV Integer division
Infix MOD Modulus
Infix REM Remainder
Infix ** Exponentiation
Infix IN Set membership
Infix = Equal to
Infix <> Not equal to
Infix > Greater than
Infix >= Greater than or equal to
Infix < Less than
Infix <= Less than or equal to
Prefix NOT Logical NOT
Infix AND Logical AND
Infix OR Logical OR
Expressions
Supported Constructs in Language and Address Expressions for PASCAL
Symbol Construct
------ ---------
[ ] Subscripting
. Record component selection
^ Pointer dereferencing
Predefined Symbols
Supported PASCAL Predefined Symbols and Functions
Symbol Meaning
------ -------
TRUE Boolean True
FALSE Boolean False
NIL Nil pointer
Data Types
Supported PASCAL Data Types
INTEGER CHAR Subranges
UNSIGNED VARYING Typed
SINGLE SET Arrays
DOUBLE FILE Records
QUADRUPLE Enumerations Variant
BOOLEAN
Notes
The debugger accepts PASCAL set constants such as [1,2,5,8..10] or [RED, BLUE] in PASCAL language expressions. VAX PASCAL may use longword, word, or byte to represent INTEGER or UNSIGNED data types. DOUBLE precision floating point numbers may be represented by D_Floating or G_Floating depending on compiler switches.
PLI
Debugger Support for Language PL/I
Additional information available:
OperatorsExpressionsData TypesNotes
Operators
Supported PL/I Operators in Language Expressions
Kind Symbol Function
------ ------ --------
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix ** Exponentiation
Infix || Concatenation
Infix = Equal to
Infix ^= Not equal to
Infix > Greater than
Infix >= Greater than or equal to
Infix ^< Greater than or equal to
Infix < Less than
Infix <= Less than or equal to
Infix ^> Less than or equal to
Prefix ^ Bit-wise NOT
Infix & Bit-wise AND
Infix | Bit-wise OR
Expressions
Supported Constructs in Language and Address Expressions for PL/I
Symbol Construct
------ ---------
( ) Subscripting
. Structure component selection
-> Pointer dereferencing
Data Types
Supported PL/I Data Types
FIXED BINARY CHARACTER VARYING
FIXED DECIMAL FILE
FLOAT BINARY Labels
FLOAT DECIMAL Pointers
BIT Arrays
CHARACTER Structures
Notes
The debugger treats all numeric constants of the form n or n.n in PL/I language expressions as packed decimal constants, not integer or floating-point constants, in order to conform to PL/I language rules. The internal representation of 10 is therefore 0C01 hexadecimal, not 0A hexadecimal. You can enter floating-point constants using the syntax nEn or n.nEn. There is no PL/I syntax for entering constants whose internal representation is Longword Integer. This limitation is not normally significant when debugging since the debugger supports the PL/I type conversion rules. However, it is possible to enter integer constants by using the debugger's %HEX, %OCT, and %BIN operators. VAX PL/I may use F_Floating, D_Floating, G_Floating, or H_Floating to represent FLOAT BINARY or FLOAT DECIMAL data types depending on compiler switches.
RPG
Debugger Support for Language RPG
Additional information available:
OperatorsExpressionsData TypesNotes
Operators
Supported RPG Operators in Language Expressions
Kind Symbol Function
------ ------ --------
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix = Equal to
Infix NOT = Not equal to
Infix > Greater than
Infix NOT < Greater than or equal to
Infix < Less than
Infix NOT > Less than or equal to
Prefix NOT Logical NOT
Infix AND Logical AND
Infix OR Logical OR
Expressions
Supported Constructs in Language and Address Expressions for RPG
Symbol Construct
------ ---------
( ) Subscripting
Data Types
Supported RPG Data Types
Longword
Word
Packed Decimal
Character
Overpunched Decimal
Arrays
Tables
Notes
The debugger supports access to all RPG indicators and labels used in the current program. You can thus examine labels such as *DETL and indicators such as *INLR and *IN01 through *IN99.
SCAN
Debugger Support for Language SCAN
Additional information available:
EventsOperatorsExpressionsData Types
Events
The debugger allows you to set breakpoints and tracepoints (known
generically as "eventpoints") on certain types of events
occurring during the execution of your program which are defined
and detected by the SCAN RTL.
SCAN defines several events. By setting breaks or traces on
these events, you can observe the picture matching process. To
see what the defined events are for SCAN, type the command "SHOW
EVENTS".
To set an eventpoint for the SCAN RTL to detect, use the commands
"SET BREAK/EVENT=keyword" or "SET TRACE/EVENT=keyword".
To display the eventpoints you have set, use the commands "SHOW
BREAK" or "SHOW TRACE".
To remove the eventpoints use the commands "CANCEL
BREAK/EVENT=keyword" or "CANCEL TRACE/EVENT=keyword"
Where "keyword" is one of the defined events listed by the "SHOW
EVENTS" command. SCAN events may be abbreviated to 3 or more
characters.
Additional information available:
Examples
Set two tracepoints that are triggered when a SCAN Trigger or Syntax
Macro is activated. Set a break point that is triggered whenever a
SCAN token is built.
DBG>SET TRACE/EVENT=TRIGGER
DBG>SET TRACE/EVENT=SYNTAX
DBG>SET BREAK/EVENT=TOKEN
The following example illustrates the output from the program
execution after setting the above eventpoints.
DBG>Go
trace on event TRIGGER_MACRO
Trigger Macro EXPRESSION_TEST\PRINT_STMT Activated
break on event TOKEN
Token built: PRINT Triggerable Length:5 Line:1 Column:1
Token text: 'print'
DBG>Go
trace on event SYNTAX_MACRO
Syntax Macro EXPRESSION_TEST\EXP Activated
Operators
Supported Operators in Language Expressions for SCAN
Kind Symbol Function
------ ------ --------
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix & Concatenation
Infix = Equals
Infix <> Not equals
Infix > Greater than
Infix >= Greater than or equal to
Infix < Less than
Infix <= Less than or equal to
Prefix NOT Complement
Infix AND Intersection
Infix OR Union
Infix XOR Exclusive OR
Expressions
Supported Constructs in Language and Address Expressions for SCAN
Symbol Construct
------ ---------
( ) Subscripting
. Record component selection
-> Pointer dereferencing
Data Types
Supported SCAN Data Types
BOOLEAN
INTEGER
POINTER
STRING
TREE
TREEPTR
RECORD
OVERLAY
There is no specific support for the following datatypes: FILE,
TOKEN, GROUP, SET. Examining a FILL variable displays the
contents of the specified variable displayed as a string by
default, and so may have little meaning. If the characteristics
of the fill are known, then the appropriate qualifier (/HEX...)
applied to the command produces a more meaningful display.
Examining SCAN TREE and TREEPTR variables:
DBG>EXAMINE tree_variable( [ subscript ],...)
- To dump an entire SCAN tree or subtree
DBG>EXAMINE treeptr_variable
- To dump the contents of a SCAN treeptr
DBG>EXAMINE treeptr_variable->
- To dump an entire SCAN subtree
DEPOSIT is not supported for SCAN TREE variables at this time.
You may set breakpoints on any SCAN label, line number, MACRO, or
PROCEDURE.
UNKNOWN
Debugger Support for Language UNKNOWN
Additional information available:
OperatorsExpressionsData TypesNotes
Operators
Supported Operators in Language Expressions for UNKNOWN
Kind Symbol Function
------ ------ --------
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix ** Exponentiation
Infix & Concatenation
Infix // Concatenation
Infix = Equal to
Infix <> Not equal to
Infix /= Not equal to
Infix > Greater than
Infix >= Greater than or equal to
Infix < Less than
Infix <= Less than or equal to
Infix EQL Equal to
Infix NEQ Not equal to
Infix GTR Greater than
Infix GEQ Greater than or equal to
Infix LSS Less than
Infix LEQ Less than or equal to
Prefix NOT Logical NOT
Infix AND Logical AND
Infix OR Logical OR
Infix XOR Exclusive OR
Infix EQV Equivalence
Expressions
Supported Constructs in Language and Address Expressions for UNKNOWN
Symbol Construct
------ ---------
[ ] Subscripting
( ) Subscripting
. Record component selection
^ Pointer dereferencing
Data Types
Supported UNKNOWN Data Types When the language is set to UNKNOWN, the debugger understands all data types accepted by other languages except a few very language-specific types, such a picture types and file types. In UNKNOWN language expressions, the debugger accepts most scalar VAX Standard data types.
Notes
For language UNKNOWN, the debugger accepts the dot-notation for record component selection. If C is a component of a record B which in turn is a component of a record A, C can be referenced as "A.B.C". Subscripts can be attached to any array components; if B is an array, for instance, C may be referenced as "A.B[2,3].C". For language UNKNOWN, the debugger accepts both round and square subscript parentheses. Hence A[2,3] and A(2,3) are equivalent.
Logical Names
Additional information available:
DBG$INITDBG$INPUT_DBG$OUTPUTDBG$PROCESS
DBG$INIT
If the logical name DBG$INIT is defined at the start of a
debugging session, then the file that it translates to is used as
an initialization file. The commands in the file are executed as
if the file had been called with the @ (execute procedure)
command. This is useful if there is a particular set of commands
that you always execute when you start up the debugger, for
example to specify a source directory search list, enable screen
mode, log the session.
Example:
$ CREATE DEBUG.COM
SET SOURCE [],SRC$
SET MODE SCREEN
SET STEP SILENT
$ DEFINE DBG$INIT [JONES.CMD]DEBUG_INIT.COM
DBG$INPUT_DBG$OUTPUT
The value of the logical name DBG$INPUT determines the debugger
input device. By default, this is SYS$INPUT.
The value of the logical name DBG$OUTPUT determines the debugger
output device. By default, this is SYS$OUTPUT.
If you plan to debug a program that takes its input from a file
and your debugger input from the terminal, establish the
following definitions before invoking the debugger:
$ DEFINE SYS$INPUT program-input-file
$ DEFINE/PROCESS DBG$INPUT 'F$LOGICAL("SYS$COMMAND")
That is, define DBG$INPUT to point to the translation of
SYS$COMMAND.
If you define DBG$INPUT to point to SYS$COMMAND, the debugger
will try to get its input from the file.
DBG$PROCESS
The value of the logical name DBG$PROCESS determines the
debugging configuration as follows:
DBG$PROCESS: Configuration:
Undefined or DEFAULT Default
MULTIPROCESS Multiprocess
Use the default configuration to debug programs that normally run
(without the debugger) in only one process. Use the multiprocess
configuration to debug programs that normally run in more than
one process.
When defining DBG$PROCESS for a multiprocess configuration, make
the definition job wide. This ensures that any processes that
are in the same job tree as the program being debugged (for
example, processes spawned by the program) can be controlled from
the same debugging session.
Type HELP Debugging_Configurations and HELP Multiprocess for more
information
Additional information available:
Examples
1 $ DEFINE/JOB DBG$PROCESS MULTIPROCESS
$ RUN PROG1
...
DBG_1>
In this example, the DEFINE/JOB command establishes the
multiprocess debugging configuration. This is demonstrated by
the process-specific prompt suffix, "_1", which is displayed
initially when the debugger is invoked with the RUN command. The
prompt suffix indicates that execution is suspended in process 1,
the first process that was brought under debugger control.
Process 1 is currently the visible process -- the context for
executing process-specific commands like STEP, EXAMINE, and so
on.
2 $ DEFINE DBG$PROCESS DEFAULT
$ RUN PROG1
...
DBG>
In this example, the DEFINE command establishes the default
debugging configuration. This is demonstrated by the DBG>
prompt, which is displayed when the debugger is invoked with the
RUN command.
Messages
This section contains information on the messages you may see.
Format:
MESSAGE keyword
where "keyword" is the abbreviation (IDENT) of the message. For
example, if you received the message
%DEBUG-I-INITIAL, language is BASIC, module set to TEST
and wanted to know more about it, you could enter the command
DBG> HELP MESSAGE INITIAL
and you would see information about the INITIAL message.
Additional information available:
ABORTEDABSDATSYNACCADDCOMACTIVATING
ADDRANCOVADDRESSMODEADDRREGALLOBNDSAMBFIELD
AMBIGQUALAMPERSANDASTWASDISABLEDASTWASENABLED
ATTACHEDATTREQREFBADDESCRBADDISCVALBADDST
BADEVNPARBADEXHBADFRAMEBADHANDLEBADOPCODE
BADPARAMBADSCOPEBADSIGARGBADSTACKBADSTARTPC
BADSTATUSBADTAGVALBADTARGETBADUSREVNT
BADWATCHBASVARNOTSETBITRANGEBUFFEROVF
BWLGISMUSCANTACCESSMAINCANTCREATEMAINCANTGETFID
CANTINTPROCANTOPNIMGCANTPASTCIREXLSTCLIBRDFAI
CLIBRDLCKCMDNOTDWCMDNOTONECMDSYNERR
CMPNOTFNDCONFLICTCONFROMEXCCONSTRCOMP
CPOSTDECRCPOSTINCRCPREDECRCPREINCRCRMPSCFAIL
CVTNEGUNSDBGERRDBGSTOPPEDDECLARERR
DECOVFDECROPRANDDEFKEYDEFKEYERRDELBREAK
DELKEYDELKEYERRDELTIMTOODELTRACEDESCNOTSET
DISABLEASTDISNAMREQDISNOTSELDISPEXISTS
DISPRLENSIZDIVBYZERODSTERRGDSTNESDEP
DWERRDWNOT1PROCDYNIMGSETDYNMODSET
EDITDISVEREDITERROREDITFILEEDITNOFILE
EDITREVVERENABLEASTENTRYMASKENUMRANGE
ERRACTIMGERRASSIGNERRCLSFILEERRCRELNM
ERRDEASSIGNERRFAOERRGETDVIERRGETEFERRINSDEC
ERRINSIGNALERRINVEDITERRORERRORLIMIT
ERROR_BLOCKERRQIOWERRSMGERRSYSSERVERRUSREVNT
EXARANGEEXCBREREPEXCDURCALEXITARGEXITERR
EXITSTATUSEXPMEMPOOLFILEUNALFLTOVFGETJPI
HEIGHTDIFFIDENTLONGIFIXUNDIFLTUNDIINTOVF
ILLADDCONILLASTERILLDEFNAMILLENUMVAL
ILLEVNSTRILLFILPTRILLFLOATILLLENGTHILLOFFSETILLPACSIZILLPATH1
ILLPATH2ILLPATHELEMILLPOSFLDILLQUALIFILLRANGEILLSETCON
ILLSIGEXTILLSIZFLDILLSUBLENILLSUBSTRILLTYPEINCDSTNESINCOMPOPR
INCOMPPTRINCOMQUALINCOMTARGETINCOMVERSION
INDBASEQLINITERRINITIALINPREADERRINSVIRMEM
INTERRINTERRUPTEDINTMEMERRINTOVFINUMTRUNC
INVADDRTKNINVARGLISINVARRDIMINVARRDSC
INVAVSCODEINVCHARINVCHRCONINVDESCINVDIGBIN
INVDIGDECINVDIGHEXINVDIGOCTINVDIRNAMINVDMTPTR
INVDSPSIZINVDSTRECINVDSTTYPCODEINVEXPRINVFIXDST
INVFLDREFINVGSTRECINVGSTTYPINVINDIRECT
INVLANGCODEINVLENGTHINVMARINVNOSPECTKN
INVNUMBERINVNUMSRCINVNUMSTRINVOPADDR
INVOPSYMINVPAGEINVPRCSYNINVPRIORINVRANSPEC
INVSELDISINVSRCLININVTIMSLIINVTSCODEINVVALTKN
INVWIDTHINVWINPARIRFAOVFISTRTRUITMNOTAVA
ITMTRUNCIVALOUTBNDSIVPRCLOGKERFUNCNYIKEYNAMERR
KEYSTATERRLASTCHANCELINEINFOLOGFILEISLONGSTRING
LOOPINCRLOOPVARLOWBNDOPTMATQUOMISMAXSTRLEN
MISCLOSUBMISINVNUMMISINVOPERMISMODBEG
MISMODENDMISOPEMISMODUSCOPEMPARENREQ
MPCOMMANDNAMSTRMISNAMTOOLONGNEEDMORE
NEEDPARENNOACCESSRNOACCESSWNOADDRREG
NOALTERSPNOATTACHNOBREAGGRNOBREAKAT
NOBREAKSNOCALLSNOCANMAINNOCLINOCONNECT
NOCURLOCNODEFSCPENODELIMTRNODEPDEBUG
NODIRLISMNODIRLISTNOELABBODYNOELABSPECNOEND
NOEPTSPECNOEVALEXPRNOEVENTFACNOEXCBRE
NOEXHNDNOFIELDNOFREENOGLOBALSNOINPAVAIL
NOINPFOCNOINSTRANNOKEYDEFNOKEYPADNOLASTVAL
NOLINXXXNOLISTNOLOCALSNOMARKCHNGNOMATCHNOMORE
NONEXPRNONEXPRCNONUMSCOPENONXTLINNOOCCLDISP
NOOUTAVAILNOPACKMEMBODYNOPACKMEMSPECNOPRED
NOPROMPTNORECSYMNORMALNORSTBLDNOSAVPROG
NOSCOPENOSCOPELISTNOSCRDEVNOSCRMODENOSCROLL
NOSCROLLDISPNOSETTERMNOSPAWNNOSPAWNINOSRCHSTR
NOSRCLINNOSTEPGONOSUCCNOSUCHBPTNOSUCHDISP
NOSUCHELPNOSUCHIMGNOSUCHMODUNOSUCHPACK
NOSUCHSCOPENOSUCHTASKNOSUCHTPTNOSUCHWIND
NOSUCHWPTNOSYMBOLNOSYMBOLRNOTADAPROG
NOTALIGNEDNOTARRAYNOTASTRUCTNOTATMAIN
NOTCURPCNOTDEFINENOTIMPLANNOTINLOOP
NOTINSCOPENOTINSTNOTNUMSCOPENOTORIGSRC
NOTPTRNOTRACESNOTRAZERONOTRECORDNOTREE
NOTTASKVALNOTUISOSCNOTUISV30NOTUNQOVR
NOTUPDATENOTYPEINFONOUNIQUENOUNIVERSALS
NOUSREVNTNOVALATPCNOVALTYPNOVALUENOWATCHES
NOWATTARNOWATVARIANOWATVARSTGNOWBPTNOWILD
NOWILDFILNOWOPCONOWPROTNULLPTRNUMCONLONGNUMTRUNC
OBJECTINVOBJPTRINVOBJTYPMISOBSOLETE_1
OBSOLETE_2OPCDECOPNOTALLOWOPSYNTAXOUTPUTLOST
PACSIZREQPARENREQPARSTKOVRPASTHRUPATHNOTACP
PATHTLONGPATHTOOLONGPCNOTALLPLICVTERR
PREDEPTNOTPROFRANOTPROMPTCLENPROMPTOCCL
PROMPTRLENPROVRFLOWPSHVALNYIPXCNQUALREQ
QUOSTRLONGREADERRREFUSEDREGMASKHIDDENREGMASKMISSING
REGREQRENAMENOTRESUMERRRETURNEDRNDFCTROUT
ROPRANDFRPCDBBDTRPCERRRPCINVDSCRPCOVFRPCUNF
RPCUNKARGRSTERRSCALEADDSCALESUBSCRNOTORIGSRC
SCRTOBIGSCRTOSMALLSCRUNAOPNSRCSCRUNAREASRC
SETKEYSETKEYERRSETMODUSETSCOMODSFCNTNEG
SHOKEYERRSHRPRCSIDEFFECTSIGVECTRUNCSIZEATOMIC
SIZETRUNCSOURCESCOPESPAWNEDSRCLINNOTSS_INT
STEPINTOSTGTRUNCSTRNGPADSTRTOOLONGSTRUCSIZESUBOUTBND
SUBSCRNGSUBSTRINGSUBUNITCANSUBUNITNOTCANSUBUNITNOTSET
SUBUNITSETSUPERDEBUGSYMNOTACTSYMNOTFND
SYNERREXPRSYNERRLABELSYNERRLINESYNTAX
TASKERRORTASKNONULLTASKNOREGSTASKNOTABORT
TASKNOTACTTASKNULLTERMINATINGTERMTKNREQ
TIMESLICETOOFEWSUBTOOMANDIMTOOMANERR
TOOMANINVTOOMANPARMTOOMANSUBTRYINGONEPRC
UNACREDBGOUNACVTUNALIGNEDUNALLOCATED
UNAOPEDBGIUNAOPESCRUNAOPNHLPUNAOPNINI
UNAOPNSRCUNAREASRCUNASAVVALUNASETIMG
UNASETTASUNASWISTAUNBPARENUNDEXPNUNDKEY
UNHANDLEDUNIMPLENTUNMTCHPARNUPBNDOPT
USREVNTERRVALNOTADDRVARNESDEPVERIFYICF
VERSIONNUMWATCHSIZEWATNOWCANWATNOWWAT
WATVARGSGONEWATVARGSOVRWATVARNOWGBLWATVARPROT
WATVARPTRWATVARREMAPWATVARSCPWIDTHDIFF
WITHCANWITHNOTCANWITHNOTSETWITHSETWORKSTACMD
WPTTRACEWRITE_FAILEDWRITE_INTO_KERNELWRITE_INTO_KERNEL_STACK
ZERLENDSTZEROINCR
Parameters
keyword
Specifies the message to be displayed.
ABORTED
Message: command aborted by user request Severity: Warning
ABSDATSYN
Message: absolute date-time syntax error Severity: Warning
ACCADDCOM
Message: access violation in address computation for address_value
Severity: Warning
Explanation: The address computation for the specified variable
resulted in an access violation. This normally means that a
register value or a descriptor needed in the address computation
is uninitialized or corrupted.
User Action: If the necessary register or descriptor is not yet
initialized, the variable is not available at this point in the
code. If the register or descriptor is corrupted, the cause of
this error should be located and corrected.
ACTIVATING
Message: process-specification is activating
Severity: Informational
Explanation: The process process-specification has just activated,
and is now connected to the main debugger. Any SET
BREAK/ACTIVATING or SET TRACE/ACTIVATING events will now take
effect.
ADDRANCOV
Message: address range covers more than one module address_value is
in path_name address_value is in path_name
Severity: Warning
Explanation: The address range specified in a debugger
EXAMINE/SOURCE command covers more than a single module. This is
not allowed. The start address CZ is in module mod1 and the end
address yyy is in module mod2.
User Action: Re-enter the command with a valid address range.
ADDRESSMODE
Message: instruction uses illegal or undefined addressing modes Severity: Error
ADDRREG
Message: & not allowed on register variables: operand bound to
register_name
Severity: Warning
ALLOBNDS
Message: must allocate at least 1000 bytes Severity: Warning
AMBFIELD
Message: field_name is an ambiguous field name Severity: Warning
AMBIGQUAL
Message: qualifier qualifier_name is ambiguous Severity: Warning
AMPERSAND
Message: operand of ampersand must be lvalue Severity: Warning
ASTWASDISABLED
Message: ASTs were disabled, are still disabled Severity: Informational
ASTWASENABLED
Message: ASTs were enabled, are still enabled Severity: Informational
ATTACHED
Message: terminal now attached to process process_name Severity: Informational
ATTREQREF
Message: attach request refused
Severity: Error
Explanation: The specified process could not be attached to. Either
it was not detached or it did not belong to the caller's job.
User Action: Ensure that the specified process is detached and
belongs to the caller's job.
BADDESCR
Message: descriptor for 'symbol_name' is bad or is not set up yet Severity: Warning
BADDISCVAL
Message: incorrect value of tag_value in discriminant field
tag_name.
Severity: Informational
BADDST
Message: bad debugger symbol table (compiler error) Severity: Error
BADEVNPAR
Message: parameter does not have permitted data type for this event Severity: Error
BADEXH
Message: the user-mode exit handler list is corrupt
Severity: Error
Explanation: While walking the list of user-mode exit handlers, the
debugger detected a forward link which pointed to an inaccessible
exit control block.
User Action: Check for a call to the SYS$DCLEXH system service that
specifies an illegal exit control block argument. Also verify
that exit control blocks are not getting corrupted later in the
program.
BADFRAME
Message: bad FP or bad saved FP at pointer-addr in call stack, can't
read frame near frame-addr
Severity: Informational
Explanation: The debugger is attempting to chain down the call
stack, following frame pointers. The FP register (if
pointer-addris "FFFFFFFF") or the saved frame pointer at location
pointer-addr points to a frame at least part of which is not read
accessible near location frame-addr.
User Action: Determine what part of your code is writing into the FP
register or overwriting the saved frame pointer on the call stack
(or a preceding saved frame pointer) and correct it. Since the
debugger looks at the call stack to symbolize addresses, you may
suppress some of these messages by typing the command "SET MODE
NOSYMBOLIC".
BADHANDLE
Message: non-existent object handle passed to routine
Severity: Error
Explanation: The debugger uses object handles for passing
information around within itself. The debugger has used a
non-existent or corrupt handle for an operation. The user should
never see this message.
User Action: Submit a Software Performance Report (SPR)
BADOPCODE
Message: opcode opcode_name is unknown
Severity: Error
Explanation: The opcode opcode_name specified as a command parameter
is unknown to the debugger. It may be the case that an opcode
synonym has been specified which is not recognized by the
debugger.
User Action: Specify a valid opcode or specify an opcode synonym
that the debugger recognizes.
BADPARAM
Message: bad parameter value Severity: Error Explanation: This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
BADSCOPE
Message: invalid pathname path_name, SCOPE not changed
Severity: Error
Explanation: The scope path_name specified in the SET SCOPE command
contained a pathname that does not exist.
User Action: Specify a valid scope.
BADSIGARG
Message: bad sigarg pointer at pointer-addr or bad sigarg vector,
can't read sigarg vector near sigarg-addr
Severity: Informational
Explanation: The debugger is attempting to chain down the call
stack, following frame pointers, and has encountered an exception
handler. The signal argument pointer at location
pointer-addrpoints to a signal argument vector at least part of
which is not read accessible near location sigarg-addr.
User Action: Determine what part of your code is overwriting the
stored signal argument pointer on the call stack, or part of the
signal argument vector itself, and correct it. Since the
debugger looks at the call stack to symbolize addresses, you may
suppress some of these messages by typing the command "SET MODE
NOSYMBOLIC".
BADSTACK
Message: stack corrupted - no further data available
Severity: Warning
Explanation: While displaying part of the call stack, the debugger
has determined that the stack is corrupted and cannot continue
executing the command.
User Action: See the secondary message for more information.
BADSTARTPC
Message: cannot access start PC = address_value
Severity: Error
Explanation: Location address_value is not an accessible address and
therefore cannot be executed. This is often caused when a GO
command with no address specification is entered after the
program has terminated. The debugger tries to execute an
instruction at location 0, which is not accessible.
User Action: Specify a different address specification in the GO
command or, if the program has terminated, you can exit from the
debugger and initiate the program with the DCL command RUN.
BADSTATUS
Message: bad status returned from routine-name
Severity: Error
Explanation: The debugger got an unexpected error status from the
system service or RTL routine routine-name.
User Action: Examine the error message and consider if the problem
is related to a lack of quota or otherwise related to your
program's behavior. If so, then take corrective action. If,
after this evaluation, you believe that the problem lies in the
debugger, then submit a Software Performance Report.
BADTAGVAL
Message: incorrect value of tag_value in tag field tag_name. Severity: Informational
BADTARGET
Message: target location protected, cannot perform deposit
Severity: Warning
Explanation: The target address of the DEPOSIT command cannot be
made writeable. The DEPOSIT command cannot be performed.
User Action: None.
BADUSREVNT
Message: bad user-specified event table or event entry in user RTL Severity: Error
BADWATCH
Message: cannot watch protect address address_value
Severity: Error
Explanation: A SET WATCH command specified a protected address.
Note that you cannot place a watchpoint on a dynamically
allocated variable because these variables are stored on the
stack.
User Action: Do not use watchpoint on this address.
BASVARNOTSET
Message: base variable not set up yet Severity: Warning
BITRANGE
Message: bit range out of limits
Severity: Error
Explanation: The EVALUATE command specified a bit field that is too
wide.
User Action: The low limit of the bit field is 0 and the high limit
is 31; the maximum range is 31:0.
BUFFEROVF
Message: buffer overflow Severity: Error Explanation: This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
BWLGISMUS
Message: B, W, L, G, I, or S must precede For operand number
operand_number
Severity: Error
CANTACCESSMAIN
Message: cannot access the main debugger
Severity: Fatal
Explanation: The kernel debugger cannot access the main debugger.
The reason is given in the message following this message.
User Action: Correct the problem given by the messages following
this message. If the problem cannot be solved, submit a Software
Performance Report.
CANTCREATEMAIN
Message: could not create the debugger subprocess
Severity: Fatal
Explanation: An error occurred while trying to create a subprocess
to run the sharable main debugger image. The reason is given in
the message following this message.
User Action: Correct the problem given by the messages following
this message. If the problem cannot be solved, submit a Software
Performance Report.
CANTGETFID
Message: cannot get file-id for image file opened on channel
channel-number
Severity: Fatal
Explanation: An error occurred while trying to get the file-id of
the image file opened on channel channel-number. The reason is
given in the message following this message.
User Action: Correct the problem given by the messages following
this message. If the problem cannot be solved, submit a Software
Performance Report.
CANTINTPRO
Message: cannot interrupt process !AC
Severity: Informational
Explanation: The debugger could not interrupt the specified process
because it was deleted. This message usually indicates that the
specified process terminated abnormally -- either via the DCL
STOP command or via a call to $DELPRC.
CANTOPNIMG
Message: cannot open image image_name (File:
device_name:(file_id,file_id,file_id))
Severity: Informational
CANTPAST
Message: cannot paste to read-only window.
Severity: Warning
Explanation: The window which has the input focus is a read-only
window. You cannot paste to a read-only window.
User Action: Assign the input focus to a writeable window and, if
applicable, to the appropriate text-entry field.
CIREXLST
Message: command aborted after number_of_handlers exit handlers
displayed circular exit handler list suspected
Severity: Error
Explanation: After displaying information about 100 exit handlers,
the debugger suspects a circular exit handler list.
User Action: If there is a circular exit handler list, then identify
and correct the error in the user program.
CLIBRDFAI
Message: clipboard operation failure Severity: Warning Explanation: One of the DECtoolkit clipboard routines has failed.
CLIBRDLCK
Message: clipboard locked
Severity: Warning
Explanation: Some other DECWINDOWS application has locked the
clipboard.
User Action: Wait until the other application has released the
clipboard.
CMDNOTDW
Message: The !AC command is not allowed in the DECWindows debugger
Severity: Error
Explanation: The specified command may not be used with the
DECWindows debugger.
CMDNOTONE
Message: The !AC command is not allowed in the one process debugger
Severity: Error
Explanation: The specified command may not be used with the single
process debugger.
CMDSYNERR
Message: command syntax error at or near 'the
debugger_command_segment'
Severity: Warning
CMPNOTFND
Message: specified component not found in this type Severity: Warning
CONFLICT
Message: illegal combination of command elements - check
documentation
Severity: Warning
Explanation: Command line elements conflict in their operations.
The command will not be performed.
User Action: Do not specify conflicting command line elements.
CONFROMEXC
Message: warning: you are continuing from a severe error Severity: Informational
CONSTRCOMP
Message: illegal deposit to a constrained record component Severity: Error
CPOSTDECR
Message: side effect on post-decrement operation not performed Severity: Informational
CPOSTINCR
Message: side effect on post-increment operation not performed Severity: Informational
CPREDECR
Message: side effect on pre-decrement operation not performed Severity: Informational
CPREINCR
Message: side effect on pre-increment operation not performed Severity: Informational
CRMPSCFAIL
Message: failed to map-in the debugger Symbol Table (DST) Severity: Informational
CVTNEGUNS
Message: cannot convert negative value to unsigned value at or near
opcode_name
Severity: Warning
DBGERR
Message: internal debugger coding error.
Severity: Error
Explanation: An internal debugger error has been encountered.
User Action: If the error is reproducible, submit a Software
Performance Report and, if possible, enclose both a copy of the
program being debugged and a logged debugging session that
reproduces the error.
DBGSTOPPED
Message: a debugger process from a previous debugging session has
been terminated
Severity: Warning
Explanation: While attempting to create a process to run the
debugger, a debug process from a previous debugging session was
found and terminated.
User Action: Under normal circumstances, the debugger process will
exit when a debugging session ends via the EXIT or QUIT commands.
If the previous debugging session was terminated with an EXIT or
QUIT command and this error is reproducable, then submit a
Software Performance Report (SPR)
DECLARERR
Message: too many declarations, parameter_name ignored Severity: Warning
DECOVF
Message: decimal overflow at or near opcode_name Severity: Error
DECROPRAND
Message: illegal packed or decimal string value (Reserved Operand
fault occurred during conversion)
Severity: Error
DEFKEY
Message: state_name key key_name has been defined Severity: Informational
DEFKEYERR
Message: error in processing DEFINE/KEY command: Severity: Warning
DELBREAK
Message: deleting breakpoint at address_value Severity: Informational
DELKEY
Message: state_name key key_name has been deleted Severity: Informational
DELKEYERR
Message: error in processing DELETE/KEY command: Severity: Warning
DELTIMTOO
Message: delta time too large Severity: Error
DELTRACE
Message: deleting tracepoint at address_value Severity: Informational
DESCNOTSET
Message: descriptor not set up yet Severity: Warning
DISABLEAST
Message: ASTs were enabled, are now disabled Severity: Informational
DISNAMREQ
Message: display name required with this command Severity: Error Explanation: user did not specify a display name with this command User Action: enter a display name with this command
DISNOTSEL
Message: display not selected because removed from screen Severity: Error
DISPEXISTS
Message: display_name display already exists; cannot be set until
canceled
Severity: Error
DISPRLENSIZ
Message: length of display_name display cannot exceed maximum size
increase /SIZE or specify fewer lines
Severity: Error
DIVBYZERO
Message: attempted to divide by zero Severity: Error
DSTERRG
Message: error in DST (compiler error). GOTO DST has been ignored Severity: Informational
DSTNESDEP
Message: DST nesting depth too deep in module path_name
Severity: Error
Explanation: Symbol table nesting depth is too deep in the specified
module. This occurs if routine nesting or data record nesting is
very deep in the user program.
User Action: Simplify the user program and run again.
DWERR
Message: a DECwindows toolkit error has occurred the message text is
'!AS'
Severity: Informational
Explanation: An error has been reported by the DECwindows toolkit.
This indicates that either the toolkit or the X server has
detected a problem with the debuggers DECwindows display(s).
User Action: Try to correct the problem specified in the message.
For further information or assistance on this problem, contact
your System Manager.
DWNOT1PROC
Message: the 1 process debugger cannot be run in DECwindows mode
Severity: Warning
Explanation: The debugger must have ASTs enabled at all times in
order to properly run as a DECwindows program. This is not
possible for a 1 process debugger. Therefore, the debugger is
defaulting to not run as a DECwindows debugger.
User Action: Correct the logical name assignment for DBG$PROCESS to
be either "MULTIPROCESS" or "DEFAULT", and try again.
DYNIMGSET
Message: setting image image_name Severity: Informational
DYNMODSET
Message: setting module path_name Severity: Informational
EDITDISVER
Message: the original version is file_specification Severity: Informational
EDITERROR
Message: error while trying to EDIT Severity: Informational
EDITFILE
Message: editing file file_specification Severity: Informational
EDITNOFILE
Message: no source file to use for editing Severity: Informational
EDITREVVER
Message: editing a revised version of the original source file Severity: Informational
ENABLEAST
Message: ASTs were disabled, are now enabled Severity: Informational
ENTRYMASK
Message: entry mask has non-zero value in bits 12:13 Severity: Informational
ENUMRANGE
Message: enumeration value out of range Severity: Informational
ERRACTIMG
Message: unable to activate image
Severity: Informational
Explanation: A bad status was returned from LIB$FIND_IMAGE_SYMBOL.
This message should be issued in the $DBG_INFO context.
User Action: The image the debugger was trying to activate could not
be activated. The following error should help to resolve the
problem.
ERRASSIGN
Message: the attempt to acquire an I/O channel for the debugger
failed
Severity: Informational
Explanation: A bad status was returned from a $ASSIGN type of call.
This message should be issued in the $DBG_INFO context.
User Action: The debugger needs to acquire I/O channels to do I/O.
In this case the debugger failed to acquire such a channel.
Check your process quotas.
ERRCLSFILE
Message: unable to close file
Severity: Informational
Explanation: A bad status was returned from a call to close a file.
This message should be issued in the $DBG_INFO context.
User Action: The debugger failed to close a file. Unless the reason
for this is apparent, submit a Software Performance Report (SPR).
ERRCRELNM
Message: unable to create a logical name
Severity: Informational
Explanation: The debugger creates logical names for input and output
redirection. This message should be issued in the $DBG_INFO
context.
User Action: Submit a Software Performance Report (SPR).
ERRDEASSIGN
Message: attempt to deassign an I/O channel acquired by the debugger
failed
Severity: Informational
Explanation: The debugger wanted to deassign an I/O channel that is
acquired for internal purposes. This error notes the failure of
the SYS$DASSGN system service, probably due to an invalid
channel.
User Action: Submit a Software Performance Report (SPR).
ERRFAO
Message: unable to format output string Severity: Informational Explanation: An error was returned from a call to $FAO. User Action: Submit a Software Performance Report (SPR).
ERRGETDVI
Message: unable to get device information
Severity: Informational
Explanation: The debugger needed some information from $GETDVI and
the call failed. This indicates a programming error. No doubt
bad parameters were passed in.
User Action: Submit a Software Performance Report (SPR).
ERRGETEF
Message: attempt to allocate an event flag failed
Severity: Informational
Explanation: The debugger wanted to allocate a local event flag for
it's own use. For some reason the routine called to allocate the
event flag failed. This message is usually issued in the
$DBG_INFO context.
User Action: The debugger needs event flags to operate. Check the
program being debugged for excessive allocation of event flags.
ERRINSDEC
Message: error occurred while decoding instruction at current PC Severity: Informational
ERRINSIGNAL
Message: signal arguments were incorrect, signal cannot be decoded
Severity: Warning
Explanation: The arguments which were passed as part of the signal
in your program were incorrect. The debugger encountered an
error in trying to analyze the signal arguments. The error is
shown in the message following this message.
User Action: Analyze the arguments passed to LIB$SIGNAL by your
program, and correct the error.
ERRINVEDIT
Message: error invoking editor
Severity: Informational
Explanation: While trying to invoke an editor a bad status was
returned.
User Action: Is the requested editor available and working properly.
If so, submit a Software Performance Report (SPR).
ERROR
Message: internal debugger error detected
Severity: Error
Explanation: This message indicates an internal debugger error.
User Action: Correct the problem given by the messages following
this message. If the problem cannot be solved, submit a Software
Performance Report.
ERRORLIMIT
Message: Error limit = error-limit, dumping terminated
Severity: Fatal
Explanation: The error limit specified for the DST dump was
exceeded; the dumper was unable to continue processing the input
file. By default, the error limit is set at 5. Use the
/ERROR_LIMIT qualifier to change the value.
ERROR_BLOCK
Message: error handle signalled, address = address
Severity: Error
Explanation: The debugger signalled an error handle. This should
never happen. The error handles are an internal construct which
are used to obtain information within the debugger. They should
never appear in user-visible messages.
User Action: Submit a Software Performance Report (SPR)
ERRQIOW
Message: error from $QIOW Severity: Informational Explanation: A bad status was returned from a call to $QIOW. User Action: Submit a Software Performance Report (SPR).
ERRSMG
Message: error returned from a call to the Screen Management
Facility (SMG)
Severity: Informational
Explanation: A bad status was returned from a call to SMG. This
could be a result of any number of things which may or may not be
a debugger problem.
User Action: Check the user program for potential interactions
between it and the debugger; pasteboard sharing and the like.
Also, check the set up of the terminal which might cause SMG some
problem. If the error still can't be explained submit a Software
Performance Report (SPR).
ERRSYSSERV
Message: error returned from an internal debugger system service
call
Severity: Informational
Explanation: A bad status was returned from a call to a system
service. This message is to be in the context of the $DBG_INFO
macro which will list the particular system service.
User Action: Submit a Software Performance Report (SPR).
ERRUSREVNT
Message: error in user-specified event Severity: Error
EXARANGE
Message: invalid range of addresses Severity: Error
EXCBREREP
Message: exception breakpoint replaced
Severity: Informational
Explanation: A SET BREAK/EXCEPTION was done when exception breaks
were already in effect. The old exception break was replaced
with the new one.
EXCDURCAL
Message: error occurred while executing routine called from
exception break
Severity: Error
Explanation: While executing a routine called from an exception
break using the CALL command, an exception occurred. Any
exceptions from routines called from an exception break cause
this message to be displayed followed by the text of the
exception. Execution of the called routine is then terminated.
User Action: Either correct the CALL command if it was in error, or
correct the routine that caused the exception. To use the
debugger to help find the cause of the exception, try calling the
routine while not at an exception break.
EXITARG
Message: exitloop argument num_levels is too large Severity: Warning
EXITERR
Message: an error occurred while trying to exit the program
Severity: Error
Explanation: An error status was returned from the call to the
debugger-kernel service that terminates program execution.
Depending on the severity of the error, the program may or may
not have terminated.
User Action: Examine the error message after this message and
consider if the problem is related to a lack of quota or
otherwise related to your program's behavior. If so, then take
corrective action. If, after this evaluation, you believe that
the problem lies in the debugger, then submit a Software
Performance Report.
EXITSTATUS
Message: is 'status_value' Severity: Informational Explanation: The program has exited with the status status_value. User Action: None.
EXPMEMPOOL
Message: expanding debugger memory pool
Severity: Informational
Explanation: The debugger kernel maintains a memory pool from which
it allocates data structures to keep track of breakpoints,
tracepoints, watchpoints, and so on. The initial size of the
memory pool is 256 pages. The memory pool is expanded
automatically when needed, and this informational is signaled
when memory pool expansion occurs. If you have set a large
number of breakpoints, tracepoints, or watchpoints, this message
is to be expected.
User Action: If this message appears for no evident reason (i.e.,
you have not set a large number of breakpoints, tracepoints, or
watchpoints), there may be something wrong with the debugger. In
this case, submit an SPR.
FILEUNAL
Message: file not available Severity: Warning
FLTOVF
Message: floating overflow at or near opcode_name Severity: Error
GETJPI
Message: GETJPI system service failed, unable to attach Severity: Error
HEIGHTDIFF
Message: desired height of specified_height is not allowed, height
is set to actual_height
Severity: Informational
IDENTLONG
Message: identifier too long, please shorten Severity: Error
IFIXUND
Message: precision lost during fixed point operation Severity: Informational
IFLTUND
Message: floating underflow at or near opcode_name Severity: Informational
IINTOVF
Message: integer overflow at or near opcode_name Severity: Informational
ILLADDCON
Message: illegal constant constant_name in address expression Severity: Warning
ILLASTER
Message: subscript range ('*') not permitted here (must be at lowest
level of data structure)
Severity: Warning
ILLDEFNAM
Message: illegal name for DEFINE: defined_name Severity: Warning
ILLENUMVAL
Message: enumeration value out of legal range Severity: Warning
ILLEVNSTR
Message: Attempt to pass an illegal event structure, name =
structure-name
Severity: Fatal
Explanation: This message indicates an internal debugger error.
User Action: Submit an SPR.
ILLFILPTR
Message: file variable points to invalid file descriptor Severity: Warning
ILLFLOAT
Message: float_value is an illegal floating point value Severity: Warning
ILLLENGTH
Message: illegal length field length_value in structure reference Severity: Warning
ILLOFFSET
Message: bit or byte offset value larger than 64K not supported,
value given is offset_value
Severity: Warning
ILLPACSIZ
Message: illegal packed size size_value; must be 0..31 Severity: Warning
ILLPATH1
Message: illegal use of %SOURCE_SCOPE (must not be combined with
invocation numbers)
Severity: Warning
ILLPATH2
Message: illegal use of %SOURCE_SCOPE (must appear at the start of
the pathname)
Severity: Warning
ILLPATHELEM
Message: illegal pathname element at path_name Severity: Error
ILLPOSFLD
Message: position field value position_value is too large Severity: Warning
ILLQUALIF
Message: illegal or unsupported qualifier on SPAWN command Severity: Warning
ILLRANGE
Message: subscript range not permitted here (must be at lowest level
of data structure)
Severity: Warning
ILLSETCON
Message: illegal set constant in expression Severity: Warning
ILLSIGEXT
Message: illegal sign extension field value extension_value
Severity: Warning
Explanation: An illegal value has been entered for the sign
extension field in a field reference.
User Action: Re-enter the command using a valid sign extension field
value.
ILLSIZFLD
Message: illegal size field size_value; must be 0..32 Severity: Warning
ILLSUBLEN
Message: substring length larger than 32K not supported Severity: Warning
ILLSUBSTR
Message: can only apply substring operation to string data types Severity: Warning
ILLTYPE
Message: illegal type of operand(s)
Severity: Warning
Explanation: The type of the operand is illegal for the operator
specified.
User Action: Change the operand.
INCDSTNES
Message: incorrect DST nesting in module path_name, compiler error
Severity: Error
Explanation: Incorrect symbol table nesting occurred, such as
improper routine or data record nesting in the specified module.
This message normally indicates a compiler error.
User Action: Submit a Software Performance Report.
INCOMPOPR
Message: operand number operand_number incomplete Severity: Error
INCOMPPTR
Message: pointers of different size, cannot perform subtraction Severity: Warning
INCOMQUAL
Message: qualifier qualifier_name is not compatible with
qualifier_name(s)
Severity: Warning
Explanation: Qualifiers specified with the command conflict in their
operations.
User Action: Specify non-conflicting qualifiers.
INCOMTARGET
Message: a debugger_type kernel debugger is incompatible with a
debugger_type main debugger
Severity: Error
Explanation: A kernel debugger attempted to connect to a main
debugger with which it is not compatible.
User Action: Make sure that the logical names used to point at the
sharable and non_sharable debugger images are defined to point to
the same type of debuggers.
INCOMVERSION
Message: the RPC versions of the main and kernel debuggers are
incompatible
Severity: Error
Explanation: A kernel debugger attempted to connect to a main
debugger with which it is not compatible.
User Action: Make sure that the logical names used to point at the
sharable and non_sharable debugger images are defined to point to
the same type of debuggers.
INDBASEQL
Message: index and base registers are equal for operand number
operand_number
Severity: Error
INITERR
Message: an error has occurred during debugger initialization,
unable to continue this session.
Severity: Fatal
Explanation: The debugger encountered an error during initialization
which does not allow this debugging session to proceed.
User Action: Use the message which preceded this message to analyze
and correct the error, and try again.
INITIAL
Message: language is language_name, module set to path_name
Severity: Informational
Explanation: This message is displayed when the debugger is invoked
by the image activator. The language is set to language_name,
and the module to path_name. Module path_name is the first
module specified in the LINK command, and language language_name
is the language used in that module.
User Action: None.
INPREADERR
Message: error reading input line: Severity: Warning
INSVIRMEM
Message: insufficient virtual memory for the debugger memory pool Severity: Informational
INTERR
Message: internal debugger error in debugger_routine_name
Severity: Error
Explanation: An internal debugger error has been encountered.
User Action: If the error is reproducible, submit a Software
Performance Report and, if possible, enclose both a copy of the
program being debugged and a logged debugging session that
reproduces the error.
INTERRUPTED
Message: process interrupted via cross-process signal
Severity: Fatal
Explanation: This signal is delivered asyncronously to a process to
cause the debugger to be invoked in that process.
User Action: Submit an SPR. This message is handled internally, and
should never be signaled to the user.
INTMEMERR
Message: internal memory-pool error
Severity: Fatal
Explanation: The debugger's internal memory area has been corrupted
or is inconsistent. This can be caused by an internal debugger
error or by random stores by the user program.
User Action: Correct the user program or submit a Software
Performance Report.
INTOVF
Message: integer overflow at or near opcode_name Severity: Error
INUMTRUNC
Message: number truncated at or near opcode_name Severity: Informational
INVADDRTKN
Message: - invalid token for address calculation
Severity: Informational
Explanation: This message appears as additional information with the
INVDSTREC error message. The address specification contains an
invalid token for calculating an address. This is a compiler
error.
INVARGLIS
Message: invalid argument list for 'the debugger_command_segment' Severity: Warning
INVARRDIM
Message: array dimension is out of range Severity: Warning
INVARRDSC
Message: invalid array descriptor
Severity: Error
Explanation: An array descriptor in the image does not have the
correct format. This can be caused by a reference to a VAX BASIC
array when the first line of the program has not been executed.
The array is not set up correctly until the BASIC program
initialization is done. This message can also be caused by a
user program or DEPOSIT commands altering a compiler generated
array descriptor.
User Action: If the reference is to a VAX BASIC array, enter a STEP
or GO command to ensure that the BASIC program initialization is
done and then repeat the reference. Otherwise, if an array
descriptor has not been altered, submit a Software Performance
Report.
INVAVSCODE
Message: - address or value token code avs_code is invalid, ignoring
Severity: Informational
Explanation: This message appears as additional information with the
INVDSTREC error message. The address or value specification
contains an invalid token code. This is a compiler error.
INVCHAR
Message: invalid character Severity: Error
INVCHRCON
Message: invalid character constant in expression Severity: Error
INVDESC
Message: invalid string descriptor Severity: Error Explanation: This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
INVDIGBIN
Message: invalid digit in binary number: number_value Severity: Error
INVDIGDEC
Message: invalid digit in decimal number: number_value Severity: Error
INVDIGHEX
Message: invalid digit in hexadecimal number: number_value Severity: Error
INVDIGOCT
Message: invalid digit in octal number: number_value Severity: Error
INVDIRNAM
Message: invalid directory name: file_specification
Severity: Error
Explanation: The directory name 'file_specification' given in a
DEBUGGER command SET SOURCE is not valid. Either the directory
syntax is incorrect or the directory does not exist.
User Action: Ensure that the directory exists and that the syntax is
correct.
INVDMTPTR
Message: invalid DMT pointer; internal linker or debugger error Severity: Informational
INVDSPSIZ
Message: invalid display size: display_size Severity: Error
INVDSTREC
Message: invalid DST record Severity: Error
INVDSTTYPCODE
Message: - DST type code type_code is invalid
Severity: Informational
Explanation: This message appears as additional information with the
INVDSTREC error message. The DST contains an invalid DST type
code. This is a compiler error.
INVEXPR
Message: invalid expression for operand number operand_number Severity: Error
INVFIXDST
Message: invalid DST fixup records in image image_name, symbol
references to shareable images may be erroneous
Severity: Informational
Explanation: While attempting to read the symbol table information
in the specified image, the debugger found errors in the symbol
table address fixup records. These records are used to adjust
for the base addresses of shareable images. This means that any
symbols in this image which point to addresses in other
(shareable) images will most likely be incorrect. Symbols which
refer to addresses in this image will be correct unless this is
also a shareable image.
User Action: Relink the image and, if the error is reproducible,
submit a Software Performance Report explaining how the image
file was created.
INVFLDREF
Message: invalid field reference; too many or few parameters Severity: Warning
INVGSTREC
Message: invalid GST record Severity: Error
INVGSTTYP
Message: invalid GST record; GST is partially built Severity: Informational
INVINDIRECT
Message: - indirect offset offset is invalid
Severity: Informational
Explanation: This message appears as additional information with the
INVDSTREC error message. The DST contains an indirect
specification which does not point to an existing DST. This is a
compiler error.
INVLANGCODE
Message: - language code lang_code is invalid, language code UNKNOWN
being substituted
Severity: Informational
Explanation: This message appears as additional information with the
INVDSTREC error message. The DST contains an invalid language
code. The UNKNOWN language code will be used. This is a
compiler error.
INVLENGTH
Message: - invalid DST record length of bad_length, should be
good_length
Severity: Informational
Explanation: This message appears as additional information with the
INVDSTREC error message. The length specified in the DST record
was incorrect. This is a compiler error.
INVMAR
Message: right margin must be greater than left
Severity: Warning
Explanation: You specified a right margin that was less than the
left margin in the debugger command SET MARGIN. The right margin
must be greater than the left margin.
User Action: Re-enter the command specifying a valid margin range.
INVNOSPECTKN
Message: - invalid token for no address or value spec
Severity: Informational
Explanation: This message appears as additional information with the
INVDSTREC error message. The "no address" or "no value"
specification contains an invalid token. Only the terminate
token is valid after this type of token. This is a compiler
error.
INVNUMBER
Message: invalid numeric string 'number_value' Severity: Error
INVNUMSRC
Message: invalid number of source files
Severity: Warning
Explanation: An invalid number of source files was specified on the
SET MAX_SOURCE_FILES command. The maximum number of source files
that the debugger will keep open simultaneously must be in the
range of 1 through 20.
User Action: Re-enter the command specifying a valid number within
the range.
INVNUMSTR
Message: invalid numeric string at or near 'number_value' Severity: Error
INVOPADDR
Message: invalid operator 'operator_symbol' in address expression Severity: Error
INVOPSYM
Message: invalid operator symbol 'operator_symbol' in expression Severity: Error
INVPAGE
Message: invalid screen height, value must be between minimum_height
and maximum_height
Severity: Error
INVPRCSYN
Message: process specification syntax error
Severity: Error
Explanation: The specified process specification is syntactically
invalid
User Action: Re-enter the command specifying a correct process
specification
INVPRIOR
Message: invalid task priority value specified Severity: Error
INVRANSPEC
Message: invalid range specification in array subscript Severity: Warning
INVSELDIS
Message: invalid selection of display_name display; wrong display
kind
Severity: Error
INVSRCLIN
Message: invalid source line range
Severity: Warning
Explanation: An invalid source line range was entered in the
debugger TYPE command. The first line number of the range must
be non-negative and less than or equal to the second number in
the range.
User Action: Re-enter the command specifying a valid line number
range.
INVTIMSLI
Message: time slice was not set, parameter is out of range of Ada
type DURATION
Severity: Error
INVTSCODE
Message: - type spec type code ts_code is invalid, ignoring
Severity: Informational
Explanation: This message appears as additional information with the
INVDSTREC error message. The type specification contains an
invalid type code. This is a compiler error.
INVVALTKN
Message: - invalid token for value calculation
Severity: Informational
Explanation: This message appears as additional information with the
INVDSTREC error message. The value specification contains an
invalid token for calculating a value. This is a compiler error.
INVWIDTH
Message: invalid screen width, value must be between minimum_width
and maximum_width
Severity: Error
INVWINPAR
Message: invalid window parameter: number_value Severity: Error
IRFAOVF
Message: record file address overflow at or near opcode_name Severity: Informational
ISTRTRU
Message: string truncated at or near opcode_name Severity: Informational
ITMNOTAVA
Message: item not available
Severity: Warning
Explanation: The user should never see this message. The debugger
uses an item list construct for passing information between its
parts. This message indicates that the requesting routine
requested data which the target routine was not capable of
providing. Appearance of this message indicates an internal
problem in the debugger.
User Action: Submit a Software Performance Report (SPR)
ITMTRUNC
Message: item truncated - buffer of insufficient size
Severity: Warning
Explanation: The user should never see this message. The debugger
uses an item list construct for passing information between its
parts. This message indicates that the requesting routine
allocated a buffer which was too small for the requested data.
Appearance of this message indicates an internal problem in the
debugger.
User Action: Submit a Software Performance Report (SPR)
IVALOUTBNDS
Message: value assigned is out of bounds at or near opcode_name Severity: Informational
IVPRCLOG
Message: logical name DBG$PROCESS must be either MULTIPROCESS or
DEFAULT
Severity: Fatal
Explanation: The logical name DBG$PROCESS translates to something
other than "MULTIPROCESS" or "DEFAULT".
User Action: Correct the logical name assignment for DBG$PROCESS and
try again.
KERFUNCNYI
Message: Kernel Function function_name not yet implemented on this
architecture
Severity: Error
Explanation: This message indicates an internal debugger error.
User Action: Submit a Software Performance Report.
KEYNAMERR
Message: unrecognized key name: key_name
Severity: Error
Explanation: This keyname <key_name, !AS> is in error. It can not
be defined by the user.
User Action: Check spelling of the key name.
KEYSTATERR
Message: unrecognized state name: state_name
Severity: Error
Explanation: This key state <state_name, !AS> is in error. It has
not been defined by the user.
User Action: Check spelling of the state name or define the state.
LASTCHANCE
Message: stack exception handlers lost, re-initializing stack
Severity: Error
Explanation: The user's program contained an error that caused the
exception handling mechanism to fail. This error occurs when the
stack is overwritten by the user program or by deposit commands.
User Action: Identify and correct the error in the user program.
LINEINFO
Message: line-description Severity: Error
LOGFILEIS
Message: the error log is in file file_specification
Severity: Informational
Explanation: An internal debugger error has occurred, and
information which will be useful in locating the error has been
written to file_specification.
User Action: If the error is reproducible, submit a Software
Performance Report and, if possible, enclose both a copy of the
program being debugged and a logged debugging session that
reproduces the error.
LONGSTRING
Message: strings longer than 2**16 characters not supported Severity: Warning
LOOPINCR
Message: loop increment cannot be zero Severity: Warning
LOOPVAR
Message: loop var loop_variable has been redefined; exiting for loop Severity: Informational
LOWBNDOPT
Message: lower bound of subrange was optimized away Severity: Informational
MATQUOMIS
Message: matching quote is missing
Severity: Warning
Explanation: The matching quote at the end of a quoted string is
missing.
User Action: Correct the error and re-enter the command.
MAXSTRLEN
Message: maximum allowed length is string_length in an
EXAMINE/ASCII:n command
Severity: Warning
MISCLOSUB
Message: missing closing subscript parenthesis Severity: Warning
MISINVNUM
Message: misplaced invocation number in path_name
Severity: Warning
Explanation: The invocation number was not placed after the
innermost (rightmost) routine name in the specified pathname.
User Action: Correct the pathname and re-enter the command.
MISINVOPER
Message: missing or invalid operator at 'operator_symbol' Severity: Error
MISMODBEG
Message: missing Module-Begin record in DST (compiler error)
Severity: Informational
Explanation: An expected Module-Begin record was not found in the
debugger Symbol Table. This indicates a probable error in the
compiler output.
User Action: Submit a Software Performance Report.
MISMODEND
Message: missing Module-End in DST for path_name (compiler error)
Severity: Informational
Explanation: An expected Module-End record was not found in the
debugger Symbol Table. This indicates a probable error in the
compiler output.
User Action: Submit a Software Performance Report.
MISOPEMIS
Message: misplaced operator or missing operand at 'operator_symbol' Severity: Error
MODUSCOPE
Message: a module name was expected; path_name not valid Severity: Warning
MPARENREQ
Message: parenthesis required around process list in debug_command
Severity: Warning
Explanation: Parentheses must be placed around the process list for
debugger commands SET/PROCESS=(process-list) or
DO/PROCESS=(process-list).
User Action: Place parentheses around the process list in the
command.
MPCOMMAND
Message: command is only valid when multiprocess support is enabled
Severity: Error
Explanation: The debugger was unable to execute the specified
command since it is only valid when the debugger's multiprocess
support is enabled.
User Action: Restart the debugging session with multiprocess support
enabled. Multiprocess support is enabled by defining the logical
name DBG$PROCESS as follows: ($ DEFINE/JOB DBG$PROCESS
MULTIPROCESS)
NAMSTRMIS
Message: name string missing or invalid in %NAME construct Severity: Error
NAMTOOLONG
Message: name is too long: 'symbol_name' Severity: Error
NEEDMORE
Message: unexpected end of command line
Severity: Warning
Explanation: The command entered was not complete. A required part
of the command was omitted.
User Action: Re-enter the complete command.
NEEDPAREN
Message: parenthesis required in THEN, ELSE, and DO clauses Severity: Informational
NOACCESSR
Message: no read access to virtual address address_value Severity: Error
NOACCESSW
Message: no write access to virtual address address_value
Severity: Error
Explanation: A DEPOSIT, SET BREAK, or SET TRACE command specified
the address address_value. The debugger does not have write
access to that page. The debugger requires write access in order
to be able to set up breakpoints and tracepoints.
User Action: None. You cannot do the requested operation without
proper access.
NOADDRREG
Message: register register_name does not have an address use
@register_name to obtain the contents of register register_name
Severity: Warning
NOALTERSP
Message: deposit into register 14 (stack pointer) not allowed Severity: Informational
NOATTACH
Message: attach command failed Severity: Error
NOBREAGGR
Message: breakpoints or tracepoints on registers, records or arrays
are not allowed
Severity: Error
NOBREAKAT
Message: cannot set breakpoint or tracepoint at address
address_value
Severity: Warning
NOBREAKS
Message: no breakpoints are set
Severity: Informational
Explanation: The SHOW BREAK command was entered and no breakpoints
were set.
User Action: None.
NOCALLS
Message: no active call frames Severity: Error
NOCANMAIN
Message: cannot cancel main image Severity: Warning
NOCLI
Message: no CLI present to perform function
Severity: Error
Explanation: There is no command line interpreter in the target
process from which to perform the operation.
User Action: None. You cannot perform the attempted operation.
NOCONNECT
Message: CONNECT command failed
Severity: Error
Explanation: The debugger was unable to execute the connect command.
The reason is given in the message following this message.
User Action: Correct the problem given by the messages following
this message. Most often, the problem is due to specifying a
process that does not exist, or specifying a process that is not
in the same VMS job as the process being debugged. If the
problem cannot be solved, submit a Software Performance Report.
NOCURLOC
Message: current location not defined
Warning '.' is not currently defined.
User Action: Do not reference '.' until an EXAMINE or
EVALUATE/ADDRESS command has been performed.
NODEFSCPE
Message: No default scope list: error performing !AC
Severity: Error
Explanation: The specified command or built-in symbol requires that
the default scope list be established.
User Action: To establish the default scope list, perform a CANCEL
SCOPE command.
NODELIMTR
Message: missing or invalid instruction operand delimiter
Severity: Error
Explanation: A DEPOSIT command specified an invalid instruction
operand format.
User Action: Re-enter the command with valid operands.
NODEPDEBUG
Message: DEPOSIT into the debugger's address space is not allowed Severity: Warning
NODIRLISM
Message: no source directory list in effect for path_name
Severity: Warning
Explanation: The debugger command CANCEL SOURCE/MODULE=path_name
failed because there is no source directory search list in effect
for module path_name.
User Action: This is an informational message. However, if the
wrong module was specified, the command should be re-entered with
the correct name.
NODIRLIST
Message: no source directory list in effect
Severity: Warning
Explanation: The debugger command CANCEL SOURCE had no effect
because no source directory search list is currently in effect.
User Action: None. This message is informational.
NOELABBODY
Message: package body path_name has no executable code Severity: Warning
NOELABSPEC
Message: package spec path_name has no executable code Severity: Warning
NOEND
Message: string beginning with 'string_value' is missing end
delimiter delimiter_character
Severity: Error
Explanation: A DEPOSIT command specified an ASCII string or
INSTRUCTION string beginning with characters string_value that do
not have a terminating apostrophe.
User Action: Re-enter the command with characters containing a
terminating apostrophe.
NOEPTSPEC
Message: no eventpoints were specified with a SHOW or CANCEL
command.
Severity: Error
Explanation: Eventpoints were not given with a SHOW or CANCEL
command.
User Action: Try the command again, specifying eventpoints to
operate on.
NOEVALEXPR
Message: unable to evaluate expression for following reason Severity: Informational
NOEVENTFAC
Message: /EVENT qualifier not allowed: first type 'SET EVENT
facility' to specify an event facility
Severity: Error
NOEXCBRE
Message: no exception breaks were set
Severity: Informational
Explanation: A CANCEL BREAK/EXCEPTION command was entered when
exception breaks were not in effect. The CANCEL BREAK/EXCEPTION
command had no effect.
NOEXHND
Message: no exit handlers are declared Severity: Informational
NOFIELD
Message: 'field_name' is not a field in this record
Severity: Warning
Explanation: An attempt was made to reference a field that is not
defined in the record.
User Action: Check the field specified to ensure that it is defined
in the record.
NOFREE
Message: no free storage available Severity: Error
NOGLOBALS
Message: some or all global symbols not accessible
Severity: Informational
Explanation: The image was linked with the /NODEBUG qualifier, and
there are no global symbols in the symbol table.
User Action: Relink the image with the /DEBUG qualifier.
NOINPAVAIL
Message: input objects not available
Severity: Fatal
Explanation: The debugger was unable to open either DBG$INPUT or
SYS$INPUT.
User Action: Check that logicals used to point at input files or
devices are properly defined.
NOINPFOC
Message: debugger must have input focus to accept paste operation
Severity: Warning
Explanation: A writeable debugger window and, if applicable, a
text-entry field in that window must have the input focus before
the selection can be pasted to it from the clipboard.
User Action: Assign the input focus to a writeable window and, if
applicable, to the appropriate text-entry field.
NOINSTRAN
Message: cannot translate opcode at location address_value
Severity: Error
Explanation: The address specified in the EXAMINE command is not the
beginning of a valid instruction. This can be caused by
specifying an address that is in the middle of an instruction or
by an address that is in a data area.
User Action: Specify an address that contains a valid instruction.
NOKEYDEF
Message: cannot do keypad input, mode is set to NOKEYPAD Severity: Warning
NOKEYPAD
Message: unable to set up keypad definitions Severity: Informational
NOLASTVAL
Message: last value is not defined
Warning '\' is not currently defined.
User Action: Do not reference '\' until a DEPOSIT or EVALUATE
command has been performed.
NOLINXXX
Message: line_descriptor
Severity: Warning
Explanation: The line number range CZ:yyy specified on the DEBUGGER
command TYPE does not exist. There are no such line numbers in
the specified module (or the default module).
User Action: Re-enter the command specifying line numbers that do
exist.
NOLIST
Message: list of parameter values not allowed - check use of comma
(,)
Severity: Error
Explanation: A command that only accepts a single input value for a
parameter contains multiple values separated by commas (,).
User Action: Re-enter the command; specify one value. If necessary,
issue the command once for each value.
NOLOCALS
Message: image does not contain local symbols
Severity: Informational
Explanation: All the modules in the image were compiled or assembled
without traceback information. There is no local symbol
information in the image.
User Action: Recompile or reassemble the modules using the /DEBUG
qualifier and then relink them.
NOMARKCHNG
Message: [NO]MARK_CHANGE qualifier not applicable to display_name
display
Severity: Informational
NOMATCH
Message: no matches Severity: Warning
NOMORE
Message: wildcard request complete
Warning
User Action: This is a debugger internal error code. If the
debugger reports this error, then submit a Software Performance
Report.
NONEXPR
Message: nonexistent process
Severity: Error
Explanation: A process name or process identification specified in a
command is not valid.
User Action: Verify that the process name or identification is
correct and that the process was not already deleted. Also
verify that you have the required privilege to access the
process.
NONEXPRC
Message: process process-specification does not exist
Severity: Error
Explanation: The process-specification was not valid or the
specified process did not exist.
User Action: Verify that the process specification is correct and
that the process still exists and then re-enter the command.
NONUMSCOPE
Message: scope does not exist or is not in set module: scope_number Severity: Informational
NONXTLIN
Message: next line for source display not defined
Severity: Warning
Explanation: The debugger command TYPE or SEARCH was entered without
specifying a line number (for example, the next line after the
last source line printed should be used). But no next source
line is currently defined.
User Action: Re-enter the command explicitly specifying the desired
line number.
NOOCCLDISP
Message: display_name display may not be occluded Severity: Informational
NOOUTAVAIL
Message: output objects are not available
Severity: Fatal
Explanation: The debugger was unable to open either DBG$OUTPUT or
SYS$OUTPUT.
User Action: Check that logicals used to point at output files or
devices are properly defined.
NOPACKMEMBODY
Message: 'symbol_name' is not a member of package body path_name Severity: Warning
NOPACKMEMSPEC
Message: 'symbol_name' is not a member of package spec path_name Severity: Warning
NOPRED
Message: logical predecessor not defined
Severity: Warning
Explanation: The logical predecessor of the identifier or
instruction referenced is not defined.
User Action: None. This message is informational.
NOPROMPT
Message: cannot delete, remove, unselect, or change kind of the
display_name display
Severity: Informational
NORECSYM
Message: recursive symbol_type symbol definition encountered at or
near 'debugger_command_segment'
Severity: Error
Explanation: While attempting to expand a defined symbol, a
recursive symbol definition was encountered.
User Action: Redefine the symbol specified in the error message so
that it does not contain any circular dependencies and then
re-enter the command.
NORMAL
Message: successful debugger status Severity: Success
NORSTBLD
Message: cannot build symbol table
Severity: Error
Explanation: The debugger is unable to build a symbol table because
of errors in the format of the image file.
User Action: Relink the image and, if the error is reproducible,
submit a Software Performance Report explaining how the image
file was created.
NOSAVPROG
Message: cannot save a program I/O display Severity: Informational
NOSCOPE
Message: no scope exists to look up line line_number
Severity: Error
Explanation: The specified line_number cannot be found because there
is no current scope to look it up in.
User Action: Specify the module explicitly and retry the operation.
NOSCOPELIST
Message: a list of scopes is not allowed with this command.
Severity: Error
Explanation: You cannot enter a list of scopes with the previously
executed command.
User Action: Enter the command with only one scope item.
NOSCRDEV
Message: screen mode is not supported on this device screen mode
output is being lost
Severity: Informational
NOSCRMODE
Message: screen mode is not supported on this terminal screen mode
is not set
Severity: Warning
NOSCROLL
Message: no scrolling display selected or missing display name Severity: Error
NOSCROLLDISP
Message: display_name display may not be scrolled Severity: Informational
NOSETTERM
Message: the SET TERMINAL command is not supported on this terminal Severity: Warning
NOSPAWN
Message: spawn command failed Severity: Error
NOSPAWNI
Message: spawn command failed Severity: Informational
NOSRCHSTR
Message: search string not set
Severity: Warning
Explanation: No current search string is defined for the debugger
command SEARCH. The SEARCH command was entered without a search
string indicating that the current search string should be used.
But no previous SEARCH command has been entered to define a
current search string.
User Action: Explicitly specify the desired search string on the
command.
NOSRCLIN
Message: no source line for address address_value
Severity: Warning
Explanation: No source line corresponds to the address address_value
specified on the debugger command EXAMINE/SOURCE.
User Action: None. This message is informational.
NOSTEPGO
Message: no STEP, GO, SET PROCESS/VISIBLE or CALL commands allowed
in screen displays
Severity: Error
NOSUCC
Message: logical successor not defined
Severity: Warning
Explanation: The logical successor of the referenced instruction or
identifier is not defined.
User Action: None. This message is informational.
NOSUCHBPT
Message: no such breakpoint
Severity: Informational
Explanation: The CANCEL BREAK command specified an address that is
not the address of a breakpoint.
User Action: Use the SHOW BREAK command to find the location of the
current breakpoints, and then cancel any of these breakpoints
that you want to cancel.
NOSUCHDISP
Message: no such display defined: display_name Severity: Error
NOSUCHELP
Message: no such help topic or invalid HELP command Severity: Warning
NOSUCHIMG
Message: image image_name not found Severity: Error
NOSUCHMODU
Message: module path_name is not in module chain
Severity: Error
Explanation: The module path_name, specified in the SET MODULE
command, does not exist in the image. This message can be caused
when: (1) a module name has been entered incorrectly or (2) a
module is compiled with the /NOTRACE switch.
User Action: Specify a module that is in the image.
NOSUCHPACK
Message: library package path_name is not in the symbol table Severity: Warning
NOSUCHSCOPE
Message: scope does not exist or is not in set module: scope_name Severity: Warning
NOSUCHTASK
Message: no such task exists or no task satisfies criteria Severity: Error
NOSUCHTPT
Message: no such tracepoint
Severity: Informational
Explanation: The CANCEL TRACE command specified an address that was
not the address of a tracepoint.
User Action: Use the SHOW TRACE command to display the current
tracepoints and then cancel any that you want to cancel.
NOSUCHWIND
Message: no such window defined: display_name Severity: Error
NOSUCHWPT
Message: no such watchpoint
Severity: Informational
Explanation: The CANCEL WATCH command specified an address that was
not the address of a watchpoint.
User Action: Use the SHOW WATCH command to display the current
watchpoints and then cancel any that you want to cancel.
NOSYMBOL
Message: symbol 'symbol_name' is not in the symbol table Severity: Error
NOSYMBOLR
Message: no symbol 'symbol_name' was declared in routine path_name Severity: Warning
NOTADAPROG
Message: program is not an ADA program; command ignored Severity: Error
NOTALIGNED
Message: - unaligned_string should be longword aligned
Severity: Informational
Explanation: This message appears as additional information with the
INVDSTREC error message. The DST field was not longword aligned.
This is a compiler error.
NOTARRAY
Message: type of variable is not array
Severity: Warning
Explanation: The variable being treated as an array has not been
defined as one.
User Action: Check that the correct variable reference is being
made.
NOTASTRUCT
Message: 'symbol_name' was not declared as a structure
Severity: Error
Explanation: A VAX BLISS-32 structure reference specified a symbol
symbol_name that was not declared a structure.
User Action: Re-enter the command with a valid symbol reference.
NOTATMAIN
Message: type GO to get to start of main program Severity: Informational
NOTCURPC
Message: target of EXAMINE/OPERANDS is not the current PC results
may be unexpected
Severity: Informational
Explanation: The operands being examined will probably give
incorrect results, because the context for the instruction is
probably not set up properly. Specifically, the values of
registers used in address computations depend on the previous
series of instructions being executed, which was not done in this
case.
User Action: Only use EXAMINE/OPERANDS with .0\%PC
NOTDEFINE
Message: defined_symbol was not defined Severity: Informational
NOTIMPLAN
Message: expression_type is not implemented at command level
Severity: Error
Explanation: The expression_type is not supported at this type.
User Action: Specify a type of expression that the debugger
supports.
NOTINLOOP
Message: exitloop encountered when not in a loop Severity: Warning
NOTINSCOPE
Message: specified scope cannot be found in the default scope list
Severity: Error
Explanation: The specified scope was not in the current default
scope list.
User Action: Enter the command with a scope that is in the default
scope list.
NOTINST
Message: examined address is not the start of an instruction Severity: Informational
NOTNUMSCOPE
Message: specified scope is not a numbered scope.
Severity: Error
Explanation: The SET SCOPE/CURRENT command requires a numbered
scope.
User Action: Enter the command with a numbered scope.
NOTORIGSRC
Message: original version of source file not found file used is
file_specification
Severity: Informational
Explanation: A source file was found for some module. But the
revision date and time or the file size indicates that this may
not be the same version of the file that was used in the original
compilation of the module. This warning message indicates that
future source line displays from this source file may not
correspond to the actual source used to compile the module.
User Action: None, unless the original source is available. Then
you can use the debugger command SET SOURCE to indicate the
location of the source to the debugger.
NOTPTR
Message: variable must be of pointer or file type Severity: Warning Explanation: The variable should be a pointer or a file type. User Action: Specify a variable of pointer or file type.
NOTRACES
Message: no tracepoints are set, no opcode tracing Severity: Informational Explanation: There are no tracepoints or opcode tracing set. User Action: None. This message is informational.
NOTRAZERO
Message: Unable to find a trailing zero for ASCIZ object at virtual
address address_value
Severity: Error
Explanation: The debugger was unable to find a trailing zero for the
specified ASCIZ string.
User Action: The ASCIZ string is missing a trailing zero, or the
object examined is not an ASCIZ string.
NOTRECORD
Message: variable is not record; cannot select component
component_name
Severity: Warning
NOTREE
Message: SCAN tree or subtree not found SCAN error message Severity: Warning
NOTTASKVAL
Message: expression does not specify a task value Severity: Error
NOTUISOSC
Message: the debugger will be unable to create a separate window;
OSC not enabled.
Severity: Informational
Explanation: The debugger requires OSC support enabled to create a
separate window (see SET MODE SEPARATE).
User Action: To allow the debugger to create a separate window, type
at DCL: DEFINE/SYSTEM UIS$VT_ENABLE_OSC_STRINGS TRUE. You may
wish to put this line in your private startup file.
NOTUISV30
Message: the debugger will be unable to create a separate window;
UIS too old.
Severity: Informational
Explanation: The debugger requires VWS V3.0 or later to create a
separate window (see SET MODE SEPERATE).
User Action: To allow the debugger to create a separate window,
install VWS V3.0 or later, and in your private startup file (or
at DCL), DEFINE/SYSTEM UIS$VT_ENABLE_OSC_STRINGS TRUE.
NOTUNQOVR
Message: symbol 'symbol_name' is overloaded use SHOW SYMBOL to find
the unique symbol names
Severity: Error
NOTUPDATE
Message: instruction screen display not updated Severity: Informational
NOTYPEINFO
Message: symbol type information not available please SET the module
that describes this type
Severity: Warning
NOUNIQUE
Message: symbol 'symbol_name' is not unique
Severity: Error
Explanation: The symbol specified was not in a default scope or was
defined in more than one scope.
User Action: Specify the scope of the symbol in a pathname or change
the default scope.
NOUNIVERSALS
Message: shareable image contains no universal symbols Severity: Informational
NOUSREVNT
Message: no user-specified events are allowed; none are declared Severity: Error
NOVALATPC
Message: entity 'symbol_name' does not have a value at the current
PC (was optimized away)
Severity: Warning
Explanation: The value of the specified variable does not exist at
this point in the program's execution. For example, the variable
might be assigned to a register that is currently being used for
some other purpose.
User Action: Retry the operation at a point in the program's
execution when the variable is being referenced.
NOVALTYP
Message: 'symbol_name' does not have a value because it is a type
name
Severity: Warning
NOVALUE
Message: reference does not have a value Severity: Warning Explanation: The command specified a reference that has no value. User Action: Change the reference.
NOWATCHES
Message: no watchpoints are set Severity: Informational Explanation: No watchpoints are set. User Action: None. This message is informational.
NOWATTAR
Message: cannot watch-protect target
Severity: Error
Explanation: You are attempting to set a /STATIC watchpoint on a
location that is either a register, is not in your program, or is
on the stack (P1 space). These kinds of locations cannot be
watchpointed with the /STATIC qualifier.
User Action: Either use the /NOSTATIC qualifier, or do not
watch-point this location.
NOWATVARIA
Message: cannot set watchpoints on variant records Severity: Warning
NOWATVARSTG
Message: watchpoints not allowed after SET TYPE ASCIC, ASCIW, or
ASCIZ
Severity: Warning
NOWBPT
Message: cannot insert breakpoint Severity: Informational Explanation: This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
NOWILD
Message: no wildcard permitted Severity: Error Explanation: Wildcards are not permitted in this context User Action: Re-enter the command without using wildcards
NOWILDFIL
Message: file name, type, and version cannot be wildcarded Severity: Error
NOWOPCO
Message: cannot replace breakpoint with opcode Severity: Fatal Explanation: This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
NOWPROT
Message: cannot set protection Severity: Fatal Explanation: This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
NULLPTR
Message: cannot dereference null pointer Severity: Warning
NUMCONLONG
Message: numeric constant too long, please shorten Severity: Error
NUMTRUNC
Message: number truncated Severity: Informational
OBJECTINV
Message: requested object is invalid Severity: Fatal Explanation: This message indicates an internal debugger error. User Action: Submit an SPR.
OBJPTRINV
Message: the pointer associated with the requested object is invalid Severity: Fatal Explanation: This message indicates an internal debugger error. User Action: Submit an SPR.
OBJTYPMIS
Message: the type associated with the requested object is incorrect Severity: Fatal Explanation: This message indicates an internal debugger error. User Action: Submit an SPR.
OBSOLETE_1
Message: this message is available for reuse Severity: Warning
OBSOLETE_2
Message: this message is available for reuse Severity: Informational
OPCDEC
Message: no support for G/H instructions at or near opcode_name Severity: Warning
OPNOTALLOW
Message: operator 'operator_symbol' not allowed on given data types Severity: Error
OPSYNTAX
Message: instruction operand syntax error for operand number
operand_number
Severity: Error
OUTPUTLOST
Message: output being lost, both NOTERMINAL and NOLOG are in effect
Severity: Informational
Explanation: The SET OUTPUT command has set the output conditions to
NOTERMINAL and NOLOG; consequently, the output is not displayed
on the terminal or written to a log file. The output normally
displayed by the debugger will not be available.
User Action: Use the SET OUTPUT command to send output to the
terminal or to a log file.
PACSIZREQ
Message: packed size required Severity: Warning
PARENREQ
Message: parenthesis required in 'debugger_command_segment
/TYPE=(X)'
Severity: Warning
Explanation: The debugger_command_segment is either SET TYPE,
DEPOSIT, or EXAMINE.
PARSTKOVR
Message: parse stack overflow, simplify expression
Severity: Warning
Explanation: The expression was too complex for the debugger to
evaluate.
User Action: Simplify the expression.
PASTHRU
Message: The primary handler should ignore this signal Severity: Success
PATHNOTACP
Message: pathname qualifiers (path_name) not allowed in SHOW SYMBOL
data name
Severity: Warning
PATHTLONG
Message: too many qualifiers on name Severity: Error
PATHTOOLONG
Message: pathname too long at path_name Severity: Error
PCNOTALL
Message: PC not allowed in context for operand number operand_number Severity: Error
PLICVTERR
Message: PLI conversion error at or near opcode_name Severity: Error
PREDEPTNOT
Message: predefined eventpoint(s) not canceled
Severity: Informational
Explanation: Any existing predefined eventpoints have not been
canceled as the result of a CANCEL command.
User Action: Specify the /PREDEFINED qualifier with the CANCEL
command to cancel predefined eventpoints.
PROFRANOT
Message: proper frame not found on call stack for path_name
Severity: Warning
Explanation: You attempted to look at a variable in a routine
invocation that does not exist.
User Action: Specify a routine or routine invocation that is
currently active.
PROMPTCLEN
Message: display_name display width not changed, must be full width
of screen
Severity: Informational
PROMPTOCCL
Message: display_name display now occludes some or all of
display_name display's text
Severity: Informational
PROMPTRLEN
Message: display_name display length not changed, must be at least 2
lines long
Severity: Informational
PROVRFLOW
Message: too many levels of @ procedure nesting Severity: Warning
PSHVALNYI
Message: PUSH_VALSPEC DST stack machine operator for variable
'symbol_name' is not yet implemented
Severity: Error
Explanation: The named variable's address is complex, and its
computation uses operands which live in different places at
different points in the program's execution. This cannot be
denoted using DEBUG Symbol Table (DST) features which this
version of the debugger supports.
User Action: Verify that you are using the latest releases of the
compiler and debugger. Try recompiling the application without
optimization. Examine the nearest object code which references
the variable and simulate the access algorithm by hand.
PXCN
Message: record object or record formal parameter must prefix
'CONSTRAINED
Severity: Warning
QUALREQ
Message: A direction qualifier must be specified with the EXPAND and
MOVE commands.
Severity: Error
Explanation: Direction ( UP, DOWN, LEFT, RIGHT ) information is
missing from the command.
User Action: Provide a direction with the command and try again.
QUOSTRLONG
Message: quoted string too long, please shorten Severity: Error
READERR
Message: debugger input read error, force to exit Severity: Warning
REFUSED
Message: attach request refused
Severity: Error
Explanation: Either you have attempted to attach to a process that
is your own process or that is not part of your process tree.
User Action: None. You cannot perform the attempted operation.
REGMASKHIDDEN
Message: register save mask hidden for stack frame frame_number
Severity: Warning
Explanation: Information on where the designated routine invocation
might save registers is in a module which has not been set.
Symbolic references to non-static variables of callers of this
routine may not be resolved correction by the debugger.
User Action: Set the module by using the SET MODULE or SET
MODULE/CALLS commands, or enable dynamic module setting with the
SET MODE DYNAMIC command. Then retry the action which produced
this message.
REGMASKMISSING
Message: register save mask missing for stack frame frame_number
Severity: Warning
Explanation: Information on where the designated routine invocation
might save registers is not available. Symbolic references to
non-static variables of callers of this routine may not be
resolved correction by the debugger.
User Action: Recompile or reassemble the modules using the /DEBUG
qualifier and then relink them.
REGREQ
Message: register required in context for operand number
operand_number
Severity: Error
RENAMENOT
Message: Unable to look up 'symbol_name', object being renamed not
found in symbol table
Severity: Warning
RESUMERR
Message: an error occurred while trying to resume execution of the
program
Severity: Error
Explanation: An error status was returned from the call to the
debugger-kernel service that resumes program execution.
Depending on the severity of the error, the program may or may
not have resumed execution.
User Action: Examine the error message after this message and
consider if the problem is related to a lack of quota or
otherwise related to your program's behavior. If so, then take
corrective action. If, after this evaluation, you believe that
the problem lies in the debugger, then submit a Software
Performance Report.
RETURNED
Message: control returned to process process_name Severity: Informational
RNDFCTROUT
Message: round factor out of range Severity: Warning
ROPRANDF
Message: reserved operand fault at or near opcode_name Severity: Error
RPCDBBDT
Message: Bad DTYPE for RPC Data Blocking. Severity: Error Explanation: This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
RPCERR
Message: an internal inter-process communications error has occurred
Severity: Error
Explanation: An internal communications error has occurred. The
reason is given in the message following this message.
User Action: If the error is reproducible, submit a Software
Performance Report and, if possible, enclose both a copy of the
program being debugged and a logged debugging session that
reproduces the error.
RPCINVDSC
Message: invalid RPC descriptor Severity: Error Explanation: This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
RPCOVF
Message: RPC packet overflow Severity: Error Explanation: This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
RPCUNF
Message: undefined RPC function encountered Severity: Error Explanation: This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
RPCUNKARG
Message: undefined RPC argument encountered Severity: Error Explanation: This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
RSTERR
Message: error in symbol table
Severity: Error
Explanation: There is a format error in the symbol table.
User Action: If the format error is not caused by a user program
error or a DEPOSIT command, submit a Software Performance Report.
SCALEADD
Message: pointer addition: scale factor of scale_factor applied to
right/left argument
Severity: Informational
SCALESUB
Message: pointer subtraction: scale factor of scale_factor applied
to right/left
Severity: Informational
SCRNOTORIGSRC
Message: original version of source file not found for display in
display_name file used is file_specification
Severity: Informational
Explanation: A source file was found for some module. But the
revision date and time or the file size indicates that this may
not be the same version of the file that was used in the original
compilation of the module. This warning message indicates that
future source line displays from this source file may not
correspond to the actual source used to compile the module.
User Action: None, unless the original source is available. Then
you can use the debugger command SET SOURCE to indicate the
location of the source to the debugger.
SCRTOBIG
Message: screen too big for Screen Mode width must be less than
maximum_width, height less than maximum_height
Severity: Error
SCRTOSMALL
Message: screen too small for Screen Mode width must be at least
minimum_width, height must be at least minimum_height
Severity: Error
SCRUNAOPNSRC
Message: unable to open source file file_specification for display
in display_name
Severity: Warning
Explanation: Source lines from the file file_specification cannot be
displayed because the debugger was unable to open the source file
(represented as file_specification). The accompanying VAX RMS
status message gives more information about the reasons for the
source file not being opened.
User Action: Examine the VAX RMS status message to determine the
reasons for the source file not being opened, and take the
appropriate action based on that information.
SCRUNAREASRC
Message: unable to read source file file_specification for display
in display_name
Severity: Warning
Explanation: Source lines from the file file_specification cannot be
displayed because the debugger was unable to read the source file
(represented as file_specification). The accompanying VAX RMS
status message gives more information about the reasons for the
source file not being opened.
User Action: Examine the VAX RMS status message to determine the
reasons for the source file not being read, and take the
appropriate action based on that information.
SETKEY
Message: keypad state has been set to state_name Severity: Informational
SETKEYERR
Message: error in processing SET KEY command: Severity: Warning
SETMODU
Message: set module command has completed Severity: Informational
SETSCOMOD
Message: syntax error at 'debugger_command_segment', SET
SCOPE/MODULE expected
Severity: Error
SFCNTNEG
Message: shift count is negative Severity: Warning
SHOKEYERR
Message: error in processing SHOW KEY command: Severity: Warning
SHRPRC
Message: debugger will share user process
Severity: Informational
Explanation: An error occured while trying to create a subprocess to
run the main debugger image. This message indicates that the
debugger is reverting back to the old behavior of running in the
user process.
User Action: Correct the problem specified in the messages preceding
this message. If the problem cannot be solved, submit a Software
Performance Report (SPR).
SIDEFFECT
Message: operators with side effects not supported (++, --) Severity: Warning
SIGVECTRUNC
Message: signal vector was truncated
Severity: Warning
Explanation: The signal vector on this stack frame was too big to
fit into the DEBUG buffer.
User Action: Submit an SPR. This message is handled internally, and
should never be signaled to the user.
SIZEATOMIC
Message: only atomic data types are supported with 'SIZE Severity: Warning
SIZETRUNC
Message: size field truncated to 32 bits
Severity: Informational
Explanation: The size of the entry in a VAX BLISS-32 field
specification was larger then 32. The debugger set the entry
size to 32 and executed the command.
User Action: None. This message is informational.
SOURCESCOPE
Message: Source lines not available for .0
%PC Displaying source in a caller of the current routine
Severity: Informational
SPAWNED
Message: subprocess spawned Severity: Informational
SRCLINNOT
Message: source lines not available for module path_name
Severity: Warning
Explanation: The source lines from module CZ cannot be displayed or
searched because there is no source line information in the
symbol table for that module. Either the compiler is not able to
generate such information or the /DEBUG qualifier was not used on
the compilation or link command.
User Action: If the language in question supports source line
display, recompile and relink with the /DEBUG qualifier. If the
language does not support source line display, source lines will
not be available to the debugger for modules written in that
language.
SS_INT
Message: system service intercepted Severity: Informational
STEPINTO
Message: cannot step over PC = address_value
Severity: Informational
Explanation: The debugger was unable to step over the routine and
executed a step into the routine instead.
User Action: None. This message is informational.
STGTRUNC
Message: string truncated Severity: Informational
STRNGPAD
Message: string operand lengths don't match, shorter padded with
blanks on the right
Severity: Informational
Explanation: The operands of a string comparison ( 'ABC' < 'AB' )
did not have the same length. The shorter one is blank extended
on the right.
User Action: Use strings of the same length.
STRTOOLONG
Message: strings longer than 255 characters not supported Severity: Warning
STRUCSIZE
Message: structure size declared as num_units allocation units,
num_units was given
Severity: Informational
Explanation: The VAX BLISS-32 structure size was declared to be
num_units units but was referenced with num_units units.
User Action: None. This message is informational.
SUBOUTBND
Message: subscript subscript_number is out of bounds value is
subscript_value, bounds are low_bound..high_bound
Severity: Informational
Explanation: An attempt to subscript out of the bounds of an array
was made.
User Action: Change the value of the subscript.
SUBSCRNG
Message: subscript out of range, low/high bound for dimension
subscript_number is subscript_bound
Severity: Informational
SUBSTRING
Message: invalid substring (start: low_bound, end: high_bound),
object has length string_size
Severity: Warning
Explanation: The substring specification (start: low_bound, end:
high_bound ) is not within the bounds defined for the data type.
User Action: Specify a substring specification within the bounds
defined for the data type.
SUBUNITCAN
Message: num_subunits subunit modules also canceled Severity: Informational
SUBUNITNOTCAN
Message: num_subunits subunit modules not canceled Severity: Informational
SUBUNITNOTSET
Message: parent module not set SET MODULE path_name will set parent
module
Severity: Informational
SUBUNITSET
Message: containing module also set Severity: Informational
SUPERDEBUG
Message: SUPERDEBUG not available Severity: Error
SYMNOTACT
Message: non-static variable 'symbol_name' is not active
Severity: Warning
Explanation: The symbol symbol_name is not defined in an active call
frame.
User Action: Check the symbol specified; if correct, ensure that you
have defined the scope correctly.
SYMNOTFND
Message: no symbols matching defined_symbol are defined Severity: Informational
SYNERREXPR
Message: syntax error in expression at or near
'debugger_command_segment'
Severity: Error
SYNERRLABEL
Message: syntax error in %LABEL construct, see HELP Built_in_Symbols
%LABEL
Severity: Error
SYNERRLINE
Message: syntax error in %LINE construct, see HELP Built_in_Symbols
%LINE
Severity: Error
SYNTAX
Message: command syntax error at or near 'debugger_command_segment'
Severity: Error
Explanation: The debugger encountered a command syntax error near
the element debugger_command_segment.
User Action: Re-enter the command.
TASKERROR
Message: error error_code from ADA multitasking Severity: Error
TASKNONULL
Message: Null task cannot be selected or modified Severity: Error
TASKNOREGS
Message: Task has no registers (it is the Null task) Severity: Error
TASKNOTABORT
Message: task not aborted; ADA multitasking is executing critical
section
Severity: Error
TASKNOTACT
Message: task cannot be made the active task; task is not ready or
running
Severity: Error
TASKNULL
Message: task is null; cannot set attributes of null task Severity: Error
TERMINATING
Message: process-specification is terminating
Severity: Informational
Explanation: The process process-specification has just finished
execution. All exit handlers in your program have run. Any SET
BREAK/TERMINATING or SET TRACE/TERMINATING events will now take
effect.
TERMTKNREQ
Message: - terminate token is required
Severity: Informational
Explanation: This message appears as additional information with the
INVDSTREC error message. The address or value specification was
not terminated by a terminate token. This is a compiler error.
TIMESLICE
Message: time slice interval has been slowed to 10.0 seconds Severity: Informational
TOOFEWSUB
Message: too few subscripts, array has num_dimensions dimensions Severity: Warning
TOOMANDIM
Message: too many dimensions in array Severity: Warning
TOOMANERR
Message: too many errors, some errors not reported
Severity: Informational
Explanation: Too many MISMODBEG or certain other errors occurred.
Other similar errors are not reported.
User Action: None. This message is informational.
TOOMANINV
Message: too many invocation numbers in symbol pathname Severity: Error
TOOMANPARM
Message: too many parameters on command Severity: Error
TOOMANSUB
Message: too many subscripts, array has num_dimensions dimensions Severity: Warning
TRYINGONEPRC
Message: attempting to activate main debugger in this process
Severity: Informational
Explanation: Since an error occurred while trying to create a
subprocess to run the sharable main debugger image , the kernel
debugger will attempt to activate the main debugger image in this
process.
UNACREDBGO
Message: unable to create DBG$OUTPUT, SYS$OUTPUT used Severity: Informational
UNACVT
Message: unable to convert radixvalue to datatype_name Severity: Warning
UNALIGNED
Message: data is not aligned on a byte boundary Severity: Warning
UNALLOCATED
Message: entity 'symbol_name' was not allocated in memory (was
optimized away)
Severity: Warning
UNAOPEDBGI
Message: unable to open DBG$INPUT, SYS$INPUT used Severity: Informational
UNAOPESCR
Message: unable to open DBG$OUTPUT for screen output Severity: Informational
UNAOPNHLP
Message: unable to open help library file_specification
Severity: Warning
Explanation: The help library file_specification cannot be opened to
look for the help you requested. The accompanying VAX RMS status
message gives you more information about the reasons for the
library not being opened.
User Action: Examine the VAX RMS status message to determine the
reasons for the help library not being opened, and take the
appropriate action based on that information. Also, verify that
the logical name DBG$HELP is either not defined, or is defined to
indicate the proper file.
UNAOPNINI
Message: unable to open initialization file file_specification Severity: Informational
UNAOPNSRC
Message: unable to open source file file_specification
Severity: Warning
Explanation: Source lines from the file file_specification cannot be
displayed because the debugger was unable to open the source file
(represented as file_specification). The accompanying VAX RMS
status message gives more information about the reasons for the
source file not being opened.
User Action: Examine the VAX RMS status message to determine the
reasons for the source file not being opened, and take the
appropriate action based on that information.
UNAREASRC
Message: unable to read source file file_specification
Severity: Warning
Explanation: Source lines from the file file_specification cannot be
displayed because the debugger was unable to read the source file
(represented as file_specification). The accompanying VAX RMS
status message gives more information about the reasons for the
source file not being opened.
User Action: Examine the VAX RMS status message to determine the
reasons for the source file not being read, and take the
appropriate action based on that information.
UNASAVVAL
Message: unable to save value for defined_symbol, definition ignored Severity: Warning
UNASETIMG
Message: unable to set image image_name because it has no symbol
table
Severity: Informational
UNASETTAS
Message: unable to set visible task: registers not available Severity: Error
UNASWISTA
Message: Unable to create debugger stack, using program stack Severity: Informational
UNBPAREN
Message: unbalanced parentheses in expression Severity: Error
UNDEXPN
Message: undefined exponentiation at or near opcode_name Severity: Warning
UNDKEY
Message: state_name key key_name is undefined Severity: Informational
UNHANDLED
Message: The primary handler should now handle this unhandled
exception
Severity: Success
UNIMPLENT
Message: attempt to evaluate unimplemented type Severity: Warning
UNMTCHPARN
Message: unmatched left parenthesis found
Severity: Warning
Explanation: A left parenthesis (() was found, but the matching
right parenthesis ()) is missing.
User Action: Include the right parenthesis ()).
UPBNDOPT
Message: upper bound of subrange was optimized away Severity: Informational
USREVNTERR
Message: user-specified event error code error_code returned by user
RTL
Severity: Error
VALNOTADDR
Message: value of variable 'symbol_name' not usable as address
Severity: Warning
Explanation: The value of the specified variable is not usable as an
address. The address must be a longword.
User Action: Modify the address and retry the operation.
VARNESDEP
Message: variant nesting depth exceeds 20, cannot access record
component
Severity: Error
VERIFYICF
Message: opening/closing command procedure file_specification
Severity: Informational
Explanation: The debugger is verifying a command procedure. This
message is displayed before the command procedure is executed and
after all the commands have been displayed.
User Action: None. This message is informational.
VERSIONNUM
Message: the debugger_type debugger has RPC version
major_version/minor_version
Severity: Informational
Explanation: This message is to inform you of the version number(s)
of the main and kernel debuggers. It will only appear as part of
another message, such as INCOMVERSION.
WATCHSIZE
Message: cannot WATCH variables longer than 512 bytes Severity: Error
WATNOWCAN
Message: watchpoint now cancelled
Severity: Informational
Explanation: This message is a sub-message to WATVARSCP, WATVARPTR,
and WATVARPROT. This message indicates that the original
watchpoint has been cancelled (is no longer active).
WATNOWWAT
Message: now watching variable name
Severity: Informational
Explanation: This message is a sub-message to WATVARSCP and
WATVARPTR. This message indicates the new name under which a
variable which either went out of scope or whose pointer(s)
changed is addressed by the debugger. If this message appears,
the watchpoint is still active under this new name.
WATVARGSGONE
Message: global section associated with watched variable variable
name has been unmapped
Severity: Informational
Explanation: The global-section which contained a global-section
watchpoint is no longer mapped by any process that is under
debugger control. This message is always followed by the
WATNOWCAN message, since the debugger must delete the watchpoint.
WATVARGSOVR
Message: watched variable overlaps into a global section
Severity: Error
Explanation: The specified variable spans a range of virtual memory
which includes a global-section and a private-section. A watched
variable must either be entirely in a global-section or entirely
in a private-section.
User Action: Do not use watchpoint on this address.
WATVARNOWGBL
Message: watched variable variable name has been re-mapped to a
global section
Severity: Informational
Explanation: The program mapped a global-section over a watched
variable. This message indicates that the debugger made the
watchpoint a global-section watchpoint. If the global-section is
mapped by more than one process that is under the debugger
control, the watched variable will be watched in each process
that is mapped to the global section.
WATVARPROT
Message: watched variable variable name is no longer accessible
Severity: Informational
Explanation: Some action by the program has made the target variable
inaccessible to the debugger. The program might have deleted the
virtual memory which contains some part of the variable or one of
the pointers in the pointer chain to the variable, or the program
might have set the protection of such virtual memory such that
the debugger can not read it. This message is always followed by
the WATNOWCAN message, since the debugger must delete the
watchpoint.
WATVARPTR
Message: watched variable variable name now points to a different
address
Severity: Informational
Explanation: Some pointer in the variable reference has changed
value. This message is accompanied by a further message
indicating whether the debugger has cancelled the watchpoint or
re-defined the watchpoint to address the original data by a
different name.
WATVARREMAP
Message: watched variable variable name touches a page which has
been re-mapped by the user program
Severity: Informational
Explanation: Some action by the user program has made it impossible
for the debugger to set the protection on part or all of the
variable. The debugger will therefore not detect changes to the
variable. This message is always followed by the WATNOWCAN
message, since the debugger must delete the watchpoint.
WATVARSCP
Message: watched variable variable name has gone out of scope
Severity: Informational
Explanation: The identified variable is no longer accessible by its
original name. The program may have returned from the routine in
which the variable was defined, or it may have called another
routine. This message is accompanied by a further message
indicating whether the debugger has cancelled the watchpoint (in
the case that the variable is truly gone) or re-defined the
watchpoint to address the same data by a different name.
WIDTHDIFF
Message: desired width of display_width is not allowed, width is set
to display_width
Severity: Informational
WITHCAN
Message: num_modules related modules also canceled Severity: Informational
WITHNOTCAN
Message: num_modules directly related modules not canceled Severity: Informational
WITHNOTSET
Message: num_modules directly related modules not set SET MODULE
path_name will set all related modules
Severity: Informational
WITHSET
Message: num_modules related modules also set Severity: Informational
WORKSTACMD
Message: the command debugger-command is only supported on
workstations
Severity: Warning
Explanation: The debugger only supports the command
debugger-commandon Workstations.
User Action: None. This capability of the debugger does not exist
for your terminal or machine.
WPTTRACE
Message: non-static watchpoint, tracing every instruction
Severity: Informational
Explanation: Setting a watchpoint on a non-static location such as
the stack or on a register forces the debugger to trace every
instruction that is executed. This will slow down execution of
your program by a considerable amount.
User Action: If you do not want execution of your program slowed
down, then you must cancel the watchpoint.
WRITE_FAILED
Message: an attempt to write into a memory location failed Severity: Error Explanation: This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
WRITE_INTO_KERNEL
Message: cannot write into the debugger kernel's address space Severity: Error Explanation: This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
WRITE_INTO_KERNEL_STACK
Message: cannot write into the debugger kernel's stack Severity: Error Explanation: This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
ZERLENDST
Message: zero length DST record has been ignored (compiler error) Severity: Informational
ZEROINCR
Message: increment for ranged examine is zero; exiting loop
Informational
MOVE
Moves a screen display vertically and/or horizontally across the
screen. The MOVE command simply creates a new window of the same
dimensions elsewhere on the screen and maps the display to it,
while maintaining the relative position of the text within the
window.
The MOVE command does not change the order of a display in the
pasteboard circular list. Depending on the relative order of
displays, the MOVE command may cause the display to hide or
uncover another display or be hidden by another display,
partially or totally.
A display can be moved only up to the edge of the screen. Thus,
specifying MOVE/DOWN:99 SRC moves display SRC down so that its
bottom border is at the bottom edge of the screen.
Format:
MOVE /qualifier[...] [disp_name [,disp_name...] ]
Additional information available:
ExamplesKey DefinitionsParametersQualifiers
Examples
DBG> MOVE/UP:3/RIGHT:5 FOO ! Move display FOO up by 3 lines and
! right by 5 columns.
DBG> MOVE/LEFT ! Move the current scrolling display
! left by 1 column.
Key Definitions
Several keypad keys have been bound to the EXPAND and MOVE
commands, to facilitate expanding, contracting, and moving
displays. (See HELP KEYPAD STATE_KEYS for more information).
Parameters
disp_name
The name (or list of names) of the screen display(s) to be moved.
If this name is omitted, the currently selected scrolling display
is used. (See HELP SELECT/SCROLL).
Qualifiers
Additional information available:
/DOWN[:n]
Move the display down by n lines (if n is positive) or up by n
lines (if n is negative). If n is omitted, the display is moved
down by 1 line. See the MOVE command description for
restrictions.
/LEFT[:n]
Move the display to the left by n lines (if n is positive) or
right by n lines (if n is negative). If n is omitted, the
display is moved to the left by 1 line. See the MOVE command
description for restrictions.
/RIGHT[:n]
Move the display to the right by n lines (if n is positive) or
left by n lines (if n is negative). If n is omitted, the display
is moved to the right by 1 line. See the MOVE command
description for restrictions.
/SUFFIX[=process-identifier-type]
Note: This qualifier applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS). Use
this qualifier only directly after a display name.
Appends a process-identifying suffix to a display name. The
suffix denotes the visible process. This qualifier is used
primarily in command procedures when specifying display
definitions or key definitions that are bound to display
definitions. Use any of the following process-identifier-type
keywords:
PROCESS_NAME The display-name suffix is the VMS process name.
PROCESS_NUMBER The display-name suffix is the process number
(as shown in a SHOW PROCESS display).
PROCESS_PID The display-name suffix is the VMS process
identification number (PID).
If you specify /SUFFIX without a process-identifier- type
keyword, the process identifier type used for the display-name
suffix is, by default, the same as that used for the prompt
suffix (see SET PROMPT/SUFFIX).
/UP[:n]
Move the display up by n lines (if n is positive) or down by n
lines (if n is negative). If n is omitted, the display is moved
up by 1 line. See the MOVE command description for restrictions.
Multiprocess
To debug a multiprocess program, you must first establish a
multiprocess debugger configuration, as explained in the subtopic
Multiprocess_Configuration. Other subtopics describe concepts,
commands, and qualifiers used in multiprocess debugging. Type
HELP New_Features V5.2 for summary descriptions of commands and
qualifiers associated with multiprocess debugging.
Additional information available:
Activation OptionsAdvanced ConceptsCommand BroadcastGlobal Section Watchpoints
Multiprocess ConfigurationProcess InformationProgram ExecutionPrompt Suffix
Screen Mode FeaturesSpecifying ProcessesTermination OptionsVisible Process
Activation Options
You can bring a process under debugger control in any of the
following ways:
o You execute the image with the DCL RUN[/DEBUG] command.
o If one or more processes in the same job tree as the
debugging session are waiting to be connected to the
debugger, you enter one of the following debugger commands:
- A command that starts execution, such as STEP.
- The CONNECT command, without specifying a parameter.
This is preferable if you do not want the program to
execute. Type HELP CONNECT for more information.
o You enter the CONNECT command, specifying a process that is
running an image. This interrupts the execution of the image
and brings it under debugger control.
o You enter a CTRL/Y - DEBUG sequence from DCL level to
interrupt an image that is running without debugger control.
Type HELP CTRL_Y for more information.
o A program that is not under debugger control signals
SS$_DEBUG. Type HELP SS$_DEBUG for more information.
An image is debuggable if it was not linked with the /NOTRACEBACK
qualifier. Also, full symbolic information is available only if
the image's modules were compiled and linked with the /DEBUG
qualifier.
When a process comes under debugger control, it is initially in
the "activated" state (as indicated in a SHOW PROCESS display).
This condition is traced by default, as if you had entered the
command SET TRACE/ACTIVATING. As for a one-process program, the
debugger prompt is displayed when the first process comes under
debugger control. This enables you to enter debugger commands
before the main image has started execution.
Within a given debugging session, the debugger assigns a process
number sequentially, starting with process 1, to each process
that comes under debugger control.
Advanced Concepts
The debugging configuration (default or multiprocess) is entirely
controlled by the definition of DBG$PROCESS. If some of the
processes in a job tree have different definitions of
DBG$PROCESS, the resulting debugging configuration can be very
confusing. The value of DBG$PROCESS is checked when the kernel
debugger is first invoked.
Consider the following scenario:
$ DEFINE/JOB DBG$PROCESS MULTIPROCESS
$ RUN TEST
VAX DEBUG X5.0-3 MP
DBG_1> SET BREAK/ACTIVATING;GO
break at program activation in %PROCESS_NUMBER 2
DBG_2> SHOW PROCESS/ALL
Number Name Hold State Current PC
1 SMITH interrupted TEST\%LINE 50
* 2 SMITH_1 activated SUB1\%LINE 71
DBG_2> SPAWN DEFINE DBG$PROCESS DEFAULT
DBG_2> SET BREAK %LINE 100;GO ! Assume that TEST creates a new process
VAX DEBUG V5.0-3 MP
break at %LINE 100 in %PROCESS_NUMBER 2
DBG> SHOW PROCESS/ALL
Number Name Hold State Current PC
* 3 SMITH_2 activated MYPROG\%LINE 10
DBG_2> SHOW PROCESS/ALL
Number Name Hold State Current PC
1 SMITH interrupted TEST\%LINE 50
* 2 SMITH_1 break SUB1\%LINE 100
DBG>
The VMS job tree at this point is symbolized in the following
figure, which shows a mixed separate-process and multiprocess
configuration:
SMITH
+--------+
| TEST |
/|--------|\
SMITH_1 / |kernel | \ SMITH_2
+--------+ |debugger| +--------+
| SUB1 | +--------+ | SUB2 |
|--------| | |--------|
|kernel | | |kernel |
|debugger| | |debugger|
+--------+ | +--------+
| | |
+--------------+ +--------+
| main | |main |
| debugger | |debugger|
+--------------+ +--------+
Command Broadcast
By default, process-specific commands are executed in the context
of the visible process. The DO command enables you to execute
commands in the context of one or more processes that are
currently under debugger control. This is also referred to as
"broadcasting" commands to processes.
Use the DO command without a qualifier to execute commands in the
context of all of the processes. For example, the following
command executes the SHOW CALLS command for all processes that
are currently under debugger control (processes 1 and 2, in this
case):
DBG_1> DO (SHOW CALLS)
For %PROCESS_NUMBER 1
module name routine name line rel PC abs PC
*MAIN_PROG MAIN_PROG 21 0000001E 0000041E
For %PROCESS_NUMBER 2
module name routine name line rel PC abs PC
*TEST TEST 1+2 0000000B 0000040B
As indicated in this example, the debugger identifies the process
associated with any debugger output.
Use the DO command with the /PROCESS= qualifier to execute
commands in the context of specific processes. For example, the
following command executes the commands SET MODULE START and
EXAMINE X in the context of process 2:
DBG_1> DO/PROCESS=(%PROC 2) (SET MODULE START; EXAMINE X)
Global Section Watchpoints
You can set watchpoints in global sections. A global section is
a region of virtual memory that is shared among all processes of
a multiprocess program. A watchpoint that is set on a location
in a global section (a global section watchpoint) triggers when
any process modifies the contents of that location.
Note that, when setting watchpoints on arrays or records,
performance is improved if you specify individual elements rather
than the entire structure with the SET WATCH command.
If you set a watchpoint on a location that is not yet mapped to a
global section, the watchpoint is treated as a conventional
static watchpoint. For example:
DBG_1> SET WATCH ARR(1)
DBG_1> SHOW WATCH
watchpoint of PPL3\ARR(1)
When ARR is subsequently mapped to a global section, the
watchpoint is automatically treated as a global section
watchpoint and an informational message is issued. For example:
DBG_1> GO
%DEBUG-I-WATVARNOWGBL, watched variable PPL3\ARR(1) has been remapped
to a global section
predefined trace on activation at routine PPL3 in %PROCESS_NUMBER 2
1: PROGRAM PPL3
predefined trace on activation at routine PPL3 in %PROCESS_NUMBER 3
1: PROGRAM PPL3
watch of PPL3\ARR(1) at PPL3\%LINE 93 in %PROCESS_NUMBER 2
93: ARR(1) = INDEX
old value: 0
new value: 1
break at PPL3\%LINE 94 in %PROCESS_NUMBER 2
94: ARR(I) = I
Once the watched location is mapped to a global section, the
watchpoint is visible from each process. For example:
DBG_2> DO (SHOW WATCH)
For %PROCESS_NUMBER 1
watchpoint of PPL3\ARR(1) [global-section watchpoint]
For %PROCESS_NUMBER 2
watchpoint of PPL3\ARR(1) [global-section watchpoint]
For %PROCESS_NUMBER 3
watchpoint of PPL3\ARR(1) [global-section watchpoint]
Multiprocess Configuration
The multiprocess configuration enables one debugging session to
communicate with and control images running in several processes.
To establish the multiprocess configuration, enter the following
command before invoking the debugger:
$ DEFINE/JOB DBG$PROCESS MULTIPROCESS
Use the /JOB qualifier to make the logical definition job wide.
This ensures that any subprocesses that are created (spawned) by
the program being debugged can be controlled from the same
debugging session. The debugging configuration (default or
multiprocess) depends only on the current definition of
DBG$PROCESS. It does not depend on whether a program runs in
more than one process.
Type HELP Debugging_Configurations for more information.
Additional information available:
Example
$ DEFINE/JOB DBG$PROCESS MULTIPROCESS
$ RUN PROG1
...
DBG_1>
The DEFINE/JOB command establishes the multiprocess
configuration. This is demonstrated by the process-specific
prompt suffix, "_1", which is displayed initially when the
debugger is invoked with the RUN command. The suffix indicates
that execution is suspended in process 1, the first process that
was brought under debugger control. Process 1 is currently the
visible process -- the context for executing process-specific
commands like STEP and EXAMINE.
Process Information
The SHOW PROCESS command enables you to obtain information about
any processes that are currently under control of your debugging
session. If you do not specify a process, the command displays
information about the visible process. Type HELP SHOW PROCESS
for complete information about the command, including the
possible process states identified in a SHOW PROCESS display.
Program Execution
When you enter a command that starts program execution, such as
STEP or GO, the command is executed in the context of the visible
process. However, images in any other unheld processes
(processes that have not been put on hold with a SET PROCESS/HOLD
command) are also allowed to execute. Similarly, if you use the
DO command to broadcast a command to start execution in one or
more processes, the command is executed in the context of each
specified unheld process, but images in any other unheld
processes are also allowed to execute. In all cases, a hold
condition is ignored in the visible process. (See the
Holding_Processes subtopic for additional information about the
behavior of processes when on hold.)
Once execution is started, the way in which it continues depends
on whether the command SET MODE [NO]INTERRUPT was entered. By
default (SET MODE INTERRUPT), execution continues until it is
suspended in any process. At that point, execution is
interrupted in any other processes that were executing images,
and the debugger prompts for input.
Additional information available:
Holding Processes
A command that starts execution is executed in the context of the
visible process, but it also causes execution to start in other
processes. If you want to inhibit execution in a process, put it
on hold. For example, the following SET PROCESS/HOLD command
puts process 2 on hold. The subsequent STEP command is executed
in the context of process 1, the visible process. Execution also
starts in any other processes that are not on hold, but not in
process 2:
DBG_1> SET PROCESS/HOLD %PROC 2
DBG_1> STEP
A SHOW PROCESS display indicates whether a process is on hold.
For example:
DBG_1> SHOW PROCESS/ALL
Number Name Hold State Current PC
* 1 JONES step MAIN_PROG\%LINE 24
2 JONES_1 HOLD interrupted TEST\%LINE 3+1
DBG_1>
To "unhold" a process, enter the command SET PROCESS/NOHOLD,
specifying the process that you want released from the hold
condition.
Note that a hold condition is ignored in the visible process.
Therefore, the command SET PROCESS/HOLD/ALL is a convenient way
to confine execution to the visible process. In the following
example, execution starts only in the visible process:
DBG_1> SET PROCESS/HOLD/ALL
DBG_1> STEP
This feature is useful if, for example, you want to use the CALL
command to execute a dump routine that is not part of the
execution stream of your program.
The preceeding discussions also apply if you use the DO command
to broadcast a GO, STEP, or CALL command to several processes.
The GO, STEP or CALL command is executed in the context of each
specified unheld process, and execution also starts in any other
unheld process. The following example illustrates the execution
behavior when all processes are put on hold and commands are
broadcast to all processes. Execution starts only in the visible
process (process 1, in this example):
DBG_1> SET PROCESS/HOLD/ALL
DBG_1> DO (EXAMINE X; STEP)
For %PROCESS_NUMBER 1
MAIN_PROG\X: 78
For %PROCESS_NUMBER 2
TEST\X: 29
stepped to MAIN_PROG\%LINE 26 in %PROCESS_NUMBER 1
26: K = K + 1
DBG_1>
SET_MODE_NOINTERRUPT
The command SET MODE NOINTERRUPT provides an alternative mode of
execution to the default mode (SET MODE INTERRUPT). SET MODE
NOINTERRUPT allows execution to continue without interruption in
other processes when it is suspended in some process. This is
especially useful if, for example, you want to broadcast a STEP
command to several processes with the DO command and complete
execution of the STEP in all these processes. For example:
DBG_1> SET MODE NOINTERRUPT
DBG_1> DO (STEP)
In this example, the DO command executes the STEP command in the
context of all processes currently under debugger control. The
visible process and any other unheld processes start execution.
Because the command SET MODE NOINTERRUPT was entered, the prompt
is displayed only after the STEP has completed (or execution has
been otherwise suspended at a breakpoint or watchpoint) in all
processes.
When SET MODE NOINTERRUPT is in effect, as long as execution
continues in one or more processes, the debugger does not prompt
for input. In such cases, use CTRL/C to interrupt all processes
and display the prompt.
Type HELP SET MODE NOINTERRUPT for more information.
Prompt Suffix
In a multiprocess configuration, "dynamic prompt setting" is
enabled by default. This means that the prompt has a
process-specific suffix that indicates the process number of the
visible process. The debugger assigns a process number
sequentially, starting with process 1, to each process that comes
under debugger control within a given debugging session.
Dynamic prompt setting, as well as the process-specific prompt
suffix are controlled by the command SET PROMPT/[NO]SUFFIX.
Unless dynamic prompt setting is disabled (SET PROMPT/NOSUFFIX),
the debugger prompt always identifies the visible process.
Screen Mode Features
Screen mode displays, whether predefined or user defined, are
associated with the visible process, by default. For example,
SRC shows the source code where execution is suspended in the
visible process, OUT shows the output of commands executed in the
context of the visible process, and so on.
By using the /PROCESS qualifier with the SET DISPLAY and DISPLAY
commands you can create process-specific displays or make
existing displays process specific, respectively. 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 for the PROMPT display. For example, the
following command creates the automatically updated source
display SRC_3, which shows the source code where execution is
suspended in process 3:
DBG_2> SET DISPLAY/PROCESS=(%PROC 3) SRC_3 AT RS23 -
SOURCE (EXAM/SOURCE .%SOURCE_SCOPE\%PC)
You assign attributes to process-specific displays as for
displays that are not. For example, the following command makes
display SRC_3 the current scrolling and source display -- that
is, the output of SCROLL, TYPE, and EXAMINE/SOURCE commands are
then directed at SRC_ 3:
DBG_2> SELECT/SCROLL/SOURCE SRC_3
If you enter a DISPLAY/PROCESS or SET DISPLAY/PROCESS command
without specifying a process, the specified display is then
specific to the process that was the visible process when you
entered the command. For example, the following command makes
OUT_X specific to process 2:
DBG_2> DISPLAY/PROCESS OUT_X
The /SUFFIX qualifier appends a process identifying suffix that
denotes the visible process to a display name. This qualifier
may be used directly after a display name in any command that
specifies a display (for example, SET DISPLAY, EXTRACT, SAVE).
It is especially useful within command procedures, in conjunction
with display definitions or with key definitions that are bound
to display definitions.
In a multiprocess configuration, the predefined tracepoint on
process activation automatically creates a new source display and
a new instruction display for each new process that comes under
debugger control. The displays have the names SRC_n and INST_n,
respectively, where n is the process number. These displays are
initially marked as removed. They are automatically canceled by
the predefined tracepoint on process termination.
Additional information available:
Keypad Definitions
Several predefined keypad key sequences enable you to configure
your screen with the process-specific source and instruction
displays that are created automatically when a process is
activated. The following table identifies the relevant keypad
keys and their general effect. Use the SHOW KEY command to
determine the exact commands issued by these key combinations.
Key: State: Command_Invoked_or_Function:
KP9 GOLD SET PROCESS/VISIBLE %NEXT_PROCESS.
Makes the next process in the process
list the visible process.
KP9 BLUE Displays two predefined process-
specific source displays, SRC_n.
These are located at Q1 and Q2,
respectively, for the visible process
and for the next process on the
process list.
KP7 BLUE Displays two sets of predefined
process-specific source and
instruction displays, SRC_n and
INST_n. These consist of source and
instruction displays for the visible
process at Q1 and RQ1, respectively,
and source and instruction displays
for the next process on the process
list at Q2 and RQ2, respectively.
KP3 BLUE Displays three predefined process-
specific source displays, SRC_n.
These are located at S1, S2, and
S3, respectively, for the previous,
current (visible), and next process on
the process list.
KP1 BLUE Displays three sets of predefined
process-specific source and
instruction displays, SRC_n and
INST_n. These consist of source and
instruction displays for the visible
process at S2 and RS2, respectively;
source and instruction displays for
the previous process on the process
list at S1 and RS1, respectively; and
source and instruction displays for
the next process on the process list
at S3 and RS3, respectively.
Specifying Processes
When specifying processes in debugger commands, you can use any
of the forms listed in the following table, except when
specifying processes with the CONNECT command.
The CONNECT command is used to bring a process that is not yet
known to the debugger under debugger control. Therefore, when
specifying a process with the CONNECT command, you can use only
its VMS process name or VMS process identification (PID). You
cannot use its (debugger) process number or any of the process
built-in symbols (for example, %NEXT_PROCESS).
[%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.
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 is
not reused 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-group-name A symbol defined with the
DEFINE/PROCESS_GROUP command to
represent a group of processes.
%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 (*)
You can omit the %PROCESS_NAME built-in symbol when entering
commands. For example:
DBG_2> SHOW PROCESS %PROC 2, JONES_3
You can define a symbol to represent a group of processes
(DEFINE/PROCESS_GROUP). This enables you to enter commands in
abbreviated form. For example:
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
The built-in symbols %VISIBLE_PROCESS, %NEXT_PROCESS, and
%PREVIOUS_PROCESS are useful in control structures (IF, WHILE,
REPEAT, and so on) and in command procedures.
Termination Options
When the main image of a process runs to completion, the process
goes into the "terminated" debugging state (not to be confused
with process termination in the VMS sense). This condition is
traced by default, as if you had entered the command SET
TRACE/TERMINATING.
When a process is in the terminated debugging state, it is still
known to the debugger and appears in a SHOW PROCESS/ALL display.
You can enter commands to examine variables, and so on. When the
last image of the program exits, the debugger gains control and
displays its prompt, rather than ending the debugging session.
To end the entire debugging session, use the EXIT or QUIT command
without specifying any parameters. When you do not specify any
parameters, the behavior of EXIT and QUIT is analogous to their
behavior for the default debugging configuration (QUIT does not
execute any user-declared exit handlers).
To terminate selected processes (in the VMS sense) without ending
the debugging session, use the EXIT or QUIT commands, specifying
one or more processes to be terminated. For example, the
following command terminates the image running in process 2 and
the process:
DBG_3> EXIT %PROC 2
DBG_3>
Subsequently, process 2 does not appear in a SHOW PROCESS
display. Type HELP EXIT and HELP QUIT for more information.
Visible Process
The visible process is the process that is the default context
for issuing process-specific commands. Process-specific commands
are those that start execution (STEP, GO, and so on) and those
used for looking up symbols, setting breakpoints, looking at the
call stack and registers, and so on. Commands that are not
process specific are those that do not depend on the mapping of
virtual memory but, rather, affect the entire debugging
environment -- for example, keypad mode and screen mode commands.
Unless dynamic prompt setting is disabled (SET PROMPT/NOSUFFIX),
the debugger prompt suffix always identifies the visible process
(for example, DBG_1>). The SET PROMPT command provides several
options for tailoring the prompt-string prefix and suffix to your
needs.
When you invoke the debugger, the visible process is the first
process that comes under debugger control, namely the process
running the main program. Within a given debugging session, the
debugger assigns a process number sequentially, starting with
process 1, to each process that comes under debugger control.
Additional information available:
Dynamic Process Setting
By default, "dynamic process setting" is enabled (SET
PROCESS/DYNAMIC). As a result, whenever the debugger interrupts
execution and displays its prompt, the process in which execution
is suspended becomes the visible process automatically. Dynamic
process setting occurs in the following situations: when a
breakpoint or watchpoint is triggered, at an exception condition,
on the completion of a STEP command, or when the last process
performs an image exit. Dynamic process setting is illustrated
in the following example, which also illustrates dynamic prompt
setting:
DBG_1> SHOW PROCESS/ALL
Number Name Hold State Current PC
* 1 JONES step MAIN_PROG\%LINE 22
2 JONES_1 interrupted TEST\%LINE 4
DBG_1> DO/PROCESS=(%PROC 2) (SET BREAK %LINE 11)
DBG_1> GO
break at TEST\%LINE 11 in %PROCESS_NUMBER 2
DBG_2> SHOW PROCESS/ALL
Number Name Hold State Current PC
1 JONES interrupted MAIN_PROG\%LINE 28
* 2 JONES_1 break TEST\%LINE 11
DBG_2>
In this example, initially process 1 is the visible process, as
indicated by the prompt suffix and the SHOW PROCESS display. The
DO command sets a breakpoint in the context of process 2.
Execution is resumed with the GO command and is suspended at the
breakpoint in process 2. Process 2 is now the visible process,
as indicated by the prompt suffix and the SHOW PROCESS display.
When dynamic process setting is disabled (SET PROCESS/NODYNAMIC),
the visible process remains unchanged until you specify another
process with the SET PROCESS/VISIBLE command.
If you have entered the command SET MODE NOINTERRUPT and then
started execution in several processes with the DO command, the
prompt is displayed only after execution has been suspended in
all processes. In this case, the visible process remains
unchanged, unless the last process performs an image exit (and
thereby becomes the visible process).
SET_PROCESS
Use the SET PROCESS command (with the default /VISIBLE qualifier)
to establish another process as the visible process. For
example, the following SET PROCESS command makes process 2 the
visible process:
DBG_1> SET PROCESS %PROC 2
DBG_2>
In this example, because dynamic prompt setting is enabled by
default, the SET PROCESS command has also caused the prompt
string suffix to change. It now indicates that process 2 is the
visible process. All process-specific commands are now executed
in the context of process 2.
New Features
Additional information available:
V4.2
This section points out which features and commands are new in
version 4.2 of the debugger. These are documented in detail
elsewhere in this help library:
Ada language support. See help on LANGUAGE ADA.
Aggregate watchpoints. See help on SET WATCH aggregate.
Dynamic module setting. See help on SET MODE DYNAMIC.
Enable and Disable AST. See help on ENABLE and DISABLE.
Exception built-in symbols. See help on "Built_in_Symbols %EXC".
Exit handlers. See help on SHOW EXIT_HANDLERS.
Instruction display. See help on "Screen Instruction-display".
Large terminal support. See help on SET TERMINAL.
Noline mode. See help on SET MODE NOLINE.
Parameters to SHOW MODULE. See help on SHOW MODULE Parameters.
Scroll mode. See help on SET MODE SCROLL.
Setting the debugger prompt. See help on SET PROMPT.
%SOURCE_SCOPE. See help under "Screen Source-display".
V4.4
This section points out which features and commands are new in
version 4.4 of the debugger.
DIBOL language support. See help on "Language DIBOL".
DISPLAY/[NO]POP and DISPLAY/[NO]PUSH.
EXAMINE/TYPE
New screen windows. See help on "Screen_Features Windows".
Scan language support. See help on "Language SCAN".
Scope default of 0,1,2,3,...N. See help on "SET SCOPE Default".
SELECT/INPUT, SELECT/ERROR, SELECT/PROGRAM.
SET ATSIGN and SHOW ATSIGN.
SET EDITOR and SHOW EDITOR.
Shareable Image support. See the "Shareable_Image" subtopic.
SHOW STACK
SS$_DEBUG signal parameters. See help on "SS$_DEBUG".
STEP/[NO]JSB and STEP/[NO]SHARE.
There are also various new screen features that are discussed in
the subtopics:
Additional information available:
Display AttributesExtracting DisplaysKey DefinitionsMoving Displays
PROMPT DisplayResizing DisplaysVertically Divided Windows
Shareable ImagesWindow Definitions
Display Attributes
In addition to the attributes INSTRUCTION, OUTPUT, SCROLL, and
SOURCE, the debugger now provides the following attributes, which
are also selected with the SELECT command:
ERROR --- A display with the ERROR attribute displays
debugger diagnostic messages.
INPUT --- A display with the INPUT attribute echoes your
debugger input.
PROGRAM --- A display with the PROGRAM attribute displays
program output. Currently, only the new predefined PROMPT
display can have the PROGRAM attribute.
PROMPT --- A display with the PROMPT attribute is where the
debugger prompts for input. Currently, only the new
predefined PROMPT display can have the PROMPT attribute.
For example, the following command causes your input, debugger
output, and debugger diagnostic messages to be logged in the OUT
display in the proper sequence:
DBG> SELECT/INPUT/ERROR OUT
Type HELP Screen_Features Display_Attributes for information on
assigning display attributes.
Extracting Displays
You can now save screen displays into a file, or create a file
with all the debugger commands necessary to re-create the current
screen state at a later time. Type HELP EXTRACT for a
description of the EXTRACT command.
Key Definitions
The default definitions for keypad keys KP7 and MINUS have been
changed to accommodate changes in predefined display and window
definitions. The new definitions are as follows:
KP7 = DISPLAY SRC AT LH1, INST AT RH1, OUT AT S45,PROMPT AT S6
GOLD KP7 = DISPLAY INST AT LH1, REG AT RH1, OUT AT S45,PROMPT AT S6
BLUE KP7 = Not defined
MINUS = DISPLAY %NEXTDISP AT S12345
GOLD MINUS = Not defined
BLUE MINUS = DISPLAY SRC AT H1, OUT AT S45, PROMPT AT S6 (this is the default)
See the "Window_Definitions" sub-topic for more information on
the new windows.
Moving Displays
You can move a display vertically and/or horizontally across the
screen by means of the MOVE command. Type HELP MOVE for a
description of the MOVE command.
PROMPT Display
There is a new PROMPT predefined display where the debugger
prompts for input, forces program output, and (by default) prints
debugger diagnostic messages. By default, PROMPT occupies the
bottom sixth of the screen (the predefined window S6). On a
VT100 or VT200 series terminal, S6 includes lines 21 through 24.
The PROMPT display is of the new display kind "PROGRAM". PROMPT
is the only display of that kind (no other PROGRAM displays can
be created). Note that, compared to other displays, PROMPT has
several restrictions. To eliminate possible confusion when
manipulating that display:
o PROMPT can never be hidden by another display. It is always
on top of the display "pasteboard".
o PROMPT can be moved anywhere on the screen, expanded to fill
the full screen height, and shrunk down to two lines. But
PROMPT must always occupy the full width of the screen and,
therefore, can not be moved, expanded, or shrunk
horizontally.
Type HELP Screen_Features Display_Attributes for information on
assigning display attributes to various displays, including the
PROMPT display.
Resizing Displays
You can expand and contract displays by means of the EXPAND
command. Type HELP EXPAND for a description of the EXPAND
command.
Vertically Divided Windows
Previously, display windows had to occupy the full width of the
screen (columns 1-80). Now, windows can be defined to occupy any
rectangular region of the screen. Windows occupying the left or
right half of the screen (columns 1-40 and 42-80, respectively)
are predefined. With these predefined displays, column 41 is
reserved as a border.
To observe the effect, invoke the debugger, use the command SET
MODE SCREEN, then press keypad key 7 (KP7). That key definition
has been changed to show the SRC display in the top left half of
the screen (LH1), the INST display in the top right half (RH1),
the OUT display under these two, and the new PROMPT display under
OUT.
Shareable Images
With version 4.4 of the debugger, you can debug shareable images
in the same way as you debug your main image. That is, full
symbol table information is now available for shareable images.
To build a shareable image with symbol table, you would compile
your modules with the /DEBUG qualifier, and then link the image
with the /SHARE and /DEBUG qualifiers. For example:
$ LINK/SHARE/DEBUG FOO
Then, once you have run your main program with the debugger, you
can load the symbol table information for the shareable image FOO
using the command:
DBG> SET IMAGE FOO
See the individual help topics for information on the commands
"SET IMAGE", "CANCEL IMAGE", and "SHOW IMAGE".
Window Definitions
Previously, the bottom sixth of the screen (lines 21-24 on a
VT100 or VT200 series terminal) could not be used for defining
display windows. That area was reserved for the debugger prompt,
debugger diagnostic messages, and program output. Also, windows
had to occupy the full width of the screen.
Now, windows can be defined to occupy any rectangular region of
the screen. The SET WINDOW, SET DISPLAY, and DISPLAY commands
now accept horizontal (column) as well as vertical (line)
coordinates. The general form of a window specification is
illustrated for the SET WINDOW command:
SET WINDOW wname AT (start-line,line-count
[,start-column,column-count])
Type "HELP SET WINDOW", "HELP SET DISPLAY", and "HELP DISPLAY"
for more information.
Old and new default windows have been defined to cover the
greater usable screen height and to account for vertically
defined windows. For example, on a VT100 or VT200 series
terminal, FS (full screen) now covers lines 1-24, H1 lines 1-12,
H2 lines 13-24, and so on. A new symbol prefix, S, denotes a
multiple of one sixth of the screen. For example, S56 is the
bottom two sixths of the screen. And for each of the full-width
predefined windows (for example, FS, H2, T12, Q3, S45, and so on)
there is also a left-half and a right-half predefined window.
These window names have the prefix L and R, respectively.
Examples of predefined windows follow:
Window Location
Name (start-line,line-count,start-column,column-count)
FS (1,23,1,80)
LFS (1,23,1,40)
RH1 (1,11,42,39)
LH2 (13,11,1,40)
LT12 (1,15,1,40)
Q234 (7,17,1,80)
RS56 (17,7,42,39)
V4.6
This section points out which features and commands are new in
version 4.6 of the debugger.
ADA Predefined Breakpoints
Call from exception break.
Nonstatic watchpoints.
Step from exception break.
See the subtopics for details.
Additional information available:
ADA-Predefined-BreakpointsCall-Exception-BreakNonstatic-Watchpoints
Step-Exception-Break
ADA-Predefined-Breakpoints
If any portion of your program is written in the ADA programming
language, then two breakpoints are automatically established on
Debugger startup. These breakpoints are on ADA Events
"Dependents_Exception" and "Exceptions_Terminated". Whenever you
perform the "SHOW BREAK" command, these breakpoints are
displayed.
Call-Exception-Break
Prior to version 4.6, the debugger did not allow you to CALL from
an exception break. The CALL command is now allowed in this
situation. For example:
Earlier versions of DEBUG:
DBG> SET BREAK/EXC
DBG> GO
%SYSTEM-F-ACCVIO, access violation, ...
break on exception preceding BLIHANDLER\SUBR\%LINE 38
38: a = ..a;
DBG> CALL PRIME(7)
%DEBUG-W-STEFROEXC, call from exception break is not allowed
Version 4.6 of DEBUG:
DBG> SET BREAK/EXC
DBG> GO
%SYSTEM-F-ACCVIO, access violation, ...
break on exception preceding BLIHANDLER\SUBR\%LINE 38
38: a = ..a;
DBG> CALL PRIME(7)
value returned is 00000001
There are some restrictions associated with issuing a CALL from
an exception breakpoint: Breakpoints, tracepoints, and
watchpoints are not triggered within the CALLed routine.
(Normally, you could set a breakpoint within a routine, call it
with the CALL command, and break within the routine). But since
most people use CALL to call their own dumping or debugging
routines, they do not want to set breakpoints in the dumping
routine, and this restriction does not matter.
Nonstatic-Watchpoints
Starting with version 4.6, it is possible to set watchpoints on
variables which are on the stack or allocated to registers. To
implement these watchpoints the debugger must trace every
instruction. (Watchpoints of static variables are implemented by
write-protecting the page and catching the access violation).
Therefore, watches of stack or register variables are slower than
watches of static variables.
When you set a watchpoint, the debugger determines whether the
watched location is a stack location or register, and if so,
gives an informational that you are setting a stack or register
watchpoint. The information is also displayed on SHOW WATCH:
DBG> SET WATCH I
%DEBUG-I-WPTTRACE, non-static watchpoint, tracing every instruction
DBG> SHOW WATCH
watchpoint of EIGHTQUEENS\TRYCOL\I [tracing every instruction]
The watchpoint then operates like any other watchpoint, e.g:
DBG> GO
watch of EIGHTQUEENS\TRYCOL\I at EIGHTQUEENS\TRYCOL\%LINE 46
46: i := i + 1 ;
old value: 0
new value: 1
Since you are watching a variable local to a routine, the
watchpoint is automatically cancelled when you return from the
routine:
DBG> STEP/RETURN
stepped on return from routine EIGHTQUEENS\TRYCOL
59: end ; (* trycol *)
DBG> STEP
stepped to EIGHTQUEENS\%LINE 69
69: writeln ;
%DEBUG-I-WATCHVAR, watched variable TRYCOL\I has gone out of scope
%DEBUG-I-WATCHCAN, watchpoint now cancelled
For a recursive routine, it is possible to have separate
watchpoints for the same variable at different levels of
recursion. For example, in the above example, if TRYCOL was
recursive, you could have watchpoints of TRYCOL 0\I, TRYCOL 1\I,
and so on.
For more information see the help on SET WATCH, subtopics
/STATIC, /NOSTATIC, /INTO, and /OVER.
Step-Exception-Break
Prior to version 4.6, the debugger would not allow you to STEP
from an exception break. Now, the STEP command is allowed in
this situation, and the effect is that you step to the start of
whatever exception handler gets control. If you have not
declared any exception handlers, then the exception is just
resignalled, and you end up back at the debugger prompt (that is,
the STEP has no effect). Here is an example:
Earlier versions of DEBUG:
DBG> SET BREAK/EXC
DBG> GO
%SYSTEM-F-ACCVIO, access violation, ...
break on exception preceding BLIHANDLER\SUBR\%LINE 38
38: a = ..a;
DBG> STEP
%DEBUG-W-STEFROEXC, step from exception break is not allowed
Version 4.6:
DBG> SET BREAK/EXC
DBG> GO
%SYSTEM-F-ACCVIO, access violation...
break on exception preceding BLIHANDLER\SUBR\%LINE 38
38: a = ..a;
DBG> EX .FP ! Check for a handler
7FF00D68: 00000400
DBG> EX .. ! See what the handler is
BLIHANDLER\HANDLER1: entry mask ^M<R2,R3>
DBG> STEP ! STEP to the handler
stepped to routine BLIHANDLER\HANDLER1
V5.0
The new features and commands for V5.0 of the debugger are as
follows:
Dynamically reformatting register display
EXAMINE/OPERANDS (and SET MODE [NO]OPERANDS)
MACRO support enhancements
New predefined windows for screen mode
SET MODULE/CALLS
SET PROMPT/[NO]POP
SET MODE [NO]SEPARATE
SPAWN/INPUT and /OUTPUT
See the subtopics for details.
Additional information available:
Dynamic Register DisplayEXAMINE OPERANDS QualifierMACRO Support
Screen Mode WindowsSET MODULE CALLS QualifierSPAWN qualifiers
Dynamic Register Display
Register displays, such as the predefined display REG, are now
dynamic by default. This means that the window dimensions adjust
proportionally when you change the screen height or width with a
SET TERMINAL command.
Also, a register display now reformats the displayed information,
in the best way possible, to the window in which it has been
displayed. The default window for REG remains RH1. However, if
you were to display REG in window Q3, for example, the
information would reformat automatically to fit into the new
window.
Type HELP Screen_Features Register_Display for more information.
EXAMINE OPERANDS Qualifier
In order to aid in debugging MACRO code, a /OPERANDS qualifier
has been added to the EXAMINE command. If you examine an
instruction with the /OPERANDS qualifier, then the debugger
displays the addresses and contents of each of the instruction
operands. For example,
DBG> EXAM/OPER .PC
X\X$START+0C: MOVL B^04(R4),R7
B^04(R4) X\X$START\K (address 00001058) contains 00000016
R7 R7 contains 00000000
Type HELP EXAMINE/OPERANDS, SET MODE OPERANDS, and SET MODE
NOOPERANDS for more information.
MACRO Support
The following enhancements have been made to MACRO support, to
match the support available with other languages.
The debugger now displays MACRO source lines, whether you are
debugging in line mode or screen mode.
Therefore, when the language is set to MACRO, the default
behavior of the STEP command is now STEP/LINE (not
STEP/INSTRUCTION, the previous behavior).
When the language is set to MACRO, the debugger interprets an
address expression used in a language expression as the current
value stored at that address (not the address denoted by the
address expression, the previous behavior). This change affects
how language expressions are evaluated by the commands EVALUATE,
DEPOSIT, IF, FOR, REPEAT, and WHILE, and by WHEN clauses as used
with the commands SET BREAK, SET TRACE, and SET WATCH. For
example, the command DEPOSIT X = Y + 2 evaluates the sum of 2 and
the current value of Y and deposits the resulting value into X.
See also HELP LANGUAGE MACRO EXPRESSIONS for a description of
additional enhancements.
Screen Mode Windows
The predefined windows now include eighths of the screen height,
in addition to halves, thirds, quarters, and sixths, plus the
right and left halves. The letter "E" denotes an eighth. For
example, E2 denotes the top second eighth of the screen, and RE67
denotes the right sixth and seventh eighths of the screen.
SET MODULE CALLS Qualifier
SET MODULE/CALLS sets all the modules that currently have
routines on the call stack. These are the modules that are
listed when you enter a SHOW CALLS command. You would use the
/CALLS qualifier to set modules that might not have been
dynamically set by the debugger.
SET_MODE_SEPARATE
The SET MODE [NO]SEPARATE command applies only to VAXstations.
Before V5.0, if you invoked the debugger on a VAXstation, a
separate window was created for debugger input and output.
Starting with V5.0 you have control over this behavior. The
command SET MODE SEPARATE creates a separate window for debugger
input and output. The effect is as if you had defined DBG$INPUT
and DBG$OUTPUT to point to the newly created window. The command
SET MODE NOSEPARATE disables this behavior, so that debugger
input and output are displayed in the window where you invoked
the debugger.
Type HELP SET MODE SEPARATE and SET MODE NOSEPARATE for more
information. Also type HELP SET PROMPT/POP and SET PROMPT/NOPOP
(a related feature).
SET_PROMPT
The SET PROMPT command has a new qualifier "/[NO]POP". This
qualifier applies only to VAXstations.
Before V5.0, if you were running the debugger in an emulated
terminal window on a VAXstation, the window popped over other
windows and attached to the keyboard whenever the debugger
prompted for input.
Starting with V5.0 you have control over this behavior. The
command SET PROMPT/POP enables this behavior. The command SET
PROMPT/NOPOP (which is the default) disables this behavior, so
that the debugger window does not automatically pop over other
windows and does not attach to the keyboard when the debugger
prompts for input.
If you enter the SET PROMPT command without specifying a new
prompt string, the prompt string is unchanged. If you enter the
command without the /[NO]POP qualifier, the prompt behavior is
set to /NOPOP, which is the default.
Type HELP SET PROMPT/POP for more information. Also type HELP
SET MODE SEPARATE and SET MODE NOSEPARATE (a related feature).
SPAWN qualifiers
Two new qualifiers have been added to the SPAWN command.
The /INPUT qualifier specifies an input file containing one or
more DCL commands to be executed by the spawned subprocess.
The /OUTPUT qualifier causes the output from the SPAWN operation
be written to the specified file.
Type HELP SPAWN/INPUT and SPAWN/OUTPUT for more information.
V5.2
The new features for Version V5.2 of the debugger are as follows:
1. The debugger is now available in a DECwindows
(direct-manipulation) interface for workstations. You can
use the debugger's command interface from the DECwindows
interface by opening a command window (box). See the V5.2
VMS Debugger Manual for information about the DECwindows
interface.
2. You can now use the debugger in two configurations, default
or multiprocess, depending on the definition of the logical
name DBG$PROCESS. Use the default configuration to debug
programs that run in one process (Default_Configuration
topic). Use the multiprocess configuration to debug programs
that run normally in more than one process
(Multiprocess_Configuration topic).
The Compatibility topic explains the use of commands and
other features in the default and multiprocess
configurations.
3. You can now selectively display and cancel user-defined and
predefined breakpoints and tracepoints (Breakpoints topic).
4. The DISPLAY command now enables you to create a new display,
in addition to modifying an existing display (type HELP
DISPLAY).
5. The SET SCOPE command has a new /CURRENT qualifier (type HELP
SET SCOPE).
Type HELP Release_Notes V5.2 for more information about this
release. In addition, type HELP Multiprocess for an overview of
multiprocess debugging, and type HELP Debugging_Configurations
for a discussion of the two configurations.
Additional information available:
BreakpointsCompatibilityDefault ConfigurationMultiprocess Configuration
Breakpoints
The SHOW BREAK and SHOW TRACE commands now have /PREDEFINED and
/USER qualifiers. By default, the SHOW BREAK and SHOW TRACE
commands display both user defined and predefined breakpoints and
tracepoints, respectively. /USER displays only the user defined
breakpoints or tracepoints. /PREDEFINED displays only the
predefined breakpoints or tracepoints.
The CANCEL BREAK, CANCEL TRACE, and CANCEL ALL commands now have
/PREDEFINED and /USER qualifiers. By default, the CANCEL BREAK,
CANCEL TRACE, and CANCEL ALL commands cancel only any user
defined breakpoints and tracepoints. /PREDEFINED cancels only
predefined breakpoints and tracepoints. /USER/PREDEFINED cancels
both user defined and predefined breakpoints and tracepoints.
See the command descriptions for complete information.
Compatibility
All of the commands, qualifiers, and built-in symbols that are
provided for multiprocess debugging are also supported in the
default debugging configuration and have analogous behaviors
(where applicable). For example:
1. The EXIT command without a parameter specified ends a
debugging session in both configurations.
2. A DO command without the /PROCESS qualifier executes the
commands specified in all processes.
3. In the default configuration, the "visible" process is the
process that runs the entire program, and it is identified as
process 1 in a SHOW PROCESS display.
4. Built-in symbols such as %PROCESS_NUMBER and %VISIBLE_PROCESS
are interpreted correctly in the default configuration.
This compatibility is especially useful in that command
procedures used for multiprocess debugging can also be used for
debugging programs that run in only one process.
Default Configuration
The default debugging configuration, like the V5.0 or earlier
debugger, is used to debug programs that run in only one process.
The default configuration is established when the logical name
DBG$PROCESS is either undefined or has the value DEFAULT.
Differences between the default configuration and the V5.0 or
earlier debugger are described in the subtopics.
Additional information available:
CTRL C and CTRL YTwo-Process Debugger
CTRL C and CTRL Y
To interrupt program execution or the execution of a debugger
command from within a debugging session, you must now use CTRL/C
rather than CTRL/Y. Using CTRL/C enables you to abort these
operations without exiting the debugger (the debugger prompt is
displayed after you enter CTRL/C).
If your program already has a CTRL/C AST routine enabled, use the
SET ABORT_KEY command to reassign the abort function to another
control-key sequence. The SHOW ABORT_KEY identifies the CTRL-key
sequence that is currently assigned the abort function.
As with previous versions of the debugger, you can use the
sequence CTRL/Y - DEBUG to interrupt a program running without
debugger control and then invoke the debugger. Do not use CTRL/Y
for other purposes when using the debugger.
See the HELP topics CTRL_C, CTRL_Y, and (SET, SHOW) ABORT_KEY for
more information.
Two-Process Debugger
In VMS V5.0 or earlier versions, the debugger and the program
being debugged ran in the same process. Starting with this
version, the debugger consists of two parts (main and kernel
debuggers). In the default debugging configuration, the program
being debugged runs in one process along with the kernel
debugger. The main debugger runs in a subprocess.
The new default configuration provides the following advantages
over previous versions of the debugger. The main debugger, which
contains most of the debugger code, and the program run entirely
in separate processes, with very little interference. Another
advantage is the ability to abort commands or program execution
without leaving a debugging session (see the CTRL_C subtopic).
Type HELP Debugging_Configurations for more information on the
default and multiprocess configurations.
Multiprocess Configuration
The multiprocess debugging configuration, which is new with this
version of the debugger, enables you to debug programs whose
images run in several processes. The multiprocess configuration
is established when the logical name DBG$PROCESS has the value
MULTIPROCESS.
The multiprocess configuration enables you to do the following:
1. Display detailed information about processes and the images
running in those processes (SHOW PROCESS).
2. Set the debugging context to a particular process (which then
becomes the visible process). This enables you to set
breakpoints, examine variables, display the call stack, and
so on in the context of that process (SET PROCESS/[VISIBLE]).
3. Execute commands in the context of selected processes, which
may be other than the visible process (DO).
4. Keep selected processes from executing when you start the
execution of the other processes (SET PROCESS/[NO]HOLD).
5. Control whether execution is interrupted in other processes
when it is suspended in some process (SET MODE NOINTERRUPT).
6. Terminate selected processes (EXIT, QUIT).
7. Bring a spawned process that is waiting to connect to the
debugger under debugger control. Interrupt an image that is
running without debugger control in some process and bring
that process under debugger control (CONNECT).
8. Set and cancel breakpoints and tracepoints to trigger
automatically when processes come under debugger control (SET
(BREAK,TRACE) /ACTIVATING, CANCEL (BREAK,TRACE) /ACTIVATING.)
9. Set and cancel breakpoints and tracepoints to trigger
automatically when processes perform an image exit (SET
(BREAK,TRACE) /TERMINATING, CANCEL (BREAK,TRACE)
/TERMINATING).
10. Enable and disable convenience features to help you identify
the process that is the current debugging context (the
visible process) and its associated input/output:
o Dynamic process setting (SET PROCESS/DYNAMIC). This
feature is enabled by default.
o Dynamic prompt setting (SET PROMPT/SUFFIX). This feature
is enabled by default.
11. Create process-specific screen-mode displays (SET
DISPLAY/PROCESS, DISPLAY/PROCESS, plus /SUFFIX qualifier for
display names). Several keypad key sequences are now
associated with process-specific displays. Type the
following command for information about new and changed key
definitions:
DBG> HELP Release_Notes V5.2 Keypad
12. Set watchpoints in global sections -- that is, in regions of
memory that are shared among all processes of a multiprocess
program. Such watchpoints are triggered whenever any process
changes the value at the watched location.
The following are the new and modified commands and qualifiers
that are specific to multiprocess debugging.
CONNECT
DEFINE/PROCESS_GROUP
DISPLAY, SET DISPLAY
/[NO]PROCESS=
/SUFFIX=
DO
EXIT, QUIT
(SET,CANCEL) BREAK
/ACTIVATING
/TERMINATING
(SET,CANCEL) TRACE
/ACTIVATING
/TERMINATING
SET MODE [NO]INTERRUPT
(SET,SHOW) PROCESS
SET PROMPT
/[NO]SUFFIX=keyword
Pathnames
If you have multiple symbols with the same name, you may need to
use pathnames to disambiguate symbol references. For example,
you may have a variable X in procedure A, another variable X in
procedure B which is nested in procedure A, and still another
variable X in procedure C. If you say:
DBG> EXAMINE X
then the debugger attempts to resolve which X you mean, based on
your current PC. If it cannot do so, it gives the error message:
%DEBUG-W-NOUNIQUE, X is not unique.
In this case, you can specify which X you want using pathnames:
DBG> EXAMINE A\X
DBG> EXAMINE A\B\X
DBG> EXAMINE C\X
Also see the help on "SET SCOPE".
QUIT
The QUIT command ends a debugging session, or terminates one or
more processes of a multiprocess program.
If used within a command procedure or DO clause and no process is
specified, the QUIT command exits the command procedure or DO
clause at that point.
The QUIT command is like the EXIT command, except that QUIT does
not cause your program to execute and, therefore, does not
execute any user-declared exit handlers in your program.
Format:
QUIT [process-spec[, . . . ]]
Additional information available:
Ending Debugging SessionExiting Command ProceduresTerminating Processes
ExamplesParameters
Ending Debugging Session
To end a debugging session, enter the QUIT command at the
debugger prompt without specifying any parameters. This causes
orderly termination of the session: the debugger exit handler is
executed (closing log files, restoring the screen and keypad
states, and so on), and control is returned to the command
interpreter. You cannot then continue to debug your program by
entering the DCL commands DEBUG or CONTINUE. To restart the
debugger, you must run the program again.
Exiting Command Procedures
When the debugger executes a QUIT command (without any
parameters) in a command procedure, control returns to the
command stream that invoked the command procedure. A command
stream can be the terminal, an outer (containing) command
procedure, or a DO clause in a command or screen display
definition. For example, if the command procedure was invoked
from within a DO clause, control returns to that DO clause, where
the debugger executes the next command (if any remain in the
command sequence).
When the debugger executes a QUIT command (without any
parameters) in a DO clause, it ignores any remaining commands in
that clause and displays its prompt.
Terminating Processes
If you are using the multiprocess debugging configuration to
debug a multiprocess program (if the logical name DBG$PROCESS has
the value MULTIPROCESS), you can use the QUIT command to
terminate selected processes without ending the debugging
session. The same techniques and behavior apply, whether you
enter the QUIT command at the prompt or use it within a command
procedure or DO clause.
To terminate one or more processes, enter the QUIT command,
specifying these processes as parameters. This causes orderly
termination of the images in these processes without executing
any user-declared exit handlers associated with these images.
Subsequently, the specified processes are no longer identified in
a SHOW PROCESS/ALL display.
In contrast to the EXIT command, the QUIT command does not cause
any process to start execution.
Examples
1 DBG> QUIT
$
This command, when entered from the prompt, ends the debugging
session and returns you to DCL command level.
2 JONES_1> QUIT %NEXT_PROCESS, %PROCESS_NAME JONES_3, %PROC 5
JONES_1>
This command causes orderly termination of three processes of a
multiprocess program: the next process after the visible process
on the process list, process JONES_3, and process 5. Control is
returned to the debugger after the specified processes have
exited.
Parameters
process-spec
Note: This parameter applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS).
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.
%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 (*)
You can also use the asterisk wilcard character (*) to specify
all processes.
Release Notes
Additional information available:
V4.2
This section notes any incompatible changes that have been made
for version 4.2 of the debugger that you should be aware of.
New features in version 4.2 are listed seperately, under "HELP
New_features".
Additional information available:
Register WindowsMacro-defaultsBasic-defaults
Register Windows
In version 4.0 of the debugger, the register display occupied 5
lines of the screen. Special windows were invented to accomodate
a display of this size, and these were named R1, R2, R3, R12, and
R23.
For version 4.2 of the debugger, the register display has been
squeezed down to occupy just four lines. This was done by making
more efficient use of space and also by removing the translation
of R0 as an error message. (The translation of R0 can still be
obtained by doing EXAMINE/CONDITION R0).
Now that the register display occupies 4 lines, it fits in the
standard windows Q1, Q2, Q3, and Q4 (one quarter of the screen).
So the special purpose windows R1, R2, and R3 have been dropped.
If you refer to them in any command files, you should change your
command file to use one of the "Q" (quarter) displays instead.
Example:
old DBG$INIT file:
DISPLAY REG AT R1
DISPLAY OUT AT R23
new DBG$INIT file:
DISPLAY REG AT Q1
DISPLAY OUT AT Q234
Macro-defaults
In version 4.0, the screen default for MACRO was to display the
registers on the top of the screen, and the output display in the
rest of the screen. Because of the addition of the instruction
display in version 4.2, this default was changed to be the
assembly language instructions (INST display) in H1 and the
output display in H2. This make the MACRO default closer to the
rest of the languages.
If you want to display the registers for MACRO, you now need to
specify that in a DISPLAY command. For example, the following
puts the registers in the top quarter and the assembly
instructions in the second quarter:
DBG> DISPLAY REG AT Q1
DBG> DISPLAY INST AT Q2
Basic-defaults
In version 4.0, the screen-mode defaults for language BASIC were
the same as for language MACRO. This was because, at that time,
the BASIC compiler was not generating the symbol table records
needed to do source display.
With version 2.4 of BASIC, source display is available for that
language. So the screen mode default for BASIC has been changed
to be the source display in the top half of the screen, and the
output display in the bottom half of the screen (the same as for
the other high-level languages).
V4.4
This section notes any known bugs that could not be fixed in time
for the version 4.4 release. Also noted are any incompatible
changes that have been made for Version 4.4 of the debugger that
you should be aware of. New features are listed separately under
HELP New_Features.
Additional information available:
Key DefinitionsRegister DisplayScreen ManagementShareable Images
VAXstationsWindow Definitions
Key Definitions
The default definitions for keypad keys KP7 and MINUS have been
changed to accommodate changes in predefined display and window
definitions. The new definitions are as follows:
KP7 = DISPLAY SRC AT LH1, INST AT RH1, OUT AT S45,PROMPT AT S6
GOLD KP7 = DISPLAY INST AT H1, OUT AT S45, PROMPT AT S6
BLUE KP7 = Not defined
MINUS = DISPLAY %NEXTDISP AT S12345
GOLD MINUS = Not defined
BLUE MINUS = DISPLAY SRC AT H1, OUT AT S45, PROMPT AT S6
Type "HELP New_Features V4.4 Window_Definitions" for more
information on the new window definitions.
Register Display
The screen mode register display (REG) has been reformatted to
take advantage of the new window capabilities. REG is now a
square display that fits in one of the quarters of the screen
(for example, the top left-hand window LH1 or the top right-hand
window RH1). If your debugger initialization file had a command
like
DBG> DISPLAY REG AT Q3
then you may want to change it to something like
DBG> DISPLAY REG AT RH1
to accommodate the re-shaped register display.
Screen Management
In version 4.4 the debugger uses the SMG screen package to
implement its screen mode. If your program also calls SMG
routines, and you debug it with the debugger running on the same
terminal, then there probably will be interference between your
program and the debugger.
Our recommended solution is to debug the program using two
terminals. For a description of how to do this, see Chapter 8 of
the VMS Debugger Manual.
Shareable Images
Support for debugging shareable images is new in version 4.4 of
the debugger and is described under "New_Features". There is one
restriction you should be aware of when debugging shareable
images. The shareable image must have been linked with the
/DEBUG qualifier in order for shareable image debugging to work.
If the image was not linked with the /DEBUG qualifier, then the
debugger may allow you to SET IMAGE to that image but then it may
show you incorrect results.
In summary:
$ LINK/SHARE/DEBUG X can SET IMAGE, everything OK
$ LINK/SHARE X can SET IMAGE, get incorrect results
$ LINK/SHARE/NOTRACE X cannot SET IMAGE
VAXstations
In version 4.4, the debugger comes up in its own window when you
run it on the VAXstation.
There is a problem with control-Y handling when the debugger is
running in its own VAXstation window. The control-Y is ignored
when the keyboard is attached to the debugger window. To make
the control-Y take effect you must attach the keyboard to the
original window (by pointing at it with the mouse), and then type
the control-Y.
We expect to fix this problem in a future release.
Window Definitions
If you use predefined windows such as H2 in your initialization
file or in your own command or key definitions then you should be
aware of the following changes.
Changes to display window definitions and the addition of a
PROMPT predefined display have caused some incompatibilities with
earlier versions of the debugger.
Previously, the bottom sixth of the screen (lines 21-24) on a
VT100 or VT200 series terminal) could not be used for defining
display windows. That area was reserved for the debugger prompt,
debugger input, debugger diagnostic messages, and program output.
Now, display windows can occupy any part of the screen, and a new
predefined PROMPT display shows the debugger prompt, debugger
input, and program output.
The boundaries of the default windows have been redefined to
cover the greater usable screen height. For example, on a VT100
or VT200 series terminal, FS (full screen) now covers lines 1-24,
H1 lines 1-12, H2 lines 13-24, and so on. A new symbol prefix,
S, denotes a multiple of one sixth of the screen. For example,
S56 is the bottom two sixths of the screen. (There are other new
predefined windows that occupy only the left or right halves of
the screen. Type "HELP New_Features V4.4
Vertically_Divided_Windows".)
The PROMPT display occupies S6 by default, but can be moved
elsewhere, like any display. Note that, to avoid confusion, the
PROMPT display is always on top of the display "pasteboard" and
therefore hides the part of any display that overlaps the PROMPT
window.
By default, the OUT display is now at S45 (not, as previously, at
H2), so it is not hidden by the PROMPT display. And the keypad
keys that manipulate display windows have been redefined so that
no display is positioned behind S6 (Type "HELP Release_Notes V4.4
Key_Definitions"). If your debugger initialization file contains
DISPLAY or SET DISPLAY commands to locate displays near the
bottom of the screen (for example, at H2, T3, or Q34) you may
want to modify these window definitions so the displays are not
hidden.
Type "HELP New_Features V4.4 Window_Definitions" for more
information on the new window definitions.
V4.6
This section notes any known bugs that could not be fixed in time
for the version 4.6 release. Also noted are any incompatible
changes that have been made for Version 4.6 of the debugger that
you should be aware of. New features are listed separately under
HELP New_Features.
Additional information available:
SET IMAGE CommandSET SCOPE CommandVAXstation support
SET IMAGE Command
When you enter a SET IMAGE command, if you specify a list of
images, only the last image in the list is set. For example:
SET IMAGE A,B,C
In this example, only image C is set. Note that you can set
images A, B, and C by issuing separate SET IMAGE commands for
each image.
SET SCOPE Command
Before issuing a SET SCOPE command, be sure that the module that
contains the elements named in the path name has already been
set, either dynamically by the debugger or by means of a SET
MODULE command. Use the SHOW MODULE command to determine whether
a module is set --- that is, whether its symbols have been loaded
into the run-time symbol table.
VAXstation support
Previously, if the debugger detected that it was running on a
VAXstation, it would create a separate emulated terminal window
for its own input and output. This meant that terminal I/O
performed by the program was logically and physically separated
from DEBUG's I/O, particularly helpful when debugging screen mode
applications.
In order to remove a potential problem on the VAXstation, the
method DEBUG uses to control the separate window has been
changed. Previously, DEBUG controlled the separate window with
UIS$xxx calls. The debugger now uses the new OSC sequences to
communicate control functions to the terminal emulator.
With this update, DEBUG's behavior is slightly different. It
still creates a separate window, but only if both of the
following two conditions are met:
o You must be running the SDC release of VWS V3.0 (or higher).
o You must have the following system logical name defined:
$ DEFINE/SYSTEM/EXEC UIS$VT_ENABLE_OSC_STRINGS TRUE
V5.0
This section notes the following:
o Any known bugs that could not be fixed in time for Version
5.0.
o Any incompatible changes that have been made for Version 5.0.
o Any problems indicated in previous release notes that have
been corrected for Version 5.0.
New features are listed separately under HELP New_Features.
Additional information available:
Corrected ProblemsDynamic Register DisplayMACRO SupportObsolete Commands
Screen Mode Line WrappingVAXstation DEBUG Separate Window Control
Corrected Problems
Problems with the SET IMAGE and SET SCOPE commands that were
noted in the V4.6 release notes have been corrected (type HELP
RELEASE_NOTES V4.6 for a full description of the problems).
Before Version 5.0, when you specified a list of images with the
SET IMAGE command, only the last image specified was set. Now,
all of the specified images are set. As before, the current
image is the last image in the list (the last image set).
Previously, before issuing a SET SCOPE command, you had to be
sure that the module containing the path-name elements specified
in the SET SCOPE command was set. Now, if that module is not
already set, the SET SCOPE command automatically sets it for you.
Dynamic Register Display
Register displays, such as the predefined display REG, are now
dynamic by default. This means that the window dimensions adjust
proportionally when you change the screen height or width with a
SET TERMINAL command.
Also, a register display now reformats the displayed information,
in the best way possible, to the window in which it has been
displayed. The default window for REG remains RH1. However, if
you were to display REG in window Q3, for example, the
information would reformat automatically to fit into the new
window.
Type HELP Screen_Features Register_Display for more information.
MACRO Support
Several enhancements have been made to MACRO support for Version
5.0, to match the support available with other languages (type
HELP New_Features for more information). Some of these
enhancements result in different behavior from previous versions
of the debugger.
When the language is set to MACRO, the default behavior of the
STEP command is now STEP/LINE (not STEP/INSTRUCTION, the previous
behavior). This change was made possible because source line
display is now available for MACRO programs.
When the language is set to MACRO, the debugger interprets an
address expression used in a language expression as the current
value stored at that address (not the address denoted by the
address expression, the previous behavior). This change affects
how language expressions are evaluated by the commands EVALUATE,
DEPOSIT, IF, FOR, REPEAT, and WHILE, and by WHEN clauses as used
with the commands SET BREAK, SET TRACE, and SET WATCH. For
example, the command DEPOSIT X = Y + 2 evaluates the sum of 2 and
the current value of Y and deposits the resulting value into X.
Previously, that command evaluated the sum of 2 and the address
of Y and deposited the resulting value into X.
As before, you can obtain the address of an address expression by
means of the EVALUATE/ADDRESS command.
Obsolete Commands
The following commands and command qualifiers are obsolete
starting with VMS Version 5.0 and are no longer documented, for
the reasons stated. For compatibility with previous versions,
these commands and qualifiers will be supported indefinitely
except as indicated.
ALLOCATE
The debugger now allocates and deallocates memory automatically.
This command now has no effect.
CANCEL EXCEPTION BREAK
This command duplicates the effect of the newer command CANCEL
BREAK/EXCEPTION, which better conforms to the general command
format for canceling breakpoints.
SET EXCEPTION BREAK
This command duplicates the effect of the newer command SET
BREAK/EXCEPTION, which better conforms to the general command
format for setting breakpoints.
SET MODULE/ALLOCATE
The debugger now allocates and deallocates memory automatically.
This qualifier now has no effect.
UNDEFINE
This command duplicates the effect of the newer command DELETE,
which conforms to the analogous DCL command DELETE.
UNDEFINE/KEY
This command duplicates the effect of the newer command
DELETE/KEY, which conforms to the anologous DCL command
DELETE/KEY.
Screen Mode Line Wrapping
The change described affects how very long lines of debugger
output are presented in the OUTPUT display or in a DO display ---
for example, when you enter an EXAMINE command to examine long
ASCII strings.
Before Version 5.0, the debugger wrapped text in the OUTPUT
display or in a DO display if the text was longer than the width
of the terminal, regardless of the width of the display window.
The debugger now wraps text in these displays only if it exceeds
255 characters. If there is any text beyond the right edge of
the display window, a diamond-shaped character (or a question
mark for terminals that do not support the diamond character)
appears at the right edge. This indication is analogous to the
behavior of a text editor.
To see the hidden text, enter the SCROLL/RIGHT command (or press
keypad-key 6 repeatedly, as needed).
VAXstation DEBUG Separate Window Control
This note applies only to VAXstations.
The default behavior of the debugger on VAXstations has changed.
With the addition of the SET MODE [NO]SEPARATE command, a
separate window for debugger input and output is no longer
created by default when you invoke the debugger. You can now
control the creation of the separate window. Type HELP
New_Features V5.0 SET_MODE_SEPARATE and HELP SET MODE SEPARATE
for more information.
With the addition of the /[NO]POP qualifier to the SET PROMPT
command, the debugger window no longer pops and attaches to the
keyboard by default when the debugger prompts for input. You can
now control this behavior. Type HELP New_Features V5.0 SET
PROMPT and HELP SET PROMPT/POP for more information.
If you enter the SET PROMPT command without specifying a new
prompt string, the prompt string is unchanged. If you enter the
command without the /[NO]POP qualifier, the prompt behavior is
set to /NOPOP, which is the default.
The default behavior in V4.4, 4.5, and 4.6 was to pop the window
and attach it to the keyboard.
To achieve the previous behavior, you can put the following
commands in your DBG$INIT file:
SET MODE SEPARATE
SET PROMPT/POP
V5.2
Type HELP New_Features V5.2 for a summary description of all new
features for this release of the debugger. The release notes
describe the following topics:
o Changes from single-process to two-process (default) and
multiprocess debugging configurations (Two_Process_Debugger
topic)
o Use of the single-process debugging configuration (used in
previous VMS versions) in certain cases
(Single_Process_Debugger topic)
o Changes in the use of CTRL/Y and CTRL/C (CTRLY_CTRLC topic)
o Changes to the debugger keypad key definitions (Keypad topic)
o Restrictions on using the abort key (CTRL/C, by default)
after a SPAWN command (Abort_After_Spawn topic)
o Restrictions on using debugger commands in DCL command
procedures (DCL_Command_Procedures topic)
o System management considerations for using the debugger
(System_Management topic)
Note that these release notes do not include any information that
might be specific to the debugger's DECwindows interface. See
the VMS Version 5.2 Release Notes for complete information.
Additional information available:
Two Process DebuggerSingle Process DebuggerKeypadAbort After Spawn
DCL Command ProceduresSystem Management
Two Process Debugger
Before VMS Version 5.2, you could use the debugger only with one-
process programs. The debugger and the program being debugged
ran in the same process. This debugging configuration is
referred to as the single-process configuration in these release
notes.
Starting with VMS Version 5.2, you can use the debugger with
multiprocess programs (programs that run in more than one
process). To accommodate this and other new capabilities, such
as the DECwindows interface, the debugger now consists of two
parts that run in separate processes: A relatively small kernel
debugger image (DEBUG.EXE) and a larger main debugger image
(DEBUGSHR.EXE) which contains most of the debugger code.
This separation reduces potential interference between the
debugger and the program being debugged. The separation also
makes it possible to have two debugging configurations-default
and multiprocess:
o When you use the debugger with a one-process program, the
kernel debugger runs in one process along with the program
and the main debugger runs in a subprocess. This two-process
debugging configuration is the default configuration. It
results when the logical name DBG$PROCESS is either undefined
or has the value DEFAULT.
o When you use the debugger with a multiprocess program, a
kernel debugger runs in each process of the program, and the
main debugger runs in a subprocess. The multiprocess
configuration, which results when the logical name
DBG$PROCESS has the value MULTIPROCESS, enables one main
debugger to communicate with several kernel debuggers in the
same VMS job tree.
Type HELP Debugging_Configurations for more information.
Single Process Debugger
When you invoke the VMS Version 5.2 debugger, if a separate
process cannot be created to run the main debugger image, the
debugger issues one or more messages and automatically uses the
single-process configuration (the V5.0 and earlier configuration,
where the debugger shares a single process with the user
program). For example, if quotas are not sufficient to create a
subprocess for the main debugger, the messages are as follows:
%DEBUG-E-CANTCREATEMAIN, could not create the VAX DEBUG subprocess
-SYSTEM-F-EXQUOTA, exceeded quota
%DEBUG-I-SHRPRC, VAX DEBUG will share user process
In the single-process configuration, you can use the debugger to
debug a program that normally runs in only one process. However,
you cannot use the additional debugger features that are
available with VMS Version 5.2:
o You cannot use the multiprocess debugging configuration
o You cannot use the debugger's DECwindows interface
o You do not have the benefit of reduced interference between
the debugger and the program being debugged
In the single-process configuration, use the sequence CTRL/Y-
DEBUG to abort a debugger command or program execution from
within a debugging session. CTRL/Y returns you to DCL level.
The DCL command DEBUG invokes the debugger, which then displays
its prompt. You cannot use the SET ABORT_KEY command to reassign
the abort function to another CTRL-key sequence.
The single-process configuration avoids the restrictions on VMS
Version 5.2 with respect to use of the abort key after a SPAWN
command and use of debugger commands in DCL command procedures
(see the Release_Notes V5.2 topics Abort_After_Spawn and
DCL_Command_Procedures).
If you wish to use the single-process debugging configuration
because it avoids these restrictions, you can do so by making the
following logical name assignment before invoking the debugger:
$ DEFINE DBG$PROCESS NONE
NOTE:
Use the single-process configuration (established when the
definition of DBG$PROCESS is NONE) only when necessary to avoid
the restrictions of the default configuration. The
single-process configuration is unsupported and may not be
available in future releases of the debugger. Please submit an
SPR if you encounter any problems using the default or
multiprocess configurations (other than those mentioned in
these release notes).
CTRLY_CTRLC
In previous versions of the debugger, you could use CTRL/Y as
follows:
o From within a debugging session, to interrupt program
execution or to abort a debugger command.
o From DCL level, to interrupt a program that is executing
freely (you then invoked the debugger by entering the DCL
DEBUG command).
You should now use CTRL/Y only from DCL level.
You should now use CTRL/C rather than CTRL/Y to abort a debugger
command or interrupt program execution from within a debugging
session.
CTRL/C aborts these operations without exiting the debugging
session (the debugger prompt is displayed after you enter
CTRL/C).
If your program already has a CTRL/C AST routine enabled, use the
new SET ABORT_KEY command to reassign the abort function to
another control-key sequence. The SHOW ABORT_KEY identifies the
CTRL-key sequence that is currently assigned the abort function.
If you use CTRL/Y from within a debugging session, the effect (as
in previous versions of the debugger ) is to interrupt the
debugging session and return control to DCL level. The effect is
the same as using CTRL/Y with any program or utility running on
VMS.
See the HELP topics CTRL_C, CTRL_Y, and (SET, SHOW) ABORT_KEY for
more information.
Keypad
The following previously unused keypad key combinations now
enable you to display process-specific source and instruction
displays: GOLD-KP9, BLUE-KP9, BLUE-KP7, BLUE-KP3, BLUE-KP1.
For symmetry, the command string that was previously assigned to
the sequence BLUE-KP3 (SELECT/SOURCE %NEXT_SOURCE) has been moved
to the previously unused sequence GOLD-COMMA.
The following table summarizes the new and changed functions.
Type HELP KEYPAD for summary information arranged in keypad
layout. To obtain complete information about the command
bindings, use the SHOW KEY command.
Use the key definitions that manipulate process-specific displays
only with multiprocess programs.
Key: State: Command_Invoked_or_Function:
COMMA GOLD SELECT/SOURCE %NEXT_SOURCE. Selects
the next source display in the display
list as the current source display.
This function was previously assigned
to KP3 in the BLUE state.
KP9 GOLD SET PROCESS/VISIBLE %NEXT_PROCESS.
Makes the next process in the process
list the visible process.
KP9 BLUE Displays two predefined process-
specific source displays, SRC_n.
These are located at Q1 and Q2,
respectively, for the visible process
and for the next process on the
process list.
KP7 BLUE Displays two sets of predefined
process-specific source and
instruction displays, SRC_n and
INST_n. These consist of source and
instruction displays for the visible
process at Q1 and RQ1, respectively,
and source and instruction displays
for the next process on the process
list at Q2 and RQ2, respectively.
KP3 BLUE Displays three predefined process-
specific source displays, SRC_n.
These are located at S1, S2, and
S3, respectively, for the previous,
current (visible), and next process on
the process list.
KP1 BLUE Displays three sets of predefined
process-specific source and
instruction displays, SRC_n and
INST_n. These consist of source and
instruction displays for the visible
process at S2 and RS2, respectively;
source and instruction displays for
the previous process on the process
list at S1 and RS1, respectively; and
source and instruction displays for
the next process on the process list
at S3 and RS3, respectively.
Abort After Spawn
If you use the SPAWN command either from DCL level or from within
a debugging session, the debugger's abort key (CTRL/C, by
default) is disabled after you log out or return from the spawned
subprocess.
The only way to re-enable the abort key or button is to log out
and log back in.
DCL Command Procedures
With previous versions of the debugger, you could use a DCL
command procedure to invoke the debugger and issue debugger
commands contained in that command procedure. For example:
$ ! Procedure to run PROG2 under debugger
$ ! control and issue debugger commands
$ !
$ RUN PROG2
SET BREAK %LINE 17
GO
EXIT
$ SHOW SYSTEM
$ LOGOUT
Starting with this version of the debugger, you can no longer put
debugger commands directly into a command procedure. Instead,
you must create a temporary file containing the debugger commands
and assign the logical name DBG$INPUT to point to that file. For
example:
$ CREATE DEBUG_COMMANDS.TMP
SET BREAK %LINE 17
GO
EXIT
<CTRL/Z>
Exit
$ DEFINE/USER DBG$INPUT DEBUG_COMMANDS.TMP
$ RUN PROG2
$ DELETE DEBUG_COMMANDS.TMP;0
$ SHOW SYSTEM
$ LOGOUT
Another workaround is to establish a single-process debugging
configuration. See the Release_Notes V5.2 Single_Process topic.
System Management
In previous versions, the debugger and the program being debugged
ran in the same process.
Starting with this version, the debugger consists of two parts
(main and kernel), to accommodate the debugging of multiprocess
programs.
Note the following changes affecting system management:
o For a program that runs in one process, a debugging session
now requires two processes instead of one.
o For a mutiprocess program, a debugging session requires as
many processes as are used by the program, plus an additional
process for the main debugger.
Under these conditions, having several users debugging programs
can place a load on a system. The additional topics describe the
resources used by the debugger so that you can tune your system
for this activity.
Note that the discussion covers only the resources used by the
debugger. In the case of multiprocess programs, the system may
need to be tuned to support the programs themselves.
Additional information available:
User Quotas
Each user needs a PRCLM quota sufficient to create an
additional subprocess for the debugger, beyond the number of
processes needed by the program.
BYTLM, ENQLM, FILLM, and PGFLQUOTA are pooled quotas. They
may need to be increased to account for the debugger
subprocess.
o Each user's ENQLM quota should be increased by at least
the number of processes being debugged.
o Each user's PGFLQUOTA may need to be increased. If a
user has an insufficient PGFLQUOTA, the debugger may fail
to activate, or produce "virtual memory exceeded" errors
during execution.
o Each user's BYTLM and FILLM quotas may need to be
increased. The debugger requires BYTLM and FILLM quotas
sufficient to open each image file being debugged, the
corresponding source files, and the debugger input,
output, and log files. The debugger command SET
MAX_SOURCE_FILES can be used to limit the number of
source files kept open by the debugger at any one time.
System Resources
The kernel and main debugger communicate through global
sections. The main debugger communicates with up to 8 kernel
debuggers through a 65-page global section. Therefore, the
SYSGEN global- page and global-section parameters (GBLPAGES
and GBLSECTIONS, respectively) may need to be increased. For
example, if there are 10 users using the debugger
simultaneously, 10 global sections using a total of 650
global pages are required by the debugger.
REPEAT
The REPEAT command provides a way of iterating a sequence of
debugger commands.
Format:
REPEAT lang-exp DO (debug-cmd-list)
Example
DBG> REPEAT 3 DO (STEP)
stepped to %LINE 2
stepped to %LINE 3
stepped to %LINE 4
Additional information available:
Parameters
lang-exp
Any expression in the currently set language that evaluates to a
positive integer.
debug-cmd-list
A single debugger command or a sequence of debugger commands
separated by semicolons.
SAVE
Saves the contents of an existing screen display in a new screen
display. This command thus permits a "snapshot" of a display to
be saved for later reference. The new display is created with
the same textual contents as the existing display. It also
inherits all other attributes of the existing display except that
it is removed from the screen and it is never automatically
updated. The saved display can later be displayed on the screen
with the DISPLAY command.
Format:
SAVE [/qualifier] old-disp AS new-disp [,old-disp AS new-disp...]
Example:
DBG> SAVE SRC AS SAVESRC ! Save away source display
DBG> STEP;STEP;STEP ! Step to another place
DBG> DISPLAY SAVESRC ! Bring back saved source display
Additional information available:
Parameters
old-disp
The name of the screen display whose contents is to be saved.
new-disp
The name of the new screen display to be created with the
contents of the old-disp display.
Qualifiers
Additional information available:
/SUFFIX[=process-identifier-type]
Note: This qualifier applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS). Use
this qualifier only directly after a display name.
Appends a process-identifying suffix to a display name. The
suffix denotes the visible process. This qualifier is used
primarily in command procedures when specifying display
definitions or key definitions that are bound to display
definitions. Use any of the following process-identifier-type
keywords:
PROCESS_NAME The display-name suffix is the VMS process name.
PROCESS_NUMBER The display-name suffix is the process number
(as shown in a SHOW PROCESS display).
PROCESS_PID The display-name suffix is the VMS process
identification number (PID).
If you specify /SUFFIX without a process-identifier- type
keyword, the process identifier type used for the display-name
suffix is, by default, the same as that used for the prompt
suffix (see SET PROMPT/SUFFIX).
Screen Features
The debugger provides a set of screen features designed to be
used on VT-series terminals and MicroVAX workstations. The
command SET MODE SCREEN enables screen mode and SET MODE NOSCREEN
disables it. In screen mode, "screen displays" can be defined
and viewed through windows on the terminal screen. A screen
display is a data structure which contains lines of text. The
text may be normal debugger output, the text of a source file, a
special register display, or a special assembly-language
instruction display. The text of a display may be viewed through
a window on the terminal screen and can be scrolled back and
forth through that window. When screen mode is first set, the
debugger provides the following predefined displays: a source
display (SRC), a debugger output display (OUT), and a special
display (PROMPT) where the debugger prompts for input.
Optionally, a register display (REG) and an instruction display
(INST) can also be displayed.
Several screen features are designed to facilitate debugging
multiprocess programs. Type HELP Multiprocess
Screen_Mode_Features for complete information.
Additional information available:
CommandsDisplay AttributesDisplay KindsExamplesInstruction Display
KeypadMoving DisplaysPredefined DisplaysPROMPT Display
Register DisplayResizing DisplaysScreen ModeScrollingSource Display
Windows
Commands
A number of commands are used to control the debugger's screen
features. They are grouped here according to their general
purpose.
Control overall operation: SET MODE SCREEN SET TERMINAL
SET MODE NOSCREEN SHOW TERMINAL
Create screen windows: SET WINDOW CANCEL WINDOW
SHOW WINDOW
Create screen displays: SET DISPLAY CANCEL DISPLAY
SHOW DISPLAY
Modify screen displays: DISPLAY SCROLL
EXPAND SELECT
MOVE SHOW SELECT
Preserve screen displays: EXTRACT SAVE
You can obtain further information on each of these commands
through HELP. The most frequently used commands are DISPLAY,
SCROLL, EXPAND and MOVE. The DISPLAY command is used to modify
the absolute position of displays on the screen, to modify
display attributes, and to refresh the screen, among other
things. The SCROLL command scrolls the text of a display through
its screen window. The EXPAND and MOVE commands modify the
relative position of displays on the screen.
The EXPAND, MOVE, and SET TERMINAL commands are especially useful
for manipulating displays on the larger screen of a MicroVAX
workstation.
Display Attributes
You can assign attributes to displays by means of the SELECT
command. The possible display attributes are:
o ERROR --- A display with the ERROR attribute displays
debugger diagnostic messages.
o INPUT --- A display with the INPUT attribute echoes your
debugger input.
o INSTRUCTION --- A display with the INSTRUCTION attribute
displays the decoded MACRO instruction stream of the module
being debugged. The keypad-key sequence BLUE-COMMA selects
the next instruction display on the display list as the
current instruction display.
o OUTPUT --- A display with the OUTPUT attribute displays
debugger output that is not already being directed to another
display (for example, diagnostic messages). The keypad-key
sequence GOLD-KP3 selects the next output display on the
display list as the current output display.
o PROGRAM --- A display with the PROGRAM attribute is the
display where program input and output are forced.
o PROMPT --- A display with the PROMPT attribute is the display
where the debugger prompts for input.
o SCROLL --- A display with the SCROLL attribute can be
scrolled with the SCROLL command (or keypad keys KP2, KP8,
KP4, and KP6). KP3 selects the next display on the display
list as the current scrolling display (except for PROMPT,
which cannot be scrolled).
o SOURCE --- A display with the SOURCE attribute displays the
source code of the module being debugged, if available. The
keypad-key sequence BLUE-KP3 selects the next source display
on the display list as the current source display.
Although a display can have more than one attribute, subject to
the kind of display it is, only one display can have a particular
attribute. That display is then known as the "current" display
with that attribute (for example, current scrolling display,
current input display).
In the following example, the display OUT is selected as the
current input, error, and scrolling display. After the command
is executed debugger input, debugger output (assuming OUT was
previously selected for output), and debugger diagnostic messages
are logged in the OUT display in the proper sequence, and OUT is
the current scrolling display:
DBG> SELECT/INPUT/ERROR/SCROLL OUT
Attributes can be assigned to the various display kinds only as
follows:
Display Kind:
DO INSTRUCTION OUTPUT PROGRAM REGISTER SOURCE
Attribute:
ERROR yes yes
INPUT yes
INSTRUCTION yes
OUTPUT yes yes
PROGRAM yes
PROMPT yes
SCROLL yes yes yes yes yes yes
SOURCE yes
You unselect one or more attributes (deassign the attribute(s))
by issuing the SELECT command with the appropriate qualifier(s)
but without specifying a display. For example, the following
command unselects the INSTRUCTION and SCROLL attributes:
DBG> SELECT/INSTRUCTION/SCROLL
After the command is executed, no display has the INSTRUCTION or
SCROLL attribute. When the ERROR, OUTPUT, or PROGRAM attribute
is unselected only the PROMPT display shows diagnostic messages,
debugger output, or program output, respectively. When the
INPUT, INSTRUCTION, SCROLL, or SOURCE attribute is unselected, no
display, including the PROMPT display, has that attribute. The
PROMPT attribute cannot be unselected.
By default, when you invoke screen mode, the predefined displays
are selected for attributes as follows:
Attribute: Predefined display:
ERROR PROMPT
INPUT
INSTRUCTION
OUTPUT OUT
PROGRAM PROMPT
PROMPT PROMPT
SCROLL SRC
SOURCE SRC
Display Kinds
There are five kinds of screen displays: output displays, source
displays, register displays, instruction displays, and program
displays (only the predefined display named PROMPT has the
display kind PROGRAM). An output display holds normal debugger
output lines up to some maximum number of lines. An output
display may also have a debugger command list which is
automatically executed to create the display text each time the
debugger gets control from the user program. A source display
displays the program's source code. The output from TYPE and
EXAMINE/SOURCE commands can be directed to a source display, and
a source display can be automatically updated through a list of
debugger commands. An instruction display is much like a source
display, except that it holds assembly language instructions
instead of source lines. The output from an EXAMINE/INSTRUCTION
command can be directed to an instruction display, and an
instruction display can be automatically updated through a list
of debugger commands. A register display shows the contents of
the VAX registers, and is automatically updated as the program
runs. The register display is primarily intended for MACRO
programmers. Except for the PROGRAM display named PROMPT,
displays of all kinds are created with the SET DISPLAY command.
They are manipulated on the screen with the DISPLAY command,
which takes a number of qualifiers.
Examples
The following command places the source display SRC in the left
top half of the screen, the instruction display INST in the right
top half, the output display OUT under these two in the fourth
and fifth sixths of the screen, and the PROMPT display in the
bottom sixth.
DBG> DISPLAY SRC AT LH1, INST AT RH1, OUT AT S45, PROMPT AT S6
The following set of commands place the register display REG at
the top of the screen, create a new display WATCHABCD in the
middle of the screen to watch variables A,B,C, and D, and place
the OUT display below these, above the PROMPT display.
DBG> DISPLAY REG AT T1
DBG> SET DISP/MARK WATCHABCD AT T2 DO (EXAMINE A,B,C,D)
DBG> DISP OUT AT S5
Instruction Display
An instruction display gives you a scrollable window into the
assembly-language instruction stream. The predefined display
INST is an instruction display which is automatically updated so
that the arrow points to the instruction at your current PC.
DISPLAY INST makes it appear. The numbers to the left of the
instructions are line numbers.
If you select the instruction display using "SELECT/INST INST"
(or, PF4-COMMA on the keypad), then output of an
EXAMINE/INSTRUCTION command is directed to the instruction
display.
If you select the instruction diplay as the scrolling display
using SELECT/SCROLL INST (or by rotating the scrolling attribute
with KP3), then you can scroll it up, down, left, or right.
Pressing keypad-key KP7 places the predefined source display SRC
in the upper left half of the screen (LH1), INST in the upper
right half of the screen (RH1), the predefined output display OUT
below these two at S45, and the PROMPT display below OUT at S6.
Pressing the combination BLUE-MINUS redisplays SRC across the
entire top half of the screen (this is the default
configuration).
Keypad
Many of the keypad keys are predefined to manipulate screen-mode
displays. For example:
KP8, KP6, KP2, and KP4 are "scroll/up", "scroll/right",
"scroll/down", and "scroll/left", respectively. The display that
is scrolled is determined by which display has the "scroll"
attribute. This attribute can be cycled through the displays
using the KP3 key.
There are a few predefined screen layouts that can be selected
with keypad keys: (1) A source display on the top half of the
screen, and an output display on most of the bottom half, above
the prompt display. This is the default layout for most
languages. The screen can always be put in this state with the
keypad key sequence BLUE-MINUS. (2) A source display in the top
left half, and instruction display in the top right half, and an
output display under these two, above the prompt display. This
can be selected with key KP7. (3) An instruction display in the
top left half, a register display in the top right half, and an
output display under these two, above the prompt display. This
can always be selected with the key sequence GOLD-KP7.
If you are debugging a multiprocess program, several key
combinations enable you to manipulate process-specific source and
instruction displays. The debugger automatically creates these
displays whenever a new process comes under debugger control.
Type HELP Multiprocess Screen_Mode_Features for complete
information.
Type HELP Keypad for diagrams identifying the keypad-key
functions.
Moving Displays
You can move a display vertically and/or horizontally across the
screen by means of the MOVE command. Type HELP MOVE for a
description of the MOVE command.
Predefined Displays
The debugger has five predefined displays which are available
when you invoke screen mode:
(1) A source display called SRC, which is automatically
positioned at your current PC, can be repositioned using the TYPE
or EXAMINE/SOURCE commands, and can be scrolled up and down using
keys KP8 and KP2. See the Source_Display subtopic for more
information.
(2) An assembly-language instruction display called INST, which
is automatically positioned at your current PC. INST is
initially removed but can be made to appear using "DISPLAY INST".
It can be selected as the scrolling display by using key KP3 to
rotate the scroll attribute to the INST display, and then
scrolled up or down using KP8 and KP2. See the
Instruction_Display subtopic for more information.
(3) A register display called REG, which is automatically updated
to show the current values of your registers. REG is initially
removed but can be made to appear with the command DISPLAY REG.
See the Register_Display subtopic for more information.
(4) An output display called OUT, where debugger output is
directed. If you want to intermix debugger input and output in
the same display, you can copy debugger input to the OUT display
with "SELECT/INPUT OUT".
(5) A prompt display called PROMPT, where the debugger prompts
for input, forces program output, and (by default) prints
debugger diagnostic messages. See the PROMPT_Display subtopic
for more information.
If you are debugging a multiprocess program, in addition to these
five displays the debugger automatically creates process-specific
source and instruction displays whenever a new process comes
under debugger control. Type HELP Multiprocess
Screen_Mode_Features for complete information.
PROMPT Display
The PROMPT predefined display is a non-scrollable display that
shows the debugger prompt, debugger input, and (by default)
program output and debugger diagnostic messages. By default,
PROMPT occupies the bottom sixth of the screen (the predefined
window S6). On a VT100 or VT200 series terminal, S6 includes
lines 21 through 24.
The PROMPT display is of the display kind "PROGRAM". PROMPT is
the only display of that kind (no other PROGRAM displays can be
created). Note that, compared to other displays, PROMPT has
several restrictions, to eliminate possible confusion when
manipulating that display:
o PROMPT can never be hidden by another display. It is always
on top of the display "pasteboard".
o PROMPT can be moved anywhere on the screen, expanded to fill
the full screen height, and shrunk down to two lines. But
PROMPT must always occupy the full width of the screen and,
therefore, can not be moved, expanded, or shrunk
horizontally.
See the Display_Attributes subtopic for information on assigning
display attributes to various displays, including the PROMPT
display.
Register Display
A register display is an automatically updated display that shows
the current values (in hexadecimal format) of all VAX machine
registers (R0 through R11), the four condition code bits (C, V,
Z, and N) of the processor status longword (PSL), and the top
several values on the stack and on the current argument list.
Values in a register display are highlighted when they change as
you execute the program.
The predefined display REG is a register display. REG is
initially marked as removed from the display pasteboard and is
not visible. You need to use the DISPLAY command (or the keypad
key sequence GOLD-7) to show the REG display. The sequence
GOLD-KP7 places the predefined instruction display INST in the
upper left half of the screen (LH1), REG in the upper right half
of the screen (RH1), the predefined output display OUT below
these two at S45, and the PROMPT display below OUT at S6.
Pressing the sequence BLUE-MINUS redisplays SRC across the entire
top half of the screen (this is the default configuration).
Like other displays, register displays are dynamic by default.
This means that the window dimensions adjust proportionally when
you change the screen height or width with a SET TERMINAL
command. In addition, if the window of a register display is
resized, the debugger automatically reformats the displayed
information to adapt to the new window size. The debugger always
displays the contents of registers R0 through R11, AP, FP, SP,
PC, and PSL. If the resized window is too small to display all
the register information, you can scroll vertically or
horizontally to view any information that may be hidden. If the
resized window is larger than necessary to display register
information, the debugger fills the remaining space with
information (in hexadecimal format) contained in the user stack.
Resizing Displays
You can expand and contract displays by means of the EXPAND
command. Type HELP EXPAND for a description of the EXPAND
command.
Screen Mode
When the debugger is invoked, five predefined displays are
created automatically. The first time you enter screen mode with
the SET MODE SCREEN command, the debugger puts three of the
displays on the screen for you: a source display (SRC) which is
automatically updated as you STEP or GO through your program, an
output display (OUT) which captures your normal debugger output,
and a prompt display (PROMPT) where the debugger prompts for your
input. The instruction display (INST) and the register display
(REG) are also created but not displayed initially. These
capture the current instruction stream and registers
respectively. Except for the PROMPT display, each display can be
scrolled back and forth with the SCROLL command. You can turn
off screen mode with the command SET MODE NOSCREEN, after which
you can use the terminal in the normal manner without the display
windows. The displays still exist, however, and can be brought
back at any time by again entering SET MODE SCREEN.
If you are debugging a multiprocess program, in addition to these
five predefined displays the debugger automatically creates
process-specific source and instruction displays whenever a new
process comes under debugger control. Type HELP Multiprocess
Screen_Mode_Features for complete information.
Scrolling
All screen displays except for the PROMPT display can be scrolled
through their screen windows by entering the SCROLL command. For
example, SCROLL/UP SRC scrolls the window up over display SRC.
To avoid having to specify the display name on your SCROLL
commands, you can select the display you want to scroll as the
"current scrolling display" with the SELECT command. Thus
SELECT/SCROLL SRC followed by SCROLL/UP causes the debugger to
scroll up through display SRC even through SRC was not explicitly
named on the SCROLL command. For more information, see the
SCROLL and SELECT commands.
Source Display
A source display gives you a scrollable window into your source
code. The predefined source display SRC has associated with it
the command "EXAMINE/SOURCE .%SOURCE_SCOPE\%PC". This command
causes the display to be automatically centered at your current
source line. The built-in symbol %SOURCE_SCOPE means scope 0
when source lines are available in scope 0. Otherwise, it means
the same as scope N, where N is the first level going down the
stack where source lines are available.
The significance of the %SOURCE_SCOPE symbol is that if your PC
value is at a location where source lines are not available (for
example, in an RTL routine), the debugger attempts to display
source lines in the caller of the current routine (that is, scope
1 or 1 level down the stack). If source lines are still not
available at that level, the debugger tries scope 2, and so on.
If the source display shows source lines that are not associated
with the current routine, an informational message to that effect
is displayed.
Pressing the keypad-key sequence BLUE-MINUS displays the
predefined displays SRC in the top half of the screen, OUT below
SRC at S45, and PROMPT at the bottom of the screen at S6. This
is the default. Pressing keypad-key KP7 places SRC in the upper
left half of the screen (LH1), the instruction display INST in
the upper right half of the screen (RH1), OUT below these two at
S45, and PROMPT below OUT at S6.
Windows
A screen window is a rectangular region on the terminal screen
defined by the four quantities (RBEG, RLEN, CBEG, CLEN). RBEG is
the line number at which the window starts and RLEN is the number
of lines of text in the window. CBEG is the column number at
which the window starts and CLEN is the number of columns (width)
of the window. If the CBEG and CLEN numbers are omitted from a
window definition then the window defaults to the full width of
the screen.
The debugger provides a number of predefined windows for regions
such as the top half of the screen, the top left quarter of the
screen, and so on. For example:
H1 = top half of screen = (1,11,1,80)
H2 = bottom half of screen = (13,11,1,80)
LH1 = top left quarter of screen = (1,11,1,40)
There are also T1, T2, and T3 for thirds of the screen, Q1
through Q4 for quarters, S1 through S6 for sixths, and E1 through
E8 for eigths. Each of these also has a "L" for left half (for
example, LQ1) and and "R" for right half (for example, RQ1). FS
denotes the full screen.
You can see all defined windows through the SHOW WINDOW command.
You can also define your own named windows with the SET WINDOW
command, or delete window names with the CANCEL WINDOW command.
Windows are specified on the DISPLAY and SET DISPLAY commands to
indicate where displays are to be shown on the terminal screen.
Example:
DBG> DISPLAY SRC AT LH1
DBG> DISPLAY INST AT RH1
DBG> DISPLAY OUT AT S4
DBG> DISPLAY PROMPT AT S56
SCROLL
Scrolls a display's screen window in a specified direction over
the text of the display. This makes additional display contents
visible. Unless the display to be scrolled is explicitly named,
the current scrolling display, as selected with a previous SELECT
command, is scrolled.
Note the use of keypad keys KP8, KP2, KP4 and KP6 for scrolling.
Also note that you can use keypad key KP3 to rotate the scrolling
attribute around the various displays.
Format:
SCROLL/qualifier [disp-name]
Examples:
DBG> SCROLL/UP ! Scroll up "--scroll--" display
DBG> SCROLL/UP OUT ! Scroll up OUT display
DBG> SCROLL/UP:1 OUT ! Scroll up OUT display by only 1 line
Additional information available:
Parameters
disp-name
The name of the screen display to be scrolled. If disp-name is
omitted, the current scrolling display, as selected by the SELECT
command, is scrolled.
Qualifiers
Additional information available:
/BOTTOM/DOWN/LEFT/RIGHT/SUFFIX/UP/TOP
/BOTTOM
Scroll down to the bottom of the display's text.
/DOWN[:n]
Scroll down through the display text by n lines to reveal text
further down in the display. If n is omitted, the display is
scrolled by approximately 3/4 of its window height.
/LEFT[:n]
Scroll left over the display text by n columns to reveal text
beyond the left margin. You cannot scroll past column 1. If n
is omitted, the display is scrolled left by 8 columns.
/RIGHT[:n]
Scroll right over the display text by n columns to reveal text
beyond the right margin. You cannot scroll past column 132. If
n is omitted, the display is scrolled right by 8 columns.
/SUFFIX[=process-identifier-type]
Note: This qualifier applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS). Use
this qualifier only directly after a display name.
Appends a process-identifying suffix to a display name. The
suffix denotes the visible process. This qualifier is used
primarily in command procedures when specifying display
definitions or key definitions that are bound to display
definitions. Use any of the following process-identifier-type
keywords:
PROCESS_NAME The display-name suffix is the VMS process name.
PROCESS_NUMBER The display-name suffix is the process number
(as shown in a SHOW PROCESS display).
PROCESS_PID The display-name suffix is the VMS process
identification number (PID).
If you specify /SUFFIX without a process-identifier- type
keyword, the process identifier type used for the display-name
suffix is, by default, the same as that used for the prompt
suffix (see SET PROMPT/SUFFIX).
/UP[:n]
Scroll up through the display text by n lines to reveal text
further up in the display. If n is omitted, the display is
scrolled by approximately 3/4 of its window height.
/TOP
Scroll up to the top of the display's text.
SEARCH
Directs the debugger to search the source code for the specified
string and to display the source line or lines containing an
occurrence of the string.
The range parameter designates a program region to be searched.
The string parameter specifies the source code characters for
which to search. If the string parameter is not specified, the
debugger uses the last specified search string, that is, the
string parameter specified in the last SEARCH command.
Format:
SEARCH[/qualifier[/qualifier]] range string
Additional information available:
Examples
To see the first occurence of string "XYZ" in module M:
DBG> SEARCH M XYZ
module M
10: XYZ := 3
To see the next occurence of string XYZ in module M:
DBG> SEARCH
module M
13: XYZ := XYZ + 1
To see all occurences of string "XYZ" in module M:
DBG> SEARCH/ALL M XYZ
module M
10: XYZ := 3
13: XYZ := XYZ + 1
Parameters
range
Limits the debugger's search for occurrences of the string to
specified program regions. These program regions may be given in
any of the specified formats (see range-format for more detail).
string
Specifies the string in the source code for which to search. The
string parameter may be enclosed in quotation marks (") or in
apostrophes ('), or may be specified without delimiters. If the
string is delimited by either quotation marks or apostrophes, it
may contain spaces and tabs, as well as any alphanumeric or
special characters.
Additional information available:
range-format
o MODNAME indicates a search of the specified module from line
number 0 to the end of the module
o MODNAME\LINE-NUM indicates a search of the specified module
from the specified line number to the end of the module
o MODNAME\LINE-NUM:LINE-NUM indicates a search of the specified
module beginning at the line number specified to the left of
the colon and ending at the line number specified to the right
of the colon
o LINE-NUM indicates a search of the module designated by the
current scope setting from the specified line number to the
end of the module
o LINE-NUM:LINE-NUM indicates a search of the module designated
by the current scope setting beginning at the line number
specified to the left of the colon and ending at the
line-number to the right of the colon
o NULL (that is, no entry) indicates a search of the same module
as that from which a source line was most recently displayed
(as a result of either a TYPE or an EXAMINE/SOURCE command),
beginning at the first line following the line most recently
displayed and continuing to the end of the module
Qualifiers
Additional information available:
/ALL
Specifies that the debugger search for all occurrences of the
string in the specified range and display every line containing
an occurrence of the string.
/IDENTIFIER
Specifies that the debugger search for an occurrence of the
string in the specified range but display the string only if it
is bounded on either side by a character that cannot be part of
an identifier in the current language.
/NEXT
Specifies that the debugger search for the first occurrence of
the string in the specified range and only display the line
containing this occurrence. This is the default.
/STRING
Specifies that the debugger search for and display the string as
specified, and not interpret the context surrounding an
occurrence of the string, as it does in the case of /IDENTIFIER.
This is the default.
SELECT
Causes a screen display to be selected with a specified
attribute. For example, SELECT/SCROLL OUT selects the OUT
display with the "scroll" attribute (attributes are indicated on
the top border of the display). The "scroll" attribute means
that the keypad keys KP2, KP4, KP6, and KP8, scroll, expand, or
move that display.
Other attributes include:
error - error messages are directed to that display
input - input lines are echoed in the display
output - debugger output is written to that display
program - your program's output goes to the display
instruction - EXAM/INST centers the display
source - TYPE or EXAM/SOURCE centers the display
Format:
SELECT [/qualifier...] [disp-name]
You un-select an attribute from a display by omitting the display
name, for example, "SELECT/INPUT" to remove the input attribute
from whatever display it is on.
Additional information available:
Examples
! Select OUT as the input and error display as well as being
! the output display. This causes debugger input, output, and
! error messages to be intermixed in the scrollable display OUT.
!
DBG> SELECT/INPUT/ERROR OUT
! Select SRC2 as the current source and scrolling display.
!
DBG> SELECT/SOURCE/SCROLL SRC2
! Remove the source attribute from any display. TYPE commands
! then just go to the OUT display.
!
DBG> SELECT/SOURCE
Parameters
disp-name
The name of the screen display to be selected. If this name is
omitted, the current select setting is cancelled.
Qualifiers
Additional information available:
/ERROR/INPUT/INSTRUCTION/OUTPUT/PROGRAM/SCROLL
/SOURCE/SUFFIX
/ERROR
Select the specified screen display as the current error display.
This means that debugger error messages are directed to that
display. By default, debugger error messages go to the PROMPT
display, which is not scrollable. If you do "SELECT/ERROR OUT"
then the error messages go to the scrollable display OUT.
SELECT/ERROR with no display name puts the error attribute back
on the PROMPT display, which is the default. Hence, SELECT/ERROR
PROMPT and SELECT/ERROR are equivalent.
/INPUT
Select the specified screen display as the current input display.
This means that debugger input lines are echoed in that display.
Note that you are always prompted for input in the PROMPT
display; selecting another display with the input attribute means
that your input lines are also echoed in that other display.
By default, no display is selected with the "input" attribute.
If you enter the comand "SELECT/INPUT OUT" then your input lines
are echoed in the scrollable OUT display. That is, your input
and debugger output are intermixed in that display. Some people
prefer this so that they can see what input line caused what line
of debugger output.
/INSTRUCTION
Select the specified screen display as the current instruction
display. This means that output of an EXAMINE/INSTRUCTION
command goes to the specified display. The specified display
must be an instruction display in this case.
/OUTPUT
Select the specified screen display as the current output
display. This means that all normal debugger output is directed
to that display. The specified display may not be a source
display or an instruction display in this case. SELECT/OUTPUT
with no display name puts the output attribute on the PROMPT
display. Hence, SELECT/OUTPUT PROMPT and SELECT/OUTPUT are
equivalent.
/PROGRAM
By default, your program's I/O is directed to the PROMPT display.
This is done by setting the scrolling region to that display just
before the debugger returns control to your program. Currently,
SELECT/PROGRAM is very restricted: you cannot give the PROGRAM
attribute to any display other than PROMPT. You can enter the
command SELECT/PROGRAM which removes the "program" attribute from
the PROMPT display. Then the debugger takes no special action to
redirect your program's I/O (which may be desirable if your
program does no I/O or if you have explicitly redirected your
program's I/O to another terminal). SELECT/PROGRAM PROMPT puts
the "program" attribute back on the PROMPT display.
Note - on VAXstations, the debugger comes up in a different
window from your program, so there is no need to direct program
I/O to the PROMPT display in this environment. Therefore the
default for VAXstations is for the "program" attribute to be
un-selected.
/SCROLL
Select the specified screen display as the current scrolling
display. This means that the SCROLL command by default scrolls
this display unless a different display is explicitly specified.
The commands EXPAND and MOVE also manipulate this display by
default. Note, although the PROMPT display may be selected as
the current scrolling display, the PROMPT display may not be
scrolled. It may however be moved and expanded. (See HELP MOVE
and HELP EXPAND for more information).
/SOURCE
Select the specified screen display as the current source
display. This means that the output of all TYPE and EXAMINE
/SOURCE commands go to the specified display. The specified
display must be a source display in this case.
/SUFFIX[=process-identifier-type]
Note: This qualifier applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS). Use
this qualifier only directly after a display name.
Appends a process-identifying suffix to a display name. The
suffix denotes the visible process. This qualifier is used
primarily in command procedures when specifying display
definitions or key definitions that are bound to display
definitions. Use any of the following process-identifier-type
keywords:
PROCESS_NAME The display-name suffix is the VMS process name.
PROCESS_NUMBER The display-name suffix is the process number
(as shown in a SHOW PROCESS display).
PROCESS_PID The display-name suffix is the VMS process
identification number (PID).
If you specify /SUFFIX without a process-identifier- type
keyword, the process identifier type used for the display-name
suffix is, by default, the same as that used for the prompt
suffix (see SET PROMPT/SUFFIX).
SET
The meaning of the command depends on the keyword specified. For
example, SET BREAK establishes breakpoints, SET MODULE loads the
symbol table for a module, and so on. See the help under each
keyword.
Format:
SET keyword [/qualifier] parameter
Additional information available:
ABORT_KEYATSIGNBREAKDEFINEDISPLAYEDITOR
EVENT_FACILITYIMAGEKEYLANGUAGELOGMARGINS
MAX_SOURCE_FILESMODEMODULEOUTPUTPROCESSPROMPT
RADIXSCOPESEARCHSOURCESTEPTASKTERMINAL
TRACETYPEWATCHWINDOW
Parameters
keyword
Keyword can be ABORT_KEY, ATSIGN, BREAK, DEFINE, DISPLAY, EDITOR,
EVENT_FACILITY, IMAGE, KEY, LANGUAGE, LOG, MARGINS,
MAX_SOURCE_FILES, MODE, MODULE, OUTPUT, PROCESS, PROMPT, RADIX,
SCOPE, SEARCH, SOURCE, STEP, TASK, TERMINAL, TRACE, TYPE, WATCH,
or WINDOW.
qualifiers
Depends on the keyword specified.
parameters
Depends on the keyword specified.
ABORT_KEY
By default, the CTRL/C sequence, when entered within a debugging
session, aborts the execution of a debugger command and
interrupts program execution. The SET ABORT_KEY command enables
you to assign the abort function to another CTRL-key sequence.
This may be necessary if your program has a CTRL/C AST service
routine enabled.
Note that many CTRL-key sequences have VMS predefined functions,
and the SET ABORT_KEY command enables you to override such
definitions (see the VMS DCL Concepts Manual). Some of the
CTRL-key characters not used by the VMS operating system are G,
K, N, and P.
The SHOW ABORT_KEY command identifies the CTRL-key sequence
currently in effect for the abort function.
Do not use CTRL/Y from within a debugging session. Always use
either CTRL/C or an equivalent CTRL-key sequence established with
the SET ABORT_KEY command.
Format:
SET ABORT_KEY = CTRL_character
Additional information available:
Example
DBG> SHOW ABORT_KEY
Abort Command Key is CTRL_C
DBG> GO
...
<CTRL/C>
%DEBUG-W-ABORTED, command aborted by user request
DBG> EXAMINE/BYTE 1000:101000 !should have typed 1000:1010
1000: 0
1004: 0
1008: 0
1012: 0
1016: 0
<CTRL/C>
%DEBUG-W-ABORTED, command aborted by user request
DBG> SET ABORT_KEY = CTRL_P
DBG> GO
...
<CTRL/P>
%DEBUG-W-ABORTED, command aborted by user request
DBG> EXAMINE/BYTE 1000:101000 !should have typed 1000:1010
1000: 0
1004: 0
1008: 0
1012: 0
1016: 0
<CTRL/P>
%DEBUG-W-ABORTED, command aborted by user request
DBG>
This sequence of commands shows the following:
1. Use of the (default) CTRL/C sequence to perform the abort
function.
2. Use of the SET ABORT_KEY command to reassign the abort
function to the CTRL/P sequence.
Parameter
character
Specifies the key you press while holding down the CTRL key. You
can specify any alphabetic character.
ATSIGN
Establishes the default file specification for processing
debugger command procedures. This is useful if you wish (for
example) to change the file type of your debugger command
procedures from .COM to .DBG. Or if you have several debugger
command procedures, you can place them in one directory and
specify this directory as the default file specification.
Format:
SET ATSIGN file-spec
Example:
DBG> SET ATSIGN MYDISK:[MYDIR.DEBUG].DBG
DBG> @MYFILE
The file MYDISK:[MYDIR.DEBUG]MYFILE.DBG is executed as a command
procedure.
BREAK
Establishes a breakpoint at the location denoted by an address
expression, at instructions of a particular class, or at the
occurrence of specified events.
Format:
SET BREAK [/qualifiers]
[address-expression[,...]]
[ WHEN (conditional-expression)]
[ DO (command[;...])]
When a breakpoint is triggered, the debugger takes the following
action:
1. Suspends program execution at the breakpoint location.
2. If /AFTER was specified when the breakpoint was set, checks
the AFTER count. If the specified number of counts has not
been reached, execution is resumed and the debugger does not
perform the remaining steps.
3. Evaluates the expression in a WHEN clause, if one was
specified when the breakpoint was set. If the value of the
expression is FALSE, execution is resumed and the debugger
does not perform the remaining steps.
4. Reports that execution has reached the breakpoint location by
issuing a "break ..." message, unless /SILENT was specified.
5. Displays the line of source code where execution is
suspended, unless /NOSOURCE or /SILENT was specified when the
breakpoint was set, or SET STEP NOSOURCE was entered
previously.
6. Executes the commands in a DO clause, if one was specified
when the breakpoint was set. If the DO clause contains a GO
command, execution continues and the debugger does not
perform the next step.
7. Issues the prompt.
You set a breakpoint at a particular location in your program by
specifying an address expression with the SET BREAK command. You
set a breakpoint on consecutive source lines, classes of
instructions, or events by specifying a qualifier with the SET
BREAK command. Generally, you must specify either an address
expression or a qualifier, but not both. The only exception is
with the /EVENT qualifier, which requires that you specify an
event name keyword and permits you also to specify an address
expression for certain event names.
If you set a breakpoint at a location currently used as a
tracepoint, the tracepoint is canceled in favor of the
breakpoint, and vice versa.
Breakpoints may be user defined or predefined. User defined
breakpoints are those that you set explicitly with the SET BREAK
command. Predefined breakpoints, which depend on the type of
program you are debugging (for example, Ada or multiprocess), are
established automatically when you invoke the debugger. Use the
SHOW BREAK command to identify all breakpoints that are currently
set. Any predefined breakpoints are identified as such.
User defined and predefined breakpoints are set and canceled
independently. For example, a location or event may have both a
user defined and a predefined breakpoint. Canceling the user
defined breakpoint does not affect the predefined breakpoint, and
conversely.
Additional information available:
Examples
1 DBG> SET BREAK SWAP\%LINE 12
This command causes the debugger to break on line 12 of module
SWAP.
2 DBG> SET BREAK/AFTER:3 SUB2
This command causes the debugger to break on the third and
subsequent times that SUB2 (a routine) is executed.
3 DBG> SET BREAK/NOSOURCE LOOP1 DO (EXAMINE D; STEP; EXAMINE Y; GO)
This command causes the debugger to break at location LOOP1. At
the breakpoint, the following commands are issued, in the order
given: EXAMINE D, STEP, EXAMINE Y, and GO. The /NOSOURCE
qualifier suppresses the display of source code at the
breakpoint.
4 DBG> SET BREAK ROUT3 WHEN (X > 4) DO (EXAMINE Y)
This command causes the debugger to break on routine ROUT3 when X
is greater than 4. At the breakpoint, the command EXAMINE Y is
issued.
5 DBG> SET BREAK/TEMPORARY 1440
DBG> SHOW BREAK
breakpoint at 1440 [temporary]
DBG>
This command sets a temporary breakpoint at location 1440. After
that breakpoint is triggered, it disappears.
6 DBG> SET BREAK/LINE
This command causes the debugger to break on the start of every
source line encountered during program execution.
7 DBG> SET BREAK/LINE WHEN (X .NE. 0)
DBG> SET BREAK/INSTRUCTION WHEN (X .NE. 0)
These two commands cause the debugger to break when X is not
equal to 0. The first command tests for the condition at the
start of every source line encountered during execution. The
second command tests for the condition at each instruction.
8 DBG> SET BREAK/INSTRUCTION=ADDL3
This command causes the debugger to break whenever the
instruction ADDL3 is about to be executed.
9 DBG> SET BREAK/LINE/INTO/NOSHARE/NOSYSTEM
This command causes the debugger to break on the start of every
source line, including lines in called routines (/INTO) but not
in shareable image routines (/NOSHARE) or system routines
(/NOSYSTEM).
10 DBG> SET BREAK/RETURN ROUT4
This command causes the debugger to break whenever the RET
instruction of routine ROUT4 is about to be executed.
11 DBG> SET BREAK/RETURN %LINE 14
This command causes the debugger to break whenever the RET
instruction of the routine that includes line 14 is about to be
executed. This form of the command is useful if execution is
currently suspended within a routine and you want to set a
breakpoint on that routine's RET instruction.
12 DBG> SET BREAK/EXCEPTION DO (SET MODULE/CALLS; SHOW CALLS)
This command causes the debugger to break whenever an exception
is signaled. At the breakpoint, the commands SET MODULE/CALLS
and SHOW CALLS are issued.
13 DBG> SET BREAK/EVENT=RUN RESERVE, %TASK 3
This command sets two breakpoints, which are associated with the
Ada tasks RESERVE and task 3, respectively. Each breakpoint is
triggered whenever its associated task makes a transition to the
RUN state.
14 DBG_1> SET BREAK/ACTIVATING
This command causes the debugger to break whenever a process of a
multiprocess program is brought under debugger control.
Parameters
address-expression
Specifies an address expression (a program location) at which a
breakpoint is to be set. With high- level languages, this is
typically a line number, a routine name, or a label, and may
include a path name to specify the entity uniquely. More
generally, an address expression may also be a virtual memory
address or a register and may be composed of numbers (offsets)
and symbols, as well as one or more operators, operands, or
delimiters.
Do not specify the asterisk asterisk wildcard character (*). Do
not specify an address expression with /ACTIVATING, /BRANCH,
/CALL, /EXCEPTION, /INSTRUCTION[=(opcode-list)], /INTO, /[NO]JSB,
/LINE, /OVER, /[NO]SHARE, /[NO]SYSTEM, or /TERMINATING. The
/MODIFY and /RETURN qualifiers are used with specific kinds of
address expressions.
If you specify a virtual memory address or an address expression
whose value is not a symbolic location, check (with the EXAMINE
command) that an instruction actually begins at the byte of
memory so indicated. If an instruction does not begin at this
byte, a run- time error may occur when an instruction including
that byte is executed. When you set a breakpoint by specifying
an address expression whose value is not a symbolic location, the
debugger does not verify that the location specified marks the
beginning of an instruction. CALLS and CALLG routines start with
an entry mask.
command
Specifies a debugger command that is to be executed as part of
the DO clause when break action is taken.
conditional-expression
Specifies a conditional expression in the currently set language
that is to be evaluated when execution reaches the breakpoint.
If the expression is TRUE, break action occurs, and the debugger
reports that a break has occurred. If the expression is FALSE,
break action does not occur. In this case, a report is not
issued, the commands specified by the DO clause are not executed,
and program execution is continued.
Qualifiers
The qualifiers can be grouped as follows.
The /LINE qualifier sets a breakpoint on each line of source
code.
The following qualifiers set breakpoints on classes of
instructions. Note that use of these qualifiers and of the /LINE
qualifier causes the debugger to trace every instruction of your
program as it executes and thus significantly slows down
execution: /BRANCH, /CALL, /INSTRUCTION,
/INSTRUCTION=(opcode-list), /RETURN.
The following qualifiers set breakpoints on classes of events:
/ACTIVATING, /EVENT=event-name, /EXCEPTION, /TERMINATING.
The following qualifiers affect what happens at a routine call:
/INTO, /[NO]JSB, /OVER, /[NO]SHARE, /[NO]SYSTEM.
The following qualifiers affect what output is displayed when a
breakpoint is reached: /[NO]SILENT, /[NO]SOURCE.
The following qualifiers affect the timing and duration of
breakpoints: /AFTER:n, /TEMPORARY.
The /MODIFY qualifier is used to monitor changes at program
locations (typically changes in the values of variables).
Additional information available:
/ACTIVATING/AFTER:n/BRANCH/CALL/EVENT/EXCEPTION
/INSTRUCTION/INSTRUCTION/INTO/JSB/LINE
/MODIFY/NOJSB/NOSHARE/NOSILENT/NOSOURCE/NOSYSTEM
/OVER/RETURN/SHARE/SILENT/SOURCE/SYSTEM/TEMPORARY
/TERMINATING
/ACTIVATING
Note: This qualifier applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS).
Causes the debugger to break when a new process comes under
debugger control. The debugger prompt is displayed when the
first process comes under debugger control. This enables you to
enter debugger commands before the program has started execution.
Do not specify an address expression with /ACTIVATING. See also
/TERMINATING.
/AFTER:n
Specifies that break action not be taken until the nth time the
designated breakpoint is encountered (n is a decimal integer).
Thereafter, the breakpoint occurs every time it is encountered
provided that conditions in the WHEN clause (if specified) are
TRUE. The command SET BREAK/AFTER:1 has the same effect as the
SET BREAK command.
/BRANCH
Causes the debugger to break on every branch instruction
encountered during execution (including BEQL, BGTR, BLEQ, BGEQ,
BLSS, BGTRU, BLEQU, BVC, BVS, BGEQU, BLSSU, BRB, BRW, JMP, BBS,
BBC, BBSS, BBCS, BBSC, BBCC, BBSSI, BBCCI, BLBS, BLBC, ACBB,
ACBW, ACBL, ACBF, ACBD, ACBG, ACBH, AOBLEQ, AOBLSS, SOBGEQ,
SOBGTR, CASEB, CASEW, CASEL). Do not specify an address
expression with /BRANCH. See also /INTO, /OVER.
/CALL
Causes the debugger to break on every call instruction (including
the CALLS, CALLG, BSBW, BSBB, JSB, RSB, and RET instructions)
encountered during execution. Do not specify an address
expression with /CALL. See also /INTO, /OVER.
/EVENT=event-name
Note: This qualifier applies only to Ada and SCAN. See the VAX
Ada and VAX SCAN documentation for complete information.
Causes the debugger to break on the specified event (if that
event is defined and detected by the run- time system). If you
specify an address expression with /EVENT, causes the debugger to
break whenever the specified event occurs for that address
expression. Event names depend on the run-time facility. You
can display the event names associated with the current run-time
facility by entering the SHOW EVENT_FACILITY command. Note that
you cannot specify an address expression with certain event
names.
/EXCEPTION
Causes the debugger to break whenever an exception is signaled.
The break action occurs before any user- written exception
handlers are invoked. Do not specify an address expression with
/EXCEPTION.
As a result of a SET BREAK/EXCEPTION command, whenever your
program generates an exception condition, the debugger suspends
program execution, reports the exception condition, and displays
its prompt. When you resume execution from an exception
breakpoint, the behavior is as follows:
o If you enter a GO command without an address- expression
parameter, the exception is resignalled, thus allowing any
user-declared exception handler to execute.
o If you enter a GO command with an address- expression
parameter, program execution continues at the specified
location, thus inhibiting the execution of any user-declared
exception handler.
o If you enter a STEP command, the debugger steps into any
user-declared exception handler. If there is no
user-declared handler for that exception, the debugger
resignals the exception.
o If you enter a CALL command, the routine specified is
executed. If a routine is called with the CALL command
directly after an exception breakpoint has been triggered, no
breakpoints, tracepoints, or watchpoints set within that
routine are triggered. However, they are triggered if the
CALL command is given at another time.
/INSTRUCTION
Causes the debugger to break on every instruction executed. Do
not specify an address expression with /INSTRUCTION. See also
/INTO, /OVER.
/INSTRUCTION=(opcode-list)
Causes the debugger to break on every instruction whose opcode is
in the list. Do not specify an address expression with
/INSTRUCTION. See also /INTO, /OVER.
/INTO
Applies only to breakpoints set with /BRANCH, /CALL,
/INSTRUCTION[=(opcode-list)], or /LINE; that is, when an address
expression is not explicitly specified. When used with those
qualifiers, causes the debugger to break at the specified points
within called routines (as well as within the routine where
execution is currently suspended). /INTO is the default behavior
and is the opposite of /OVER.
When using /INTO, you can further qualify the break action with
the /[NO]JSB, /[NO]SHARE, and /[NO]SYSTEM qualifiers.
/JSB
Qualifies /INTO. Use /JSB only with /INTO and one of the
following qualifiers: /BRANCH, /CALL,
/INSTRUCTION[=(opcode-list)], or /LINE. /JSB permits the
debugger to break within routines that are called by the JSB or
CALL instruction. /JSB is the default for all languages except
DIBOL. Do not specify an address expression with /[NO]JSB.
/LINE
Causes the debugger to break at the start of each new line. Do
not specify an address expression with /LINE. See also /INTO,
/OVER.
/MODIFY
Causes a break at every instruction that writes to and modifies
the value of the location indicated by the address expression.
The address expression is typically a variable name.
The SET BREAK/MODIFY command acts exactly like a SET WATCH
command and operates under the same restrictions.
If you specify an absolute address for the address expression,
the debugger may not be able to associate the address with a
particular data object. In this case, the debugger uses a
default length of 4 bytes. You can change this length, however,
by setting the type to either WORD (SET TYPE WORD, which changes
the default length to 2 bytes) or BYTE (SET TYPE BYTE, which
changes the default length to 1 byte). SET TYPE LONGWORD
restores the default length of 4 bytes.
/NOJSB
Qualifies /INTO. Use /NOJSB only with /INTO and one of the
following qualifiers: /BRANCH, /CALL,
/INSTRUCTION[=(opcode-list)], or /LINE.
/NOJSB specifies that breakpoints not be set within routines
called by JSB instructions. /NOJSB is the default for DIBOL
programs. In DIBOL, user- written routines are called by the
CALL instruction and DIBOL run-time library routines are called
by the JSB instruction. Do not specify an address expression
with /NOJSB.
/NOSHARE
Qualifies /INTO. Use /NOSHARE only with /INTO and one of the
following qualifiers: /BRANCH, /CALL,
/INSTRUCTION[=(opcode-list)], or /LINE.
/NOSHARE specifies that breakpoints not be set within shareable
images. Do not specify an address expression with /[NO]SHARE.
/NOSILENT
Specifies that the "break . . . " message is displayed at the
breakpoint. This is the default.
/NOSOURCE
Specifies that the source line for the current location is not
displayed at the breakpoint. See also SET STEP [NO]SOURCE.
/NOSYSTEM
Qualifies /INTO. Use /NOSYSTEM only with /INTO and one of the
following qualifiers: /BRANCH, /CALL,
/INSTRUCTION[=(opcode-list)], or /LINE.
/NOSYSTEM specifies that breakpoints not be set within system
routines (P1 space). Do not specify an address expression with
/SYSTEM.
/OVER
Applies only to breakpoints set with /BRANCH, /CALL,
/INSTRUCTION[=(opcode-list)], or /LINE; that is, when an address
expression is not explicitly specified. When used with those
qualifiers, causes the debugger to break at the specified points
only within the routine where execution is currently suspended
(not within called routines). /OVER is the opposite of /INTO
(the default behavior).
/RETURN
Causes the debugger to break on the RET (return) instruction of
the routine associated with the specified address expression
(which may be a routine name, line number, and so on). This
qualifier can only be applied to routines called with a CALLS or
CALLG instruction; it cannot be used with JSB routines. Breaking
on the RET instruction enables you to inspect the local
environment (for example, obtain the values of local variables)
before the RET instruction deletes the routine's call frame from
the call stack.
For this qualifier, the address-expression parameter is an
instruction address within a CALLS or CALLG routine. It may
simply be a routine name, in which case it specifies the routine
start address. However, you can also specify another location in
a routine, so you can see only those returns that are taken after
a certain code path is followed.
A SET BREAK/RETURN command cancels a previous SET BREAK command
if the same address expresion is specified.
/SHARE
Qualifies /INTO. Use /SHARE only with /INTO and one of the
following qualifiers: /BRANCH, /CALL,
/INSTRUCTION[=(opcode-list)], or /LINE.
/SHARE (default) permits the debugger to break within shareable
image routines as well as other routines. Do not specify an
address expression with /[NO]SHARE.
/SILENT
Specifies that the "break . . . " message and the source line
for the current location are not displayed at the breakpoint.
/SILENT overrides /SOURCE. See also SET STEP [NO]SOURCE.
/SOURCE
Specifies that the source line for the current location is
displayed at the breakpoint. This is the default. /SILENT
overrides /SOURCE. See also SET STEP [NO]SOURCE.
/SYSTEM
Qualifies /INTO. Use /SYSTEM only with /INTO and one of the
following qualifiers: /BRANCH, /CALL,
/INSTRUCTION[=(opcode-list)], or /LINE.
/SYSTEM (default) permits the debugger to break within system
routines (P1 space) as well as other routines. Do not specify an
address expression with /SYSTEM.
/TEMPORARY
Causes the breakpoint to disappear after it is triggered (the
breakpoint does not remain permanently set).
/TERMINATING
Causes the debugger to break when a process performs an image
exit. Note that the debugger always gains control and displays
its prompt when the last image of a single-process or
multiprocess program exits. A process is terminated when the
image has executed the $EXIT system service and all of its exit
handlers have executed. Do not specify an address expression
with /TERMINATING. See also /ACTIVATING.
DEFINE
Specifies how to interpret DEFINE commands. The DEFINE command
can bind a symbol to either an address, a command string, a group
of process names, or a value.
Example:
DBG> SET DEFINE COMMAND
DBG> DEFINE B = "SET BREAK"
DBG> DEFINE M = "SET MODULE"
Additional information available:
ADDRESSCOMMANDPROCESS_GROUPVALUE
Parameters
ADDRESS
Treat subsequent DEFINE commands as DEFINE/ADDRESS.
COMMAND
Treat subsequent DEFINE commands as DEFINE/COMMAND.
PROCESS_GROUP
Treat subsequent DEFINE commands as DEFINE/PROCESS_GROUP
VALUE
Treat subsequent DEFINE commands as DEFINE/VALUE.
ADDRESS
Treat subsequent DEFINE commands as DEFINE/ADDRESS.
COMMAND
Treat subsequent DEFINE commands as DEFINE/COMMAND.
PROCESS_GROUP
Treat subsequent DEFINE commands as DEFINE/PROCESS_GROUP
VALUE
Treat subsequent DEFINE commands as DEFINE/VALUE.
DISPLAY
Creates a screen display to be shown on the terminal screen. A
screen display is a set of text lines that can be viewed through
a window on the terminal screen. The SET DISPLAY command defines
such a display, sets its maximum size in text lines, defines its
screen position, and establishes its display kind. Once set, the
display may be selected to have certain attributes such as output
or scrolling by the SELECT command.
Format:
SET DISPLAY [/qualifier...] [disp-name [AT wspec] [dkind]
[, disp-name [AT wspec] [dkind]...]]
Additional information available:
Examples
1 DBG> SET DISPLAY DISP2 AT RS45
DBG> SELECT/OUTPUT DISP2
In this example, the SET DISPLAY command creates a new display
named DISP2 essentially at the right bottom half of the screen,
above the PROMPT display, which is located at S6. This is an
output display by default. The SELECT/OUTPUT command then
selects DISP2 as the current output display.
2 DBG> SET WINDOW TOP AT (1,8,45,30)
DBG> SET DISPLAY NEWINST AT TOP INSTRUCTION
DBG> SELECT/INST NEWINST
In this example, the SET WINDOW command creates a window named
TOP starting at line 1 and column 45, and extending down for 8
lines and to the right for 30 columns. The SET DISPLAY command
creates an instruction display named NEWINST to be displayed
through TOP. The SELECT/INST command selects NEWINST as the
current instruction display.
3 DBG> SET DISPLAY CALLS AT Q3 DO (SHOW CALLS)
This command creates a DO display named CALLS at window Q3. Each
time the debugger gains control from the program, the SHOW CALLS
command is executed and the output is displayed in display CALLS,
replacing any previous contents.
4 DBG> SET DISPLAY/MARK EXAM AT Q2 DO (EXAM A,B,C)
This command creates a DO display named EXAM at window Q2. The
display shows the current values of variables A, B, and C
whenever the debugger prompts for input. Any changed values are
highlighted.
5 DBG_2> SET DISPLAY/PROCESS OUT_/SUFFIX AT S45 OUTPUT
This command creates an output display at window S45. The
/PROCESS qualifier, by default, makes the display specific to the
visible process (process 2, in this example). The /SUFFIX
qualifier appends a process-identifying suffix, that denotes the
visible process, to the display name OUT_. By default, the
/SUFFIX qualifier appends the same process identifier suffix that
appears on the prompt. Therefore, the full display name is
OUT_2.
Parameters
disp-name
The name of the new display being defined. If a screen display
by the same name already exists, the previous display must be
cancelled before the new one can be established.
wspec
The name of the screen window at which this display is to be
positioned. This may also be a window specification of the form
(start-line, line-count, start-column, column-count). If wspec
is omitted, the display is positioned at window H1 or H2.
dkind
The display kind. This can be OUTPUT for an output display,
SOURCE for a source display, SOURCE(debug-cmd-list) for an
automatically updated source display, DO(debug-cmd-list) for an
automatically updated output display, INSTRUCTION for an
instruction display, INSTRUCTION(debug-cmd-list) for an
automatically updated instruction display, or REGISTER for an
automatically updated register display. If omitted, dkind
defaults to OUTPUT.
Qualifiers
Additional information available:
/DYNAMIC/HIDE/MARK_CHANGE/NODYNAMIC/NOPROCESS
/POP/PROCESS/PUSH/REMOVE/SIZE:n/SUFFIX
/DYNAMIC
Specifies that the display is to automatically adjust its window
dimensions proportionally when you change the screen height or
width with a SET TERMINAL command. This is the default behavior
for all displays.
/HIDE
Hides the specified display under any other displays that occupy
the same region on the terminal screen. This has the same effect
as the /PUSH qualifier.
/MARK_CHANGE
Specifies that any changed lines of a DO(debug-cmd-list) display
are marked each time the display is automatically updated. The
marking is done by highlighting each line of the display which
has a different textual content this time compared to the last
time the display was updated. This qualifier is useful when you
want changed variables in an automatically updated display to be
highlighted on change. This qualifier is not applicable to other
kinds of displays.
/NODYNAMIC
Specifies that the display is not to automatically adjust its
window dimensions when you change the screen height or width with
a SET TERMINAL command.
/NOPROCESS
Note: This qualifier applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS).
Causes the specified display to always be associated with the
visible process, which may change during program execution. This
is the default behavior.
/POP
Pops the specified display to the front of all other displays
that occupy the same region on the terminal screen. This is the
default action of the SET DISPLAY command.
/PROCESS[=(process-spec)]
Note: This qualifier applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS).
Causes the specified display to be process specific -- that is,
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 for the PROMPT display.
/PROCESS=(process-spec) 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 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.
%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 (*)
/PROCESS causes the specified display to be associated with the
process that was the visible process when the DISPLAY/PROCESS
command was executed. If you do not specify /PROCESS, the
current process- specific behavior (if any) of the specified
display remains unchanged. See also /SUFFIX.
/PUSH
Pushes the specified display under any other displays that occupy
the same region on the terminal screen. This has the same effect
as the /HIDE qualifier.
/REMOVE
Marks the specified display as being removed. A removed display
does not appear on the screen unless explicitly requested with a
later DISPLAY command. Although a removed display is not visible
on the screen, the display and its contents are preserved.
/SIZE:n
Sets the maximum size of the display in text lines to be n lines.
If more than n lines are written to the display, the oldest lines
are lost as new lines are added. If this qualifier is omitted,
the default size is 64 lines.
For source displays, n gives the number of source lines to buffer
at any one time. This is not normally significant since a source
display can always be scrolled over the entire source file.
/SUFFIX[=process-identifier-type]
Note: This qualifier applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS). Use
this qualifier only directly after a display name.
Appends a process-identifying suffix to a display name. The
suffix denotes the visible process. This qualifier is used
primarily in command procedures when specifying display
definitions or key definitions that are bound to display
definitions. Use any of the following process-identifier-type
keywords:
PROCESS_NAME The display-name suffix is the VMS process name.
PROCESS_NUMBER The display-name suffix is the process number
(as shown in a SHOW PROCESS display).
PROCESS_PID The display-name suffix is the VMS process
identification number (PID).
If you specify /SUFFIX without a process-identifier- type
keyword, the process identifier type used for the display-name
suffix is, by default, the same as that used for the prompt
suffix (see SET PROMPT/SUFFIX).
See also /[NO]PROCESS.
EDITOR
Establishes the editor that is invoked by the EDIT command.
Format:
SET EDITOR [{/CALLABLE_EDT |
/CALLABLE_LSEDIT |
/CALLABLE_TPU}]
[/[NO]START_POSITION]
[command_line]
The qualifiers /CALLABLE_EDT, /CALLABLE_LSEDIT, and /CALLABLE_TPU
cause the EDIT command to invoke the callable versions of the
editor chosen. If none of these are specified, then the
command_line is required, and it is SPAWNed to DCL when the EDIT
command is used.
For /CALLABLE_LSEDIT and /CALLABLE_TPU, the command_line
specified is passed to the callable editor as the command line to
use. If no command_line is specified, the default is "LSEDIT" or
"TPU", respectively. The command_line parameter is currently
ignored for /CALLABLE_EDT since those routines do not allow for a
command line.
The /START_POSITION qualifier on the SET EDITOR command defines
whether the /START_POSITION qualifier is appended to the command
line before invoking the specific editor. Currently only LSEDIT
(both SPAWNed and /CALLABLE_LSEDIT) support this qualifier.
The default is SPAWNed LSEDIT, with the /START_POSITION
qualifier. If the default were set by the SET EDITOR command, it
would be:
DBG> SET EDITOR/START_POSITION LSEDIT
Example:
DBG> SET EDITOR '@MAIL$EDIT ""'
DBG> SET EDITOR/CALLABLE_EDT
DBG> SET EDITOR/CALLABLE_TPU
DBG> SET EDITOR/CALLABLE_TPU TPU/SECTION=MYSECINI.TPU$SECTION
DBG> SET EDITOR/CALLABLE_LSEDIT/START_POSITION
The first command causes EDIT to spawn the command line
'@MAIL$EDIT ""', which invokes the same editor used in MAIL.
The second command causes EDIT to invoke CALLABLE_EDT. No
command line is allowed with CALLABLE_EDT.
The third command causes EDIT to invoke CALLABLE_TPU with the
default command line of "TPU".
The fourth command causes EDIT to invoke CALLABLE_TPU with the
command line "TPU/SECTION=MYSECINI.TPU$SECTION".
The last command causes EDIT to invoke CALLABLE_LSEDIT with the
default command line of "LSEDIT". Also, the /START_POSITION
qualifier is appended to the command line, so that the editing
session starts on the source line that the debugger is currently
pointing to.
EVENT_FACILITY
Selects a particular run time facility for the debugger to use
for the SET BREAK/EVENT and SET TRACE/EVENT commands.
This allows the specified facility (the run time library of a
language or other run time system) to define and detect certain
types of events in the execution of your program which would
otherwise be very difficult (or impossible) for you to set a
breakpoint on. These events are treated as ordinary debugger
"eventpoints". That is, you can set a break or trace on them
(using WHEN or DO clauses if desired), display them with the SHOW
BREAK or SHOW TRACE commands, and remove them with the CANCEL
BREAK or CANCEL TRACE commands. (See also "SHOW
EVENT_FACILITY").
Format:
SET EVENT_FACILITY facility_name
Example:
SET EVENT_FACILITY ADA
Causes the debugger to use the Ada RTL as the event facility for
succeeding "/EVENT" commands. The Ada language includes
multitasking. The "EVENT_FACILITY" mechanism allows you to set
breakpoints on events such as task switching which you could not
do otherwise.
IMAGE
"SET IMAGE imagename" loads the symbol table for the specified
shareable image, and sets your debugging context to that
shareable image. Use the SHOW IMAGE command to find out what the
shareable images in your program are.
Format:
SET IMAGE [/ALL] [image-name [,...]]
For example, if you want to set a breakpoint in routine SUBR in
module SUBR in shareable image SHARE1, then you could enter the
commands:
DBG> SET IMAGE SHARE1
DBG> SET MODU SUBR
DBG> SET BREAK SUBR
The specified image should have been linked /DEBUG or /TRACE. If
the image was linked /NOTRACE then no symbol table is available
for that image and you cannot SET IMAGE to it.
KEY
This command changes the current key definition state. Note that
keys are defined by using the DEFINE/KEY command.
Example: To make DEFINE/KEY redefine the GOLD keys by default,
do:
DBG> SET KEY/STATE=GOLD
Format:
SET KEY [/qualifiers[,...]]
Command Qualifiers Defaults
/[NO]LOG /LOG /[NO]STATE=state-name
current state
Additional information available:
Qualifiers
Additional information available:
/LOG
Print an informational message indicating whether or not the key
state has been set.
/NOLOG
Do not print the informational message associated with the
command.
/NOSTATE
Do not change the current state
/STATE
Set the state to state-name.
Format:
SET KEY/STATE=state-name
LANGUAGE
Establishes the current language. This affects what expressions
are allowed in commands that accept language expressions
(EXAMINE, EVALUATE, DEPOSIT, and so on). This also affects the
default radix setting.
At debugger start-up, the debugger sets the current language to
the language in which the module containing the transfer address
was written. You can (and should) change this language by the
SET LANGUAGE command if you begin debugging a module written in a
different source language.
Format:
SET LANGUAGE language-name
Example:
DBG> SET LANGUAGE ADA
Additional information available:
Parameters
language-name
Specifies the name of the language. Valid languages include the
following: ADA, BASIC, BLISS, C, COBOL, DIBOL, FORTRAN, MACRO,
PASCAL, PLI, RPG, SCAN, and UNKNOWN. (UNKNOWN gives a kind of
"generic" language support and is intended to be used by any
language not in the above list).
Type "HELP Languages" for information on specific support.
LOG
Specifies the name of the log file to which the debugger writes
when the output parameter is set to LOG. Note that SET LOG only
specifies the name of the file; you need to do SET OUTPUT LOG to
actually enable logging. The default log file name is DEBUG.LOG.
Format:
SET LOG file-spec
Example:
DBG> SET LOG MARCH24.DBG
DBG> SET OUTPUT LOG
Additional information available:
Parameters
file-spec
The log file's file specification.
MARGINS
Specifies the leftmost source-line character position at which to
begin display of a line of source code (the left margin) and/or
the rightmost source-line character position at which to end
display of a line of source code.
The SET MARGINS command affects only the display of lines of
source code, that is, the display resulting from commands such as
TYPE and EXAMINE/SOURCE. The SET MARGINS command does not affect
the display resulting from commands (such as EXAMINE, EVALUATE,
SHOW MODE, and so on) that do not display source code.
Format:
rm
SET MARGINS lm:rm
lm:
:rm
Example:
DBG> SET MARGINS 10:70
Additional information available:
Parameters:
lm - The source-line character position at which to begin display of
the line of source code (the left margin).
rm - The source-line character position at which to end display of
the line of source code (the right margin).
If you specify a single number, the debugger sets the left margin
to 1 and the right margin to the number specified.
If you specify two numbers, separated with a colon, the debugger
sets the left margin to the number specified to the left of the
colon and the right margin to the number specified to the right
of the colon.
If you specify a single number followed by a colon, the debugger
sets the left margin to the number specified and leaves the right
margin unchanged.
If you specify a colon followed by a single number, the debugger
sets the right margin to the number specified and leaves the left
margin unchanged.
MAX_SOURCE_FILES
Specifies the maximum number of source files that the debugger
may keep open at any one time. The default value is 5.
The value of MAX_SOURCE_FILES does not limit the number of source
files that the debugger can open, it limits the number that may
be kept open at any one time. Thus, if the debugger reaches this
limit, it must close a file in order to open another one.
Setting MAX_SOURCE_FILES to a very small number can make the
debugger's use of source files inefficient. Setting
MAX_SOURCE_FILES to a large number runs the risk of exceeding
your "open file quota". It is usually best to leave
MAX_SOURCE_FILES at the default value of 5.
Format:
SET MAX_SOURCE_FILES n
Additional information available:
Parameters
n - Specifies the maximum number of source files that the debugger
may keep open at any one time.
MODE
Establishes one or more "modes". The two most important "modes"
are:
(1) Screen mode or noscreen mode, which affects whether you want
to view debugger output line-by-line, or in a screen-oriented
fashion.
(2) Keypad mode or nokeypad mode, which affects whether the
numeric keypad is used to enter debugger commands, or whether it
is used to enter numbers.
In addition, there are a large number of other "modes" that
affect the debugger's behavior; these are described in detail in
the subtopics.
Format:
SET MODE mode-keyword [,mode-keyword]
Additional information available:
DYNAMICG_FLOATINTERRUPTKEYPADLINENODYNAMIC
NOG_FLOATNOINTERRUPTNOKEYPADNOLINENOOPERANDS
NOSCREENNOSCROLLNOSEPARATENOSYMBOLICOPERANDS
SCREENSCROLLSEPARATESYMBOLIC
Parameters
mode-keyword
May be one of the following:
o DYNAMIC -- Enables dynamic module setting (see description
under DYNAMIC) (default).
o NODYNAMIC -- Disables dynamic module setting (see description
under DYNAMIC).
o G_FLOAT -- Specifies that debugger pick up D exponent constant
as G_float.
o NOG_FLOAT -- Specifies that debugger pick up D exponent
constant as D_float. (default).
o INTERRUPT -- Enables interrupt mode for debugging multiprocess
programs (see description under INTERRUPT) (default).
o NOINTERRUPT -- Disables interrupt mode for debugging
multiprocess programs (see description under NOINTERRUPT).
o KEYPAD -- Turn on keypad mode.
o NOKEYPAD -- Turn off keypad mode. (default).
o LINE -- Specifies that the debugger display code locations in
terms of line numbers (%LINE), if possible. (default).
o NOLINE -- Specifies that the debugger symbolize code locations
to "routine + offset" instead of line number.
o OPERANDS -- Enables display of operands when examining VAX
instructions.
o NOOPERANDS -- Disables display of operands when examining VAX
instructions.
o SCREEN -- Turns on screen mode.
o NOSCREEN -- Turns off screen mode. (default).
o SCROLL -- Specifies that output be scrolled through the output
display as it is generated (default).
o NOSCROLL -- Specifies that the output display be updated only
once per command, instead of scrolling the output line-by-line
as it is generated.
o SEPARATE -- Runs debugger I/O in a separate VAXstation window.
(only available on a VAXstation).
o NOSEPARATE -- Runs debugger I/O in the window where the
debugger initially started. (only available on a VAXstation).
(default).
o SYMBOLIC -- Specifies that the debugger display the locations
denoted by address-expressions symbolically, if possible.
(default).
o NOSYMBOLIC -- Specifies that the debugger turn off
symbolization of addresses.
DYNAMIC
Enables dynamic module setting. Dynamic module setting means
that whenever you are at the DBG prompt, if your PC is in a
module that is not set, then the debugger sets the module
automatically. For example, if you step into a function in a
module that is not set, the debugger sets the module and issues
an informational that it has done so.
The debugger does not cancel modules for you, so as you step
through your program there may be an increasing number of modules
set.
Example:
DBG> SET MODE DYNAMIC
DBG> STEP/INTO
stepped to routine SUBR
%DEBUG-I-DYNMODSET, setting module SUBR
G_FLOAT
Specifies that all double-precision constants entered in
expressions should be interpreted as G_Floating. This only
affects the interpretation of constants such as "1.1D0" that are
entered in expressions; variables in your program are still
interpreted according to their declared type.
INTERRUPT
(Applies to a multiprocess debugging configuration -- that is,
when DBG$PROCESS has the value MULTIPROCESS). Specifies that,
when program execution is suspended in any process, the debugger
interrupts execution in any other processes that were executing
images and prompts for input. SET MODE INTERRUPT is the default.
KEYPAD
Activates keypad mode. See "Help Keypad" for more information.
LINE
Specifies that the debugger display code locations in terms of
line numbers (%LINE), if possible. (default).
Example:
DBG> SET MODE LINE; STEP
stepped to %LINE 20
DBG> SET MODE NOLINE; STEP
stepped to SUBR + 36
NODYNAMIC
Turns off dynamic module setting. One might occasionally want to
turn off this feature if performance is a problem. See
description under "DYNAMIC" for more info.
NOG_FLOAT
Specifies that all double-precision constants entered in
expressions should be interpreted as D_Floating. This only
affects the interpretation of constants such as "1.1D0" that are
entered in expressions; variables in your program are still
interpreted according to their declared type. (default).
NOINTERRUPT
(Applies to a multiprocess debugging configuration -- that is,
when DBG$PROCESS has the value MULTIPROCESS). Specifies that,
when program execution is suspended in any process, the debugger
take the following action:
1. If execution was suspended because of an unhandled exception,
the debugger interrupts execution in any other processes that
were executing images and prompts for input.
2. If execution was suspended because of a breakpoint or
watchpoint or the completion of a STEP command, the debugger
lets execution proceed in any other processes that were
executing images and does not display the prompt unless
execution is eventually suspended in all these processes. As
long as execution continues in any process, the debugger does
not prompt for input. In such cases, use CTRL/C to interrupt
all processes and display the prompt.
NOKEYPAD
Disables keypad mode. This may be necessary if you would rather
use the keypad to enter numbers, instead of debugger commands.
NOLINE
Specifies that the debugger symbolize code locations to "routine
+ offset" instead of line number.
Example:
DBG> SET MODE LINE; STEP
stepped to %LINE 20
DBG> SET MODE NOLINE; STEP
stepped to SUBR + 36
NOOPERANDS
Specifies that the operands of VAX instructions are not to be
evaluated when you enter the command EXAMINE/INSTRUCTION.
Example:
DBG> SET MODE OPERANDS=BRIEF
DBG> EXAMINE .0\%PC
X\X$START+0C: MOVL B^04(R4),R7
B^04(R4) X\X$START\K (address 00001058) contains 00000016
R7 R7 contains 00000000
DBG> SET MODE NOOPERANDS
DBG> EXAMINE .0\%PC
X\X$START+0C: MOVL B^04(R4),R7
NOSCREEN
Disables screen mode. (default)
NOSCROLL
Specifies that the output display be updated only once per
command, instead of scrolling the output line-by-line as it is
generated. This reduces the amount of screen updating that takes
place, which might be an advantage on slow terminals.
NOSEPARATE
This command applies only to VAXstations.
Specifies that debugger input and output go to the window in
which the debugger was invoked. This is the default behavior.
NOSYMBOLIC
Specifies that the debugger not attempt to symbolize addresses.
The only advantage of this is performance: suppressing
symbolization may speed up command processing slightly by
reducing the amount of work the debugger has to do. Note that
SET MODE NOSYM does NOT cause the debugger to turn all names into
numbers - it just requests that the debugger make no attempt to
turn numbers into names.
Example:
DBG> EVAL/ADDR X
7FFFFEC0
DBG> EXAMINE %HEX 7FFFFEC0
SUBR\X: 3
DBG> SET MODE NOSYM
DBG> EXAMINE %HEX 7FFFFEC0
7FFFFEC0: 3
OPERANDS
Specifies that, when you enter an EXAMINE command to examine an
instruction, the display include the address and contents of each
instruction operand. The entity being examined must be of type
"instruction".
You can control the amount of information displayed, by
specifying either OPERANDS=BRIEF or OPERANDS=FULL. These
qualifiers can be used on either the SET MODE OPERANDS or
EXAMINE/OPERANDS commands. The default is OPERANDS=BRIEF.
Example:
DBG> SET MODE OPERANDS=BRIEF
DBG> EXAMINE .0\%PC
X\X$START+0C: MOVL B^04(R4),R7
B^04(R4) X\X$START\K (address 00001058) contains 00000016
R7 R7 contains 00000000
DBG> SET MODE OPERANDS=FULL
DBG> EXAMINE .0\%PC
X\X$START+0C: MOVL B^04(R4),R7
B^04(R4) R4 contains X\X$START\M (address 00001054),
B^04(00001054) evaluates to X\X$START\K
(address 00001058), which contains 00000016
R7 R7 contains 00000000
SCREEN
Enables screen mode. See Screen_features for more information.
SCROLL
Specifies that, in screen mode, output be scrolled through the
output display as it is generated. (default).
SEPARATE
This command applies only to VAXstations.
Creates a separate debugger window for debugger input and output.
The effect is as if you had defined DBG$INPUT and DBG$OUTPUT to
point to the newly created window. For example:
DBG> SET MODE SEPARATE
(... new window ...)
DBG>
SYMBOLIC
Specifies that the debugger attempt to symbolize addresses that
appear in its output. This is the default behavior (since a
symbolic representation is usually preferred). For example:
DBG> EVAL/ADDR X
7FFFFEC0
DBG> EXAMINE %HEX 7FFFFEC0
SUBR\X: 3
DBG> SET MODE NOSYM
DBG> EXAMINE %HEX 7FFFFEC0
7FFFFEC0: 3
MODULE
Sets the specified module(s). "Modules" are a subdivision of
your program. The exact definition depends on the language, for
example, in FORTRAN every subroutine is a module, whereas in ADA
every compilation unit is a module. Setting a module means that
the symbols in that module become available to the debugger.
Format:
SET MODULE [/qualifier] [module-name [,module-name] ... ]
Example:
DBG> EX X ! X is declared in SUBR
%DEBUG-W-NOSYMBOL, symbol 'X' is not in the symbol table
DBG> SET MODU SUBR
DBG> EX X ! Now you can examine X
SUBR\X: 5
Additional information available:
Parameters
module-name
Specifies the name of the module to be set.
Qualifiers
Additional information available:
/ALL
Specifies that all of the modules in your program be set.
(However, your "shareable image" modules is not set by a SET
MODULE/ALL - you have to explicitly set each one.)
/CALLS
Sets all the modules that currently have routines on the call
stack. These are the modules that are listed when you enter a
SHOW CALLS command. You would use the /CALLS qualifier to set
modules that might not have been dynamically set by the debugger.
/NORELATED
(Applies to ADA only).
This qualifier tells the debugger to set only the module or
modules specified in this command, but not the "with"ed packages
and subunit parents that would normally be set along with the
specified module. This can degrade the debugger's ability to
look up symbols to some extent, for example, names that are
visible in ADA because of a "with" clause are not visible in the
debugging session if the "with"ed package is not set.
/RELATED
(Applies to ADA only).
This qualifier is the default. "Related module setting" means
that when you set an ADA module, all "with"ed package specs are
also set for you, and if the module is a subunit, its parent is
set for you. This enables the debugger to achieve the same name
visibility rules as the ADA language.
OUTPUT
Specifies whether or not to send output to the terminal, and
whether or not to send output to a log file.
Format:
SET OUTPUT option [,option...]
Example:
DBG> SET OUTPUT LOG ! Enable logging
DBG> SET OUTPUT NOTERM ! Turn off terminal output
! After the above two commands, output is only going
! to the log file, not to the terminal
DBG> SET OUT NOTERM,NOLOG
%DEBUG-I-OUTPUTLOST, output being lost
! After the above, output is going to neither the terminal
! or the log file, so you get an informational that output
! is being lost. This is obviously a useless output mode.
DBG> SET OUT TERM,NOLOG ! Back to the default
Additional information available:
LOGNOLOGNOSCREEN_LOGNOTERMINALNOVERIFY
SCREEN_LOGTERMINALVERIFY
Parameters
option
May be one of the following output parameters:
LOG NOLOG NOTERMINAL NOVERIFY
TERMINAL VERIFY SCREEN_LOG NOSCREEN_LOG
LOG
Specifies that both debugger output and user input be recorded in
a log file. If you specify the name of the log file by the SET
LOG command, the debugger writes to that file; otherwise, the
debugger writes to a file with the default file specification
DEBUG.LOG.
NOLOG
Specifies that debugger output and user input not be recorded in
a log file. This is the default.
NOSCREEN_LOG
Specifies that screen images should not be logged to the log
file, even when logging is otherwise enabled. This is the
default.
NOTERMINAL
Specifies that debugger output, except for diagnostic messages,
not be displayed at the terminal.
NOVERIFY
Specifies that the debugger's echoing of commands in command
procedures and in DO Command Sequences not be included as
debugger output. This is the default.
SCREEN_LOG
Specifies that screen images should be written to the log file
whenever screen mode is set and logging is enabled by the LOG
option. This parameter can cause log file to get very large, and
should be used with caution.
TERMINAL
Specifies that debugger output be displayed at the terminal.
This is the default.
VERIFY
Specifies that the debugger's echoing of commands in command
procedures and in DO Command sequences be included as debugger
output.
PROCESS
Note: This command applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS).
The SET PROCESS command establishes the visible process, modifies
characteristics of one or more processes, or enables/disables
dynamic process setting.
Format:
SET PROCESS [/qualifier] [process-spec[, . . . ]]
By default, commands are executed in the context of the visible
process. The visible process is the process that is your current
debugging context. Symbol lookups and the setting of
breakpoints, tracepoints, and watchpoints are done in the context
of the visible process.
The DO command enables you to execute commands in the context of
specific processes or of all processes. The DO command is
equivalent to entering a SET PROCESS/VISIBLE command for each
process specified (or for all processes, if no process is
specified with the DO command) and then entering the specified
commands.
Dynamic process setting is enabled by default and is controlled
with the /[NO]DYNAMIC qualifier. When dynamic process setting is
enabled (SET PROCESS/DYNAMIC), whenever the debugger suspends
program execution and displays its prompt, the process in which
execution is suspended becomes the visible process automatically.
Additional information available:
Examples
1 DBG_1> SET PROCESS/HOLD/ALL
DBG_1> SHOW PROCESS/ALL
Number Name Hold State Current PC
* 1 TEST_X YES step PROG\%LINE 50
2 TEST_Y YES break PROG\%LINE 71
The command SET PROCESS/HOLD/ALL puts all processes on hold.
This is confirmed in the SHOW PROCESS/ALL display.
2 DBG_1> SET PROCESS/NOHOLD %VISIBLE_PROCESS
DBG_1> SHOW PROCESS/ALL
Number Name Hold State Current PC
* 1 TEST_X step PROG\%LINE 50
2 TEST_Y YES break PROG\%LINE 71
The command SET PROCESS/NOHOLD %VISIBLE_PROCESS releases the
visible process from hold. This is confirmed in the SHOW
PROCESS/ALL display.
3 DBG_1> SET PROCESS TEST_Y
DBG_2> SHOW PROCESS
Number Name Hold State Current PC
* 2 TEST_Y YES break PROG\%LINE 71
The command SET PROCESS TEST_Y makes process TEST_Y the visible
process. The command SHOW PROCESS displays information about the
visible process, by default.
4 DBG_1> SET PROCESS/HOLD/ALL
DBG_1> DO (EXAMINE X; STEP)
For %PROCESS_NUMBER 1
MAIN_PROG\X: 78
For %PROCESS_NUMBER 2
TEST\X: 29
stepped to MAIN_PROG\%LINE 26 in %PROCESS_NUMBER 1
26: K = K + 1
DBG_1>
The command SET PROCESS/HOLD/ALL puts all processes on hold. The
DO command broadcasts the commands EXAMINE X and STEP to all
processes (processes 1 and 2 in this case). The STEP is executed
in the visible process, process 1, because a hold condition in
the visible process is ignored. Because process 2 is on hold,
execution is inhibited in that process.
Parameters
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.
%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 (*)
You can also use the asterisk wildcard character (*) to specify
all processes.
Qualifiers
Additional information available:
/ALL/DYNAMIC/HOLD/NODYNAMIC/NOHOLD/VISIBLE
/ALL
Applies the SET PROCESS command to all processes. Do not specify
a process with this qualifier. Do not specify /[NO]DYNAMIC, or
/VISIBLE with /ALL.
/DYNAMIC
Enables dynamic process setting (default). When dynamic process
setting is enabled, whenever the debugger suspends execution and
displays its prompt, the process in which execution is suspended
becomes the visible process automatically. Do not specify a
process with /DYNAMIC. Do not specify /ALL, /[NO]HOLD, or
/VISIBLE with /DYNAMIC.
/HOLD
Puts a specified process on hold. This prevents images in that
process from executing when you enter a GO, STEP, or CALL
command, unless the process is the visible process. A hold
condition in the visible process is ignored. The behavior
described also applies when you use the DO command to broadcast a
GO, STEP, or CALL command to specific processes.
If no process is specified, /HOLD puts the visible process on
hold. See the descriptions of the GO, STEP, CALL, EXIT, and QUIT
commands for the effects of these commands on held processes. Do
not specify /[NO]DYNAMIC with /HOLD.
/NODYNAMIC
Disables dynamic process setting. When dynamic process setting
is disabled, the visible process remains unchanged until you
specify another process with the SET PROCESS/VISIBLE command. Do
not specify a process with /NODYNAMIC. Do not specify /ALL,
/[NO]HOLD, or /VISIBLE with /NODYNAMIC.
/NOHOLD
Unholds a specified process. This permits images in that process
to execute when you enter a GO, STEP, or CALL command, regardless
of which process is the visible process. The behavior described
also applies when you use the DO command to broadcast a GO, STEP,
or CALL command to specific processes.
If no process is specified, /NOHOLD unholds the visible process.
See the descriptions of the GO, STEP, CALL, EXIT, and QUIT
commands for the effects of these commands on unheld processes.
Do not specify /[NO]DYNAMIC with /NOHOLD.
/VISIBLE
Makes the specified process the visible process. This switches
your debugging context to the specified process, so that symbol
lookups and the setting of breakpoints, tracepoints, and
watchpoints are done in the context of that process. You must
specify one, and only one, process. If you do not specify
/VISIBLE, it is assumed by default. Do not specify /ALL, or
/[NO]DYNAMIC with /VISIBLE.
PROMPT
Changes the debugger prompt string from DBG> to a string of your
choice. In addition, the /[NO]SUFFIX and /[NO]POP qualifiers
control convenience features for debugging multiprocess programs
or using the debugger at a VAXstation, respectively.
Format:
SET PROMPT [/qualifier] [prompt-parameter]
Additional information available:
Examples
1 DBG> SET PROMPT "$ "
$ SET PROMPT "d b g : "
d b g : SET PROMPT "DBG> "
DBG>
The successive SET PROMPT commands change the debugger prompt
from "DBG>" to "$", to "d b g :", then back to "DBG>".
2 DBG_1> SET PROMPT/NOSUFFIX "dbg> "
dbg> SET PROMPT/SUFFIX
DBG_1> SET PROMPT/SUFFIX=PROCESS_NUMBER "xyz_"
xyz_1> SET PROMPT/SUFFIX=PROCESS_NAME
SMITH> SET PROMPT/SUFFIX=PROCESS_NAME "John "
John SMITH> SET PROMPT/SUFFIX=PROCESS_PID
20800E4D>
The successive SET PROMPT commands show the effect of the
/[NO]SUFFIX qualifier and the prompt-parameter string for
multiprocess programs.
Parameters
prompt-parameter
Specifies the string which is to become the new prompt. If the
string contains spaces, semicolons, or lowercase characters, you
must enclose it in quotation marks (") or apostrophes ('). If
you do not specify a string, the current prompt string remains
unchanged. By default, the prompt string is DBG> for a non-
multiprocess debugging configuration (when the logical name
DBG$PROCESS is undefined or has the value DEFAULT).
By default, for a multiprocess debugging configuration (when
DBG$PROCESS has the value MULTIPROCESS), the prompt string
consists of a process-independent prefix (specified by
prompt-parameter) and a process-specific suffix (specified by the
/[NO]SUFFIX qualifier). The suffix changes automatically as the
visible process changes.
Qualifiers
Additional information available:
/SUFFIX[=process-identifier-type]
Note: This qualifier applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS).
/SUFFIX enables "dynamic prompt setting". As a result, the
prompt string includes a process-specific suffix that
automatically identifies the visible process. This is the
default behavior.
When you invoke the debugger with the RUN command to debug a
multiprocess program, the prompt string is DBG_1> by default.
This indicates that dynamic prompt setting is enabled and that
the visible process is process 1 (the first process connected to
the debugger). You can control the process-specific
prompt-string suffix by specifying one of the following
process-identifier-type keywords with the /SUFFIX qualifier:
PROCESS_NAME The prompt-string suffix is the VMS process name.
PROCESS_NUMBER The prompt-string suffix is the process number
(as shown in a SHOW PROCESS display). This is the
default.
PROCESS_PID The prompt-string suffix is the VMS process
identification number (PID).
The following table illustrates the possible kinds of prompt
strings for a multiprocess debugging configuration. Note that
the entire prompt string depends on the prompt-parameter command
parameter (which controls the process-independent prefix), and on
the values of /[NO]SUFFIX and the process- identifier-type
keyword (which control the process-specific suffix):
Prompt-
parameter Qualifier and Keyword Resulting
(prefix): (suffix): Prompt_String:
none none unchanged
none /NOSUFFIX DBG>
none /SUFFIX DBG_process-number> [1]
none /SUFFIX=PROCESS_NAME process-name>
none /SUFFIX=PROCESS_NUMBER process-number>
none /SUFFIX=PROCESS_PID pid>
XYZ_ /NOSUFFIX XYZ_>
XYZ_ /SUFFIX XYZ_process-number>
XYZ_ /SUFFIX=PROCESS_NAME XYZ_process-name>
XYZ_ /SUFFIX=PROCESS_NUMBER XYZ_process-number>
XYZ_ /SUFFIX=PROCESS_PID XYZ_pid>
_______________________________________________________
[1]The default prompt for a multiprocess debugging configuration
is DBG_process-number>, which is equivalent to entering the
following command:
DBG> SET PROMPT/SUFFIX=PROCESS_NUMBER "DBG_"
/NOPOP
Note: This qualifier applies only to VAXstations.
Causes the debugger window to not pop over other windows, nor to
attach to the keyboard automatically, when the debugger prompts
for input. This is the default behavior. If you do not specify
/NOPOP, the prompt behavior is set to /NOPOP.
/NOSUFFIX
Note: This qualifier applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS).
/NOSUFFIX disables dynamic prompt setting. As a result, the
prompt string does not include a process-specific suffix and does
not change when another process becomes the visible process.
/POP
Note: This qualifier applies only to VAXstations.
Causes the debugger window to pop over other windows and become
attached to the keyboard when the debugger prompts for input. If
you do not specify /POP, the prompt behavior is set to /NOPOP.
RADIX
SET RADIX is the new syntax (in place of SET MODE) for specifying
the radix (decimal, hex, octal, binary) of numbers. Input and
output radices can be specified separately.
Format:
SET RADIX[/qualifier...] radix
Example:
DBG> SET RADIX DECIMAL
DBG> EVAL 5 + 5
10
DBG> SET RADIX HEX
DBG> EVAL 5 + 5
0A
Additional information available:
BINARYDECIMALDEFAULTHEXADECIMALOCTAL
Parameters
radix
May be one of the following:
o BINARY -- Sets the radix to binary.
o DECIMAL -- Sets the radix to decimal.
o DEFAULT -- Sets the radix back to the language default.
o HEXADECIMAL -- Sets the radix to hexadecimal.
o OCTAL -- Sets the radix to octal.
BINARY
Sets the radix to binary.
DECIMAL
Sets the radix to decimal.
DEFAULT
Sets the radix back to the default for the current language.
HEXADECIMAL
Sets the radix to hexadecimal.
OCTAL
Sets the radix to octal.
Qualifiers
Additional information available:
/INPUT
Set only the input radix.
Example:
DBG> SET RADIX/INPUT DECIMAL; SET RADIX/OUTPUT HEX
DBG> EVAL 31
1F
/OUTPUT
Set only the output radix.
DBG> SET RADIX/INPUT DECIMAL; SET RADIX/OUTPUT HEX
DBG> EVAL 31
1F
/OVERRIDE
Set the "override" radix.
"Override" radix is like output radix except that it also causes
all data to be displayed as integer (that is, the type is
overriden).
SCOPE
Establishes how the debugger looks up symbols (variable names,
routine names, line numbers, and so on) when a path name prefix
is not specified.
Format:
SET SCOPE location[, . . . ]
Additional information available:
ExamplesParametersQualifiersDescription
Examples
1. DBG> EXAMINE Y
%DEBUG-W-NOUNIQUE, symbol 'Y' is not unique
DBG> SHOW SYMBOL Y
data CHECK_IN\Y
data INVENTORY\COUNT\Y
DBG> SET SCOPE INVENTORY\COUNT
DBG> EXAMINE Y
INVENTORY\COUNT\Y: 347.15
DBG>
In this example, the first EXAMINE Y command indicates that
symbol Y is multiply defined and cannot be resolved from the
current scope search list. The SHOW SYMBOL command displays the
different declarations of symbol Y. The SET SCOPE command tells
the debugger to look for symbols without path name prefixes in
routine COUNT of module INVENTORY. The subsequent EXAMINE
command can now interpret Y unambiguously.
2. DBG> CANCEL SCOPE
DBG> SET SCOPE/CURRENT 1
In this example, the CANCEL SCOPE command restores the default
scope search list (0,1,2, . . . ,n). The SET SCOPE/CURRENT
command then changes the scope search list to 1,2, . . . ,n,
so that symbol searches start with scope 1-that is, with the
caller of the routine in which execution is currently suspended.
The default source and instruction displays (SRC and INST) are
updated and now show the source and instructions, respectively,
for the caller of the routine in which execution is suspended.
3. DBG> SET SCOPE 1
DBG> EXAMINE %R5
In this example, the SET SCOPE command tells the debugger to look
for symbols without path name prefixes in scope 1 -- that is, in
the caller of the routine in which execution is suspended. The
EXAMINE command then displays the value of register R5 in the
caller routine. Note that the SET SCOPE command, when used
without the /CURRENT qualifier, does not update any source or
instruction display.
4. DBG> SET SCOPE 0, STACKS\R2, SCREEN
This command tells the debugger to look for symbols without path
name prefixes according to the following scope search list.
First the debugger looks in the PC scope (denoted by "0"). If
the debugger cannot find a specified symbol in the PC scope, it
then looks in routine R2 of module STACKS. If necessary, it then
looks in module SCREEN. If the debugger still cannot find a
specified symbol, it looks no further.
5. DBG> SHOW SYMBOL X
data ALPHA\X ! global X
data ALPHA\BETA\X ! local X
data X (global) ! same as ALPHA\X
DBG> SHOW SCOPE
scope: 0 [ = ALPHA\BETA ]
DBG> SYMBOLIZE X
address ALPHA\BETA\%R0:
ALPHA\BETA\X
DBG> SET SCOPE \
DBG> SYMBOLIZE X
address 00000200:
ALPHA\X
address 00000200: (global)
X
DBG>
In this example, the SHOW SYMBOL command indicates that there are
two declarations of the symbol X-a global ALPHA\X (shown twice)
and a local ALPHA\BETA\X. Within the current scope, the local
declaration of X (ALPHA\BETA\X) is visible. After the scope is
set to the global scope (SET SCOPE \), the global declaration of
X is made visible.
Parameters
location
Denotes a program region (scope) to be used for the
interpretation of symbols that you specify without a path name
prefix. A location may be any of the following, unless you
specify /CURRENT or /MODULE (see the qualifier descriptions):
path name Specifies the scope denoted by the path name
prefix prefix. A path name prefix consists of the names
of one or more nesting program elements (module,
routine, block, and so on), with each name
separated by a backslash character (\). When a
path name prefix consists of more than one name,
list a nesting element to the left of the \ and
a nested element to the right of the \. A common
path name prefix format is module\routine\block\.
If you specify only a module name and that name
is the same as the name of a routine, use the
/MODULE qualifier; otherwise, the debugger
assumes that you are specifying the routine.
n Specifies the scope denoted by the routine which
is n levels down the call stack (n is a decimal
integer). A scope specified by an integer changes
dynamically as the program executes. The value 0
denotes the routine that is currently executing,
the value 1 denotes the caller of that routine,
and so on down the call stack. The default scope
is 0,1,2, . . . ,n, where n is the number of
calls on the call stack.
\ Specifies the global scope - that is, the set of
all program locations in which a global symbol is
known. The definition of a global symbol and the
way it is declared depends on the language.
When you specify more than one location parameter, you establish
a scope search list. If the debugger cannot interpret the symbol
using the first parameter, it uses the next parameter, and
continues using parameters in order of their specification until
it successfully interprets the symbol or until it exhausts the
parameters specified.
Qualifiers
Additional information available:
/CURRENT
Establishes a scope search list that is like the default search
list (0,1,2, . . . ,n) but starts at the numeric scope
specified as the command parameter. Scope 0 is the PC scope, and
n is the number of calls in the call stack. When using SET
SCOPE/CURRENT, note the following conventions and behavior:
o The default scope search list must be in effect when the
command is issued.
o The command parameter specified must be one (and only one)
decimal integer from 0 to n.
o In screen mode, the command updates the default source and
instruction displays (SRC and INST) to show the routine on
the call stack in which symbol searches are to start.
o The default scope search list is restored when program
execution is resumed.
/MODULE
Indicates that the name specified as the command parameter is a
module name and not a routine name. You need to use /MODULE only
if you specify a module name as the command parameter and that
module name is the same as the name of a routine.
Description
By default, the debugger looks up a symbol specified without a
path name prefix according to the scope search list 0,1,2, . .
. ,n, where n is the number of calls in the call stack. This
scope search list is based on the current PC value and changes
dynamically as the program executes. The default scope means
that a symbol lookup such as "EXAMINE X" first looks for X in the
routine that is currently executing (scope 0); if no X is visible
there, the debugger looks in the caller of that routine (scope
1), and so on down the call stack; if X is not found in scope n,
the debugger searches the rest of the run-time symbol table (RST)
- that is, all set modules and the global symbol table (GST), if
necessary.
In most cases, this default scope search list enables you to
specify multiply-defined symbols uniquely by resolving
ambiguities in a predictable, natural way that is consistent with
language rules. But if you cannot access a multiply-defined
symbol, use either of the following techniques:
o Specify the symbol with a path name prefix. The path name
prefix consists of any nesting program units (for example,
module\routine\block) that are necessary to specify the
symbol uniquely. For example:
DBG> EXAMINE MOD4\ROUT3\X
DBG> TYPE MOD4\27
o Establish a new default scope for symbol lookup by means of
the SET SCOPE command. You can then specify the symbol
without using a path name prefix. For example:
DBG> SET SCOPE MOD4\ROUT3
DBG> EXAMINE X
DBG> TYPE 27
The SET SCOPE command is useful in those cases where otherwise
you would need to use a path name repeatedly to specify symbols.
To restore the default scope search list, use the CANCEL SCOPE
command.
When the default scope search list is in effect, you can use the
command SET SCOPE/CURRENT to specify that symbol searches start
at a numeric scope other than scope 0, relative to the call stack
(for example, scope 2).
When you use the SET SCOPE command, the debugger searches only
the program locations you specify explicitly, unless you use the
/CURRENT qualifier. Also, the scope or scope search list
established with a SET SCOPE command remains in effect until you
restore the default scope search list or enter another SET SCOPE
command. However, if you use the /CURRENT qualifier, the default
scope search list is restored whenever program execution is
resumed.
If a name you specify in a SET SCOPE command is the name of both
a module and a routine, the debugger sets the scope to the
routine. In such cases, use the command SET SCOPE/MODULE if you
want to set the scope to the module.
If you specify a module name in a SET SCOPE command, the debugger
"sets" that module if it is not already set. However, if you
want only to set a module, use the SET MODULE command rather than
the SET SCOPE command, to avoid the possibility of disturbing the
current scope search list.
SEARCH
Establishes current SEARCH parameters to be used by the debugger
whenever a SEARCH command qualifier is not specified in a SEARCH
command.
SEARCH parameters determine whether the debugger searches for all
occurrences (ALL) of the string or only the next occurrence
(NEXT) of the string, and whether the debugger displays any
occurrence of the string (STRING) or only those occurrences in
which the string is not bounded on either side by a character
that cannot be part of an identifier in the current language
(IDENTIFIER).
You can specify more than one SEARCH parameter in a single SET
SEARCH command by separating each parameter with a comma.
Format:
SET SEARCH option [,option...]
Additional information available:
Parameters
option
Specifies the current SEARCH parameters.
o ALL -- specifies that the debugger search for all occurrences
of the string in the specified range and display every line
containing an occurrence of the string.
o NEXT -- specifies that the debugger search for the first
occurrence of the string in the specified range and display
the line containing this occurrence. This is the default.
o IDENTIFIER -- specifies that the debugger search for an
occurrence of the string in the specified range but display
the string only if it is bounded on either side by af
character that cannot be part of an identifier in the current
language.
o STRING -- specifies that the debugger search for and display
the string as specified, and not interpret the context
surrounding an occurrence of the string, as it does in the
case of IDENTIFIER. This is the default.
ALL
Specifies that the debugger search for all occurrences of the
string in the specified range and display every line containing
an occurrence of the string.
IDENTIFIER
Specifies that the debugger search for an occurrence of the
string in the specified range but display the string only if it
is bounded on either side by af character that cannot be part of
an identifier in the current language.
NEXT
Specifies that the debugger search for the first occurrence of
the string in the specified range and display the line containing
this occurrence. This is the default.
STRING
Specifies that the debugger search for and display the string as
specified, and not interpret the context surrounding an
occurrence of the string, as it does in the case of IDENTIFIER.
This is the default.
Examples
DBG> SET SEARCH ALL,IDENT
DBG> SEARCH FOO X ! Find all occurences of X in module FOO
module FOO
21: X = 3
33: Y = X+1
SOURCE
Directs the debugger in the location of source file(s) by
overriding selected field(s) in the full file specification of
the original (at compile time) source file(s).
Typically you would specify a directory, or a search list of
directories. For example:
DBG> SET SOURCE [],SRC$
The above says to first look for the source file in the current
working directory, then look for it in the directory with the
logical name SRC$. If several versions of the file exist in the
specified directory then the debugger attempts to choose the
right one by matching the date and time of the file with the
information it has in the symbol table.
Format:
SET SOURCE[/MODULE=modname][/EDIT] dirname[,dirname...]
Additional information available:
Parameters
dirname
Specifies one or more file-specification fields to insert in
place of the corresponding field(s) in the full file
specification of the original (at compile time) source file(s).
Dirname may consist of one, several, or all of the following
fields in the full file specification, which has the following
format:
node::device:[directory]file-name.file-type;version-number
Typically, the reason for using SET SOURCE is that the file has
been copied to another directory, and in this case you would just
specify the [directory] portion of the full file spec.
Qualifiers
Additional information available:
/MODULE=modname
Specifies that the indicated directory search list is to be used
in locating source files only for the specified module.
/EDIT
Specifies that the indicated directory search list is to be used
only for the EDIT command.
STEP
The SET STEP command establishes default qualifiers (/LINE,
/INTO, and so on) for subsequent STEP commands.
Format:
SET STEP step-default[,...]
The parameters that you specify in the SET STEP command have the
same names as the STEP command qualifiers.
You can override the current STEP defaults for the duration of a
single STEP command by specifying other qualifiers. Use the SHOW
STEP command to identify the current STEP defaults.
If you invoke screen mode with the keypad-key sequence PF1-PF3,
the command SET STEP NOSOURCE is entered in addition to the
command SET MODE SCREEN. Therefore, any display of source code
in output and DO displays that would result from a STEP command
or from a breakpoint, tracepoint, or watchpoint being triggered
is suppressed, to eliminate redundancy with the source display.
Additional information available:
BRANCHCALLEXCEPTIONINSTRUCTIONINTO
JSBLINENOJSBNOSHARENOSILENTNOSOURCENOSYSTEM
OVERRETURNSHARESILENTSOURCESYSTEM
Parameters
Step-default
The following parameters affect where the STEP command suspends
execution after a step:
SET STEP BRANCH
SET STEP CALL
SET STEP EXCEPTION
SET STEP INSTRUCTION
SET STEP INSTRUCTION=(opcode-list)
SET STEP LINE
SET STEP RETURN
The following parameters affect what output is seen when a STEP
command is executed:
SET STEP [NO]SILENT
SET STEP [NO]SOURCE
The following parameters affect what happens at a routine call:
SET STEP INTO
SET STEP [NO]JSB
SET STEP OVER
SET STEP [NO]SHARE
SET STEP [NO]SYSTEM
BRANCH
Subsequent STEP commands are treated as STEP/BRANCH (step to the
next branch instruction).
CALL
Subsequent STEP commands are treated as STEP/CALL (step to the
next call instruction).
EXCEPTION
Subsequent STEP commands are treated as STEP/EXCEPTION (step to
the next exception condition).
INSTRUCTION
Subsequent STEP commands are treated as STEP/INSTRUCTION (step to
the next instruction). You can also specify one or more
instructions (INSTRUCTION=(opcode- list)). The debugger then
steps to the next instruction that is in the specified list.
INTO
Subsequent STEP commands are treated as STEP/INTO (step into
called routines) rather than STEP/OVER (step over called
routines). When INTO is in effect, you can qualify the types of
routines to step into by means of the [NO]JSB, [NO]SHARE, and
[NO]SYSTEM parameters, or by using the STEP/[NO]JSB,
STEP/[NO]SHARE, and STEP/[NO]SYSTEM command/qualifier
combinations (the latter three take effect only for the immediate
STEP command).
JSB
If INTO is in effect, subsequent STEP commands are treated as
STEP/INTO/JSB (step into routines called by a JSB instruction as
well as those called by a CALL instruction). This is the default
for all languages except DIBOL.
LINE
Subsequent STEP commands are treated as STEP/LINE (step to the
next line). This is the default for all languages.
NOJSB
If INTO is in effect, subsequent STEP commands are treated as
STEP/INTO/NOJSB (step over routines called by a JSB instruction,
but step into routines called by a CALL instruction). This is
the default for DIBOL.
NOSHARE
If INTO is in effect, subsequent STEP commands are treated as
STEP/INTO/NOSHARE (step over called routines in shareable images,
but step into other routines).
NOSILENT
Subsequent STEP commands are treated as STEP/NOSILENT (after a
step, display the "stepped to . . . " message). This is the
default.
NOSOURCE
Subsequent STEP commands are treated as STEP/NOSOURCE (after a
step, do not display the source line for the current location).
Also, subsequent SET BREAK, SET TRACE, and SET WATCH commands are
treated as SET BREAK/NOSOURCE, SET TRACE/NOSOURCE, and SET
WATCH/NOSOURCE, respectively (at a breakpoint, tracepoint, or
watchpoint, do not display the source line for the current
location).
NOSYSTEM
If INTO is in effect, subsequent STEP commands are treated as
STEP/INTO/NOSYSTEM (step over called routines in system space,
but step into other routines).
OVER
Subsequent STEP commands are treated as STEP/OVER (step over all
called routines) rather than STEP/INTO (step into called
routines). SET STEP OVER is the default.
RETURN
Subsequent STEP commands are treated as STEP/RETURN (step to the
RET instruction of the routine that is currently executing --
that is, up to the point just prior to transferring control back
to the calling routine).
SHARE
If INTO is in effect, subsequent STEP commands are treated as
STEP/INTO/SHARE (step into called routines in shareable images as
well as into other called routines). This is the default.
SILENT
Subsequent STEP commands are treated as STEP/SILENT (after a
step, do not display the "stepped to . . . " message or the
source line for the current location).
SOURCE
Subsequent STEP commands are treated as STEP/SOURCE (after a
step, display the source line for the current location). Also,
subsequent SET BREAK, SET TRACE, and SET WATCH commands are
treated as SET BREAK/SOURCE, SET TRACE/SOURCE, and SET
WATCH/SOURCE, respectively (at a breakpoint, tracepoint, or
watchpoint, display the source line for the current location).
This is the default.
SYSTEM
If INTO is in effect, subsequent STEP commands are treated as
STEP/INTO/SYSTEM (step into called routines in system space (P1
space) as well as into other called routines). This is the
default.
Examples
1 DBG> SET STEP INSTRUCTION,NOSOURCE
This command causes the debugger to execute the program to the
next instruction when a STEP command is entered, and to not
display lines of source code with each STEP command.
2 DBG> SET STEP LINE,INTO,NOSYSTEM,NOSHARE
This command causes the debugger to execute the program to the
next line when a STEP command is entered, and to step into called
routines in user space only. The debugger steps over routines in
system space and in shareable images.
TASK
(Only valid for ADA multitasking programs).
Modifies certain characteristics of tasks in your program. Using
this command, you can change a task's priority, put a task on
hold, switch to a different active task, make a task visible to
the debugger, cause a task to abort, or change the time all tasks
are given to execute.
For those commands which operate on individual tasks, the tasks
to modify can be specified by taskname parameters and/or by "task
selection qualifiers". If neither of these means are used, the
task defaults to the "visible task", %VISIBLE_TASK. (See SET
TASK/VISIBLE and SET TASK/ACTIVE).
Format:
SET TASK [/qualifier...] [taskname [,taskname...] ]
Additional information available:
ParametersSelection QualifiersAttribute QualifiersExamples
Parameters
taskname
A taskname parameter may be a pathname which designates a task
declared in your program, for example, MY_MAIN\PROG\MONITOR.
A taskname parameter may also be a task ID or pseudo taskname. A
task ID is a unique number that is associated with a task at the
time the task is created. The debugger syntax for specifying a
task ID is "%TASK n", where "n" is a positive decimal integer.
You can see what task IDs are assigned to currently existing
tasks by typing SHOW TASK/ALL.
A pseudo taskname is one of the built-in symbols %ACTIVE_TASK,
%CALLER_TASK, %NEXT_TASK, or %VISIBLE_TASK. Type HELP
Built_in_Symbols for more information on these.
The default taskname parameter is %VISIBLE_TASK.
Selection Qualifiers
There is only one task selection qualifier, the /ALL qualifier.
It cannot be used in combination with taskname parameters.
Additional information available:
/ALL
Selects all tasks that currently exist in your program to be
modified as specified by the other qualifiers given. Taskname
parameters are not permitted.
Attribute Qualifiers
These qualifiers determine what task attributes are to be
modified. If no task attribute qualifer is given, the qualifier
/VISIBLE is assumed by default.
Additional information available:
/ABORT/ACTIVE/HOLD/PRIORITY/RESTORE/TIME_SLICE
/VISIBLE
/ABORT
Forces an ABORT of the selected tasks.
/ACTIVE
Causes the task given by the taskname parameter to become the
"active task" (type HELP Built_in_Symbols %ACTIVE_TASK). The
active task is that task which executes instructions when the
debugger is left (as when you type GO, STEP, or CALL). It is
marked with a '*' in the SHOW TASK display.
The SET TASK/ACTIVE command allows you to force a "task switch"
to the named task without leaving the debugger.
In addition to making the named task become the active task, this
command also makes it become the visible task, which is the
default task assumed by other debugging commands.
This qualifier requires exactly one taskname parameter and the
named task must be in either the READY or the RUN state.
/HOLD
/HOLD
/NOHOLD
Controls whether or not the selected task(s) is allowed to make
the transition into the RUN state (that is become the active
task).
Putting a task on hold restricts the state transitions the task
can make once the program is subsequently allowed to execute. A
task that is already in the RUNNING state (the active task) and
is then put on hold can continue to execute as long as it remains
in the RUNNING state. If the task leaves the RUNNING state while
on hold, or is put on hold while in another state, it cannot
enter the RUNNING state until the hold is removed or until it is
made active with the SET TASK/ACTIVE command.
/PRIORITY = n
Causes the selected task(s) to have its priority changed to n,
where n is a decimal integer from 0 to 15 inclusive. (VAX Ada
specifies subtype PRIORITY to be INTEGER range 0..15).
/RESTORE
Causes the selected task(s) to have its natural priority
restored.
This allows you to undo the effect of SET TASK/PRIORITY, without
the need to remember the task's natural priority. The task's
natural priority is the value given by the pragma PRIORITY in the
task specification.
/TIME_SLICE = t
Change the current setting of the value of the Ada pragma
TIME_SLICE to t, where t is given as a fixed point decimal number
of seconds.
This is the time used by the Ada multitasking system for
round-robin scheduling. (See the command SET TASK/TIME_SLICE).
The task list and task selection qualifiers must be omitted.
/VISIBLE
Causes the task given by the taskname parameter to become the
"visible task" (type HELP Built_in_Symbols %VISIBLE_TASK).
The visible task is the default task assumed by debugging
commands when you do not (or cannot) specify a task. For
example, the debugger command EXAMINE %R0 displays register 0 of
the visible task.
The task whose execution entered the debugger is called the
active task. Each time the debugger is entered, the visible task
and the active task are one and the same. Using this qualifier,
you can make the visible task be a task other than the active
task.
This qualifier requires exactly one taskname parameter.
Examples
SET TASK/PRI=3 X,Y
Set the priority of tasks X and Y to 3.
SET TASK/RESTORE X
Restore the priority of task X.
SET TASK/ALL/HOLD
Put all tasks on hold.
SET TASK/ALL/NOHOLD
Remove hold status from all tasks that are currently held.
SET TASK/VISIBLE X
Make task X be the default visible task.
SET TASK/ACTIVE %TASK 3
Switch from the currently active task to task 3 and remain in the
debugger.
TERMINAL
The debugger obtains the size of your terminal when you begin
your debugging session, and uses this size information (width and
height) when formatting output. You may change your terminal
size during a debugging session with the SET TERMINAL command.
This command adjusts all the predefined windows for the new
screen size. (For example, H1 changes size to remain at the top
half of the new screen.)
This command also adjusts screen displays. Those displays that
are marked as DYNAMIC (See HELP [SET] DISPLAY/DYNAMIC) are
adjusted just like all the windows. Those displays that are
marked NODYNAMIC are not be affected.
Additional information available:
Examples
DBG> SET TERM/WIDTH:132
! Or on a VAXstation...
DBG> SET TERM/PAGE=55/WIDTH=155
Qualifiers
Additional information available:
/PAGE
Sets the terminal page size (that is, the number of lines on the
screen).
Format:
SET TERMINAL/PAGE:n
This qualifier specifies that the terminal is now n rows long.
"n" may have any value between 18 and 100. This qualifier is
most commonly used on a VAXstation.
/WIDTH
Sets the terminal screen width.
Format:
SET TERMINAL/WIDTH:n
This qualifier specifies that the terminal is now n columns wide.
Typically n is either 80 or 132 on VT100 type terminals, but may
have any value between 20 and 255. (these sizes are most
commonly used on a VAXstation.)
TRACE
Establishes a tracepoint at the location denoted by an address
expression, at instructions of a particular class, or at the
occurrence of specified events.
Format:
SET TRACE[/qualifiers]
[address-expression[,...]]
[ WHEN (conditional-expression)]
[ DO (command[;...]]
When a tracepoint is triggered, the debugger takes the following
action:
1. Suspends program execution at the tracepoint location.
2. If /AFTER was specified when the tracepoint was set, checks
the AFTER count. If the specified number of counts has not
been reached, execution is resumed and the debugger does not
perform the remaining steps.
3. Evaluates the expression in a WHEN clause, if one was
specified when the tracepoint was set. If the value of the
expression is FALSE, execution is resumed and the debugger
does not perform the remaining steps.
4. Reports that execution has reached the tracepoint location by
issuing a "trace ..." message, unless /SILENT was specified.
5. Displays the line of source code corresponding to the
tracepoint, unless /NOSOURCE or /SILENT was specified when
the breakpoint was set, or SET STEP NOSOURCE was entered
previously.
6. Executes the commands in a DO clause, if one was specified
when the tracepoint was set.
7. Resumes execution.
You set a tracepoint at a particular location in your program by
specifying an address expression with the SET TRACE command. You
set a tracepoint on consecutive source lines, classes of
instructions, or events by specifying a qualifier with the SET
TRACE command. Generally, you must specify either an address
expression or a qualifier, but not both. The only exception is
with the /EVENT qualifier, which requires that you specify an
event name keyword and permits you also to specify an address
expression for certain event names.
If you set a tracepoint at a location currently used as a
breakpoint, the breakpoint is canceled in favor of the
tracepoint, and vice versa.
Tracepoints may be user defined or predefined. User defined
tracepoints are those that you set explicitly with the SET TRACE
command. Predefined tracepoints, which depend on the type of
program you are debugging (for example, Ada or multiprocess), are
established automatically when you invoke the debugger. Use the
SHOW TRACE command to identify all tracepoints that are currently
set. Any predefined tracepoints are identified as such.
User defined and predefined tracepoints are set and canceled
independently. For example, a location or event may have both a
user defined and a predefined tracepoint. Canceling the user
defined tracepoint does not affect the predefined tracepoint, and
conversely.
Additional information available:
Examples
1 DBG> SET TRACE SUB3
This command causes the debugger to trace the start of routine
SUB3 when that routine is executed.
2 DBG> SET TRACE/BRANCH/CALL
This command causes the debugger to trace every BRANCH
instruction and every CALL instruction encountered during program
execution.
3 DBG> SET TRACE/LINE/INTO/NOSHARE/NOSYSTEM
This command causes the debugger to trace the start of every
source line, including lines in called routines (/INTO) but not
in shareable image routines (/NOSHARE) or system routines
(/NOSYSTEM).
4 DBG> SET TRACE/NOSOURCE TEST5\%LINE 14 WHEN (X .NE. 2) DO (EX Y)
This command causes the debugger to trace line 14 of module TEST5
when X is not equal to 2. At the tracepoint, the command EXAMINE
Y is issued. The /NOSOURCE qualifier suppresses the display of
source code at the tracepoint.
5 DBG> SET TRACE/INSTRUCTION WHEN (X .NE. 0)
This command causes the debugger to trace when X is not equal to
0. The condition is tested at each instruction encountered
during execution.
6 DBG> SET TRACE/SILENT SUB2 DO (SET WATCH K)
This SET TRACE command causes the debugger to trace the start of
routine SUB2 during execution. At the tracepoint, the DO clause
sets a watchpoint on variable K. The /SILENT qualifier on the
SET TRACE command suppresses the "trace . . . " message and
the display of source code at the tracepoint. This example shows
a convenient way of setting a watchpoint on a nonstatic (stack or
register) variable. A nonstatic variable is defined only when
its defining routine (SUB2, in this case) is active (on the call
stack).
7 DBG> SET TRACE/RETURN ROUT4 DO (EXAMINE X)
This SET TRACE command causes the debugger to trace the RET
instruction of routine ROUT4 (that is, just before execution
returns to the calling routine). At the tracepoint, the DO
clause issues the command EXAMINE X. This example shows a
convenient way of obtaining the value of a nonstatic variable
just before execution leaves that variable's defining routine.
8 DBG> SET TRACE/EVENT=TERMINATED
This command causes the debugger to trace when an Ada task makes
a transition to the TERMINATED state.
Parameters
address-expression
Specifies an address expression (a program location) at which a
tracepoint is to be set. With high- level languages, this is
typically a line number, a routine name, or a label, and may
include a path name to specify the entity uniquely. More
generally, an address expression may also be a virtual memory
address or a register and may be composed of numbers (offsets)
and symbols, as well as one or more operators, operands, or
delimiters.
Do not specify the asterisk wildcard character (*). Do not
specify an address expression with /ACTIVATING, /BRANCH, /CALL,
/EXCEPTION, /INSTRUCTION[=(opcode- list)], /INTO, /[NO]JSB,
/LINE, /OVER, /[NO]SHARE, /[NO]SYSTEM, or /TERMINATING. The
/MODIFY and /RETURN qualifiers are used with specific kinds of
address expressions.
If you specify a virtual memory address or an address expression
whose value is not a symbolic location, check (with the EXAMINE
command) that an instruction actually begins at the byte of
memory so indicated. If an instruction does not begin at this
byte, a run- time error may occur when an instruction including
that byte is executed. When you set a tracepoint by specifying
an address expression whose value is not a symbolic location, the
debugger does not verify that the location specified marks the
beginning of an instruction. CALLS and CALLG routines start with
an entry mask.
command
Specifies a debugger command that is to be executed as part of
the DO clause when trace action is taken.
conditional-expression
Specifies a conditional expression in the currently set language
that is to be evaluated whenever execution reaches the
tracepoint. If the expression is TRUE, trace action occurs, and
the debugger reports that a tracepoint has been reached. If the
expression is FALSE, trace action does not occur. In this case,
a report is not issued, the commands specified by the DO clause
are not executed, and program execution is continued.
Qualifiers
The qualifiers can be grouped as follows.
The /LINE qualifier sets a tracepoint on each line of source
code.
The following qualifiers set tracepoints on classes of
instructions. Note that use of these qualifiers and of the /LINE
qualifier causes the debugger to trace every instruction of your
program as it executes and thus significantly slows down
execution: /BRANCH, /CALL, /INSTRUCTION,
/INSTRUCTION=(opcode-list), /RETURN.
The following qualifiers set tracepoints on classes of events:
/ACTIVATING, /EVENT=event-name, /EXCEPTION, /TERMINATING.
The following qualifiers affect what happens at a routine call:
/INTO, /[NO]JSB, /OVER, /[NO]SHARE, /[NO]SYSTEM.
The following qualifiers affect what output is displayed when a
tracepoint is reached: /[NO]SILENT, /[NO]SOURCE.
The following qualifiers affect the timing and duration of
tracepoints: /AFTER:n, /TEMPORARY.
The /MODIFY qualifier is used to monitor changes at program
locations (typically changes in the values of variables).
Additional information available:
/ACTIVATING/AFTER:n/BRANCH/CALL/EVENT/EXCEPTION
/INSTRUCTION/INSTRUCTION/INTO/JSB/LINE
/MODIFY/NOJSB/NOSHARE/NOSILENT/NOSOURCE/NOSYSTEM
/OVER/RETURN/SHARE/SILENT/SOURCE/SYSTEM/TEMPORARY
/TERMINATING
/ACTIVATING
Note: This qualifier applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS).
Causes the debugger to trace when a new process comes under
debugger control. This is the default behavior. Do not specify
an address expression with /ACTIVATING. See also /TERMINATING.
/AFTER:n
Specifies that trace action not be taken until the nth time the
designated tracepoint is encountered (n is a decimal integer).
Thereafter, the tracepoint occurs every time it is encountered
provided that conditions in the WHEN clause (if specified) are
TRUE. The command SET TRACE/AFTER:1 has the same effect as the
SET TRACE command.
/BRANCH
Causes the debugger to trace every branch instruction encountered
during program execution (including BEQL, BGTR, BLEQ, BGEQ, BLSS,
BGTRU, BLEQU, BVC, BVS, BGEQU, BLSSU, BRB, BRW, JMP, BBS, BBC,
BBSS, BBCS, BBSC, BBCC, BBSSI, BBCCI, BLBS, BLBC, ACBB, ACBW,
ACBL, ACBF, ACBD, ACBG, ACBH, AOBLEQ, AOBLSS, SOBGEQ, SOBGTR,
CASEB, CASEW, CASEL). Do not specify an address expression with
/BRANCH. See also /INTO, /OVER.
/CALL
Causes the debugger to trace every call instruction encountered
during program execution (including the CALLS, CALLG, BSBW, BSBB,
JSB, RSB, and RET instructions). Do not specify an address
expression with /CALL. See also /INTO, /OVER.
/EVENT=event-name
Note: This qualifier applies only to Ada and SCAN. See the VAX
Ada and VAX SCAN documentation for complete information.
Causes the debugger to trace the specified event (if that event
is defined and detected by the run-time system). If you specify
an address expression with /EVENT, causes the debugger to trace
whenever the specified event occurs for that address expression.
Event names depend on the run-time facility. You can display the
event names associated with the current run-time facility by
entering the SHOW EVENT_FACILITY command. Note that you cannot
specify an address expression with certain event names.
/EXCEPTION
Causes the debugger to trace every exception that is signaled.
The trace action occurs before any user- written exception
handlers are invoked. Do not specify an address expression with
/EXCEPTION.
As a result of a SET TRACE/EXCEPTION command, whenever your
program generates an exception condition, the debugger reports
the exception condition and resignals the exception, thus
allowing any user-declared exception handler to execute.
/INSTRUCTION
Causes the debugger to trace every instruction executed. Do not
specify an address expression with /INSTRUCTION. See also /INTO,
/OVER.
/INSTRUCTION=(opcode-list)
Causes the debugger to trace every instruction whose opcode is in
the list. Do not specify an address expression with
/INSTRUCTION. See also /INTO, /OVER.
/INTO
Applies only to tracepoints set with /BRANCH, /CALL,
/INSTRUCTION[=(opcode-list)], or /LINE; that is, when an address
expression is not explicitly specified. When used with those
qualifiers, causes the debugger to trace the specified points
within called routines (as well as within the routine where
execution is currently suspended). /INTO is the default behavior
and is the opposite of /OVER.
When using /INTO, you can further qualify the trace action with
the /[NO]JSB, /[NO]SHARE, and /[NO]SYSTEM qualifiers.
/JSB
Qualifies /INTO. Use /JSB only with /INTO and one of the
following qualifiers: /BRANCH, /CALL,
/INSTRUCTION[=(opcode-list)], or /LINE. /JSB permits the
debugger to set tracepoints within routines that are called by
the JSB or CALL instruction. /JSB is the default for all
languages except DIBOL. Do not specify an address expression
with /[NO]JSB.
/LINE
Causes the debugger to trace the start of each new line. Do not
specify an address expression with /LINE. See also /INTO, /OVER.
/MODIFY
Causes the debugger to report a tracepoint whenever an
instruction writes to and modifies the value of a location
indicated by a specified address expression. The address
expression is typically a variable name.
The command SET TRACE/MODIFY X is equivalent to the command SET
WATCH X DO(GO). SET TRACE/MODIFY operates under the same
restrictions as SET WATCH.
If you specify an absolute address for the address expression,
the debugger may not be able to associate the address with a
particular data object. In this case, the debugger uses a
default length of 4 bytes. You can change this length, however,
by setting the type to either WORD (SET TYPE WORD, which changes
the default length to 2 bytes) or BYTE (SET TYPE BYTE, which
changes the default length to 1 byte). SET TYPE LONGWORD
restores the default length of 4 bytes.
/NOJSB
Qualifies /INTO. Use /NOJSB only with /INTO and one of the
following qualifiers: /BRANCH, /CALL,
/INSTRUCTION[=(opcode-list)], or /LINE.
/NOJSB specifies that tracepoints not be set within routines
called by JSB instructions. /NOJSB is the default for DIBOL
programs. In DIBOL, user- written routines are called by the
CALL instruction and DIBOL run-time library routines are called
by the JSB instruction. Do not specify an address expression
with /NOJSB.
/NOSHARE
Qualifies /INTO. Use /NOSHARE only with /INTO and one of the
following qualifiers: /BRANCH, /CALL,
/INSTRUCTION[=(opcode-list)], or /LINE.
/NOSHARE specifies that tracepoints not be set within shareable
images. Do not specify an address expression with /[NO]SHARE.
/NOSILENT
Specifies that the "trace . . . " message is displayed at the
tracepoint. This is the default.
/NOSOURCE
Specifies that the source line for the current location is not
displayed at the tracepoint. See also SET STEP [NO]SOURCE.
/NOSYSTEM
Qualifies /INTO. Use /NOSYSTEM only with /INTO and one of the
following qualifiers: /BRANCH, /CALL,
/INSTRUCTION[=(opcode-list)], or /LINE.
/NOSYSTEM specifies that tracepoints not be set within system
routines (P1 space). Do not specify an address expression with
/SYSTEM.
/OVER
Applies only to tracepoints set with /BRANCH, /CALL,
/INSTRUCTION[=(opcode-list)], or /LINE; that is, when an address
expression is not explicitly specified. When used with those
qualifiers, causes the debugger to trace the specified points
only within the routine where execution is currently suspended
(not within called routines). /OVER is the opposite of /INTO
(the default behavior).
/RETURN
Causes the debugger to trace the RET (return) instruction of the
routine associated with the specified address expression (which
may be a routine name, line number, and so on). This qualifier
can only be applied to routines called with a CALLS or CALLG
instruction; it cannot be used with JSB routines. Tracing the
RET instruction enables you to inspect the local environment (for
example, obtain the values of local variables) before the RET
instruction deletes the routine's call frame from the call stack.
Causes the debugger to trace the RETURN (RET) instruction of the
specified routine. This qualifier can only be applied to
routines called with a CALLS or CALLG instruction; it cannot be
used with JSB routines.
For this qualifier, the address-expression parameter is an
instruction address within a CALLS or CALLG routine. It may
simply be a routine name, in which case it specifies the routine
start address. However, you can also specify another location in
a routine, so you can see only those returns that are taken after
a certain code path is followed.
A SET TRACE/RETURN command cancels a previous SET TRACE command
if the same address expresion is specified.
/SHARE
Qualifies /INTO. Use /SHARE only with /INTO and one of the
following qualifiers: /BRANCH, /CALL,
/INSTRUCTION[=(opcode-list)], or /LINE.
/SHARE (default) permits the debugger to set tracepoints within
shareable image routines as well as other routines. Do not
specify an address expression with /[NO]SHARE.
/SILENT
Specifies that the "trace . . . " message and the source line
for the current location are not displayed at the tracepoint.
/SILENT overrides /SOURCE.
/SOURCE
Specifies that the source line for the current location is
displayed at the tracepoint. This is the default. See also SET
STEP [NO]SOURCE.
/SYSTEM
Qualifies /INTO. Use /SYSTEM only with /INTO and one of the
following qualifiers: /BRANCH, /CALL,
/INSTRUCTION[=(opcode-list)], or /LINE.
/SYSTEM (default) permits the debugger to set tracepoints within
system routines (P1 space) as well as other routines. Do not
specify an address expression with /SYSTEM.
/TEMPORARY
Causes the tracepoint to disappear after it is triggered (the
tracepoint does not remain permanently set).
/TERMINATING
Causes the debugger to trace when a process performs an image
exit. This is the default behavior. Note that the debugger
always gains control and displays its prompt when the last image
of a single-process or multiprocess program exits. Do not
specify an address expression with /TERMINATING. See also
/ACTIVATING.
TYPE
Establishes the default type to be associated with untyped
program locations and, when the /OVERRIDE qualifier is specified,
the type to be associated with both untyped program locations and
program locations that have compiler-generated types.
Format:
SET TYPE [/qualifier] type-keyword
Additional information available:
ASCICASCIDASCIWASCIZBYTED_FLOATDATE_TIME
FLOATG_FLOATH_FLOATINSTRUCTIONLONGOCTAWORD
QUADWORDWORD
ParametersASCII:nPACKED:nTYPE=(t)QualifiersExamples
Parameters
type-keyword
May be one of the following debugger types:
o BYTE -- Type byte integer (length 1 byte).
o WORD -- Type word integer (length 2 bytes).
o LONGWORD -- Type longword integer (length 4 bytes).
o QUADWORD -- Type quadword integer (length 8 bytes).
o OCTAWORD -- Type octaword integer (length 16 bytes).
o PACKED:n -- Type packed decimal (length n nibbles).
o ASCII:n -- Type ASCII character (length n bytes). Each
character occupies one byte of memory. If you do not specify
a value for n, the debugger assumes a default length of 4
bytes. The value n is interpreted in decimal radix.
o ASCIC -- Counted ascii string (byte count).
o ASCIW -- Counted ascii string (word count).
o ASCIZ -- Zero-terminated ascii string.
o DATE_TIME -- Type date-time (internal VMS representation).
o INSTRUCTION -- Type instruction whose length is variable,
depending on the number of instruction operands and the kind
of addressing modes used.
o FLOAT -- F_floating type (length 4 bytes). Values of type
F_floating may range from .29*10**-38 to 1.7*10**38 with
approximately 7 decimal digits of precision.
o D_FLOAT -- D_floating type (length 8 bytes). Values of type
D_floating may range from .29*10**-38 to 1.7*10**38 with
approximately 16 decimal digits of precision.
o G_FLOAT -- G_floating type (length 8 bytes). Values of type
G_floating may range from .56*10**-308 to .9*10**308 with
approximately 15 decimal digits of precision.
o H_FLOAT -- H_floating type (length 16 bytes). Values of type
H_floating may range from .84*10**-4932 to .59*10**4932 with
approximately 33 decimal digits of precision.
o TYPE=(t) -- Same type as "t", where "t" is a variable in your
program.
ASCIC
Sets the default type to counted ASCII.
ASCID
Sets the default type to ASCID.
ASCII:n
Sets the default type to ASCII strings of length n.
ASCIW
Sets the default type to word-counted ASCII.
ASCIZ
Sets the default type to zero-terminated ASCII.
BYTE
Sets the default type to byte-integer.
D_FLOAT
Sets the default type to D_Floating.
DATE_TIME
Sets the default type to be VMS internal date/time
representation.
FLOAT
Sets the default type to single-precision floating.
G_FLOAT
Sets the default type to G_Floating.
H_FLOAT
Sets the default type to H_Floating.
INSTRUCTION
Sets the default type to instruction.
LONG
Sets the default type to LONG.
OCTAWORD
Sets the default type to OCTAWORD.
PACKED:n
Sets the default type to PACKED with length n.
QUADWORD
Sets the default type to QUADWORD.
TYPE=(t)
Sets the default type to be the same type as "t", where "t" is a
variable in your program.
WORD
Sets the default type to WORD.
Qualifiers
Additional information available:
/OVERRIDE
Indicates that the specified type be associated with untyped
program locations and with those locations that have
compiler-generated types.
Examples
DBG> SET TYPE ASCII
! Now untyped locations get displayed as ASCII strings.
DBG> EXAM 1000 ! Location 1000 has no compiler-generated type.
1000: "...."
DBG> SHOW SYM/TYPE X
data FOO\X
type: floating point (F_FLOAT, size 4 bytes)
DBG> EXAMINE X
FOO\X: 1.2 ! X does have a type (float), so it is
displayed
! according to that type.
DBG> SET TYPE/OVERR ASCII
DBG> EXAMINE X
FOO\X: "...." ! Now X is displayed as ASCII because of the
! /OVERRIDE qualifier on the SET TYPE.
WATCH
Establishes a watchpoint at the location denoted by an address
expression.
Format:
SET WATCH [/qualifiers]
address-expression [,...]
[ WHEN (conditional-expression)]
[ DO (command[;...])]
Whenever an instruction causes the modification of a watched
location, the debugger takes the following action:
1. Suspends program execution after that instruction has
completed execution.
2. If /AFTER was specified when the watchpoint was set, checks
the AFTER count. If the specified number of counts has not
been reached, execution continues and the debugger does not
perform the remaining steps.
3. Evaluates the expression in a WHEN clause, if one was
specified when the watchpoint was set. If the value of the
expression is FALSE, execution continues and the debugger
does not perform the remaining steps.
4. Reports that execution has reached the watchpoint location,
unless /SILENT was specified.
5. Reports the old (unmodified) value at the watched location.
6. Reports the new (modified) value at the watched location.
7. Displays the line of source code where execution is
suspended, unless /NOSOURCE or /SILENT was specified when the
watchpoint was set, or SET STEP NOSOURCE was entered
previously.
8. Executes the commands in a DO clause, if one was specified
when the watchpoint was set. If the DO clause contains a GO
command, execution continues and the debugger does not
perform the next step.
9. Issues the prompt.
For high-level language programs, the address expressions you
specify with the SET WATCH command are typically variable names.
If you specify an absolute memory address that is associated with
a compiler-generated type, the debugger symbolizes the address
and uses the length in bytes associated with that type to
determine the length in bytes of the watched location. If you
specify an absolute memory address that the debugger cannot
associate with a compiler-generated type, the debugger watches 4
bytes of virtual memory, by default, beginning at the byte
identified by the address expression. You can change this
length, however, by setting the type to either WORD (SET TYPE
WORD, which changes the default length to 2 bytes) or BYTE (SET
TYPE BYTE, which changes the default length to 1 byte). SET TYPE
LONGWORD restores the default length of 4 bytes.
You can set watchpoints on aggregates (that is, entire arrays or
records). A watchpoint set on an array or record triggers if any
element of the array or record changes. Thus, you do not need to
set watchpoints on individual array elements or record
components. Note, however, that you cannot set an aggregate
watchpoint on a variant record.
Additional information available:
ExamplesGlobal Section WatchpointsParametersStatic Nonstatic Watchpoints
Qualifiers
Examples
1 DBG> SET WATCH MAXCOUNT
This command establishes a watchpoint on the variable MAXCOUNT.
2 DBG> SET WATCH ARR
DBG> GO
.
.
watch of SUBR\ARR at SUBR\%LINE 12+8
old value:
(1): 7
(2): 12
(3): 3
new value:
(1): 7
(2): 12
(3): 28
break at SUBR\%LINE 14
DBG>
In this example, the SET WATCH command sets a watchpoint on the
three-element integer array, ARR. Execution is then resumed with
the GO command. The watchpoint is triggered whenever any array
element changes. In this case the third element changed.
3 DBG> SET TRACE/SILENT SUB2 DO (SET WATCH K)
In this example variable K is a nonstatic variable and is defined
only when its defining routine, SUB2, is active (on the call
stack). The SET TRACE command sets a tracepoint on SUB2. When
the tracepoint is triggered during execution, the DO clause sets
a watchpoint on K. The watchpoint is then canceled when
execution returns from routine SUB2. The /SILENT qualifier on
the SET TRACE command suppresses the "trace at . . . " message
and the display of source code at the tracepoint.
4 DBG_1> SET WATCH ARR(1)
DBG_1> SHOW WATCH
watchpoint of PPL3\ARR(1)
DBG_1> GO
%DEBUG-I-WATVARNOWGBL, watched variable PPL3\ARR(1) has been
remapped to a global section
predefined trace on activation at routine PPL3
in %PROCESS_NUMBER 2
predefined trace on activation at routine PPL3
in %PROCESS_NUMBER 3
watch of PPL3\ARR(1) at PPL3\%LINE 93 in %PROCESS_NUMBER 2
93: ARR(1) = INDEX
old value: 0
new value: 1
break at PPL3\%LINE 94 in %PROCESS_NUMBER 2
94: ARR(I) = I
DBG_2> DO (SHOW WATCH)
For %PROCESS_NUMBER 1
watchpoint of PPL3\ARR(1) [global-section watchpoint]
For %PROCESS_NUMBER 2
watchpoint of PPL3\ARR(1) [global-section watchpoint]
For %PROCESS_NUMBER 3
watchpoint of PPL3\ARR(1) [global-section watchpoint]
DBG_2>
In this example of a global section watchpoint, the SET WATCH
command sets a watchpoint on element 1 of array ARR. Because ARR
has not yet been mapped to a global section, the SHOW WATCH
command identifies the watchpoint as a conventional static
watchpoint.
After the GO command resumes execution, ARR is remapped to a
global section. The watchpoint is automatically treated as a
global section watchpoint.
Processes 2 and 3 come under debugger control, then the
watchpoint is triggered in process 2, interrupting execution. At
this point, the SHOW WATCH command confirms that the watchpoint
is visible from each process.
Global Section Watchpoints
You can set watchpoints on variables or arbitrary program
locations in global sections. A global section is a region of
virtual memory that is shared among all processes of a
multiprocess program. A watchpoint that is set on a location in
a global section (a global section watchpoint) triggers when any
process modifies the contents of that location.
You set a global section watchpoint just as you would set a
watchpoint on a static variable. However, because of the way the
debugger monitors global section watchpoints, note the following
point. When setting watchpoints on arrays or records,
performance is improved if you specify individual elements rather
than the entire structure with the SET WATCH command.
If you set a watchpoint on a location that is not yet mapped to a
global section, the watchpoint is treated as a conventional
static watchpoint. When the location is subsequently mapped to a
global section, the watchpoint is automatically treated as a
global section watchpoint and an informational message is issued.
The watchpoint is then visible from each process of the
multiprocess program.
Parameters
address-expression
Specifies an address expression (a program location) at which a
watchpoint is to be set. With high-level languages, this is
typically the name of a program variable and may include a path
name to specify the variable uniquely. More generally, an
address expression may also be a virtual memory address or a
register and may be composed of numbers (offsets) and symbols, as
well as one or more operators, operands, or delimiters.
Do not specify the asterisk wildcard character (*).
command
Specifies a debugger command that is to be executed as part of
the DO clause when watch action is taken.
conditional-expression
Specifies a conditional expression in the currently set language
that is to be evaluated whenever execution reaches the
watchpoint. If the expression is TRUE, watch action occurs, and
the debugger reports that a watchpoint has been triggered. If
the expression is FALSE, watch action does not occur. In this
case, a report is not issued, the commands specified by the DO
clause are not executed, and program execution is continued.
Static Nonstatic Watchpoints
The technique for setting a watchpoint depends on whether the
variable is static or nonstatic. A static variable is associated
with the same virtual memory address throughout execution of the
program. You can always set a watchpoint on a static variable
throughout execution.
A nonstatic variable is allocated on the stack or in a register
and has a value only when its defining routine is active (on the
call stack). Therefore, you can set a watchpoint on a nonstatic
variable only when the PC value is within the scope of the
defining routine (including any routine called by the definining
routine). The watchpoint is cancelled when execution returns
from the defining routine.
The debugger determines whether a variable is static or nonstatic
by checking how it is allocated. Typically, a static variable is
in P0 space (0 through 3FFFFFFF, hexadecimal); a nonstatic
variable is in P1 space (40000000 through 7FFFFFFF) or in a
register. The debugger issues a warning if you try to set a
watchpoint on a variable that is allocated in P1 space or in a
register when the PC value is not within the scope of the
defining routine. The /[NO]STATIC qualifiers enable you to
override the default behavior. For example, if you have
allocated nonstack storage in P1 space, use the /STATIC qualifier
when setting a watchpoint on a variable that is allocated in that
storage area. This enables the debugger to use the faster
write-protection method of watching the location instead of
tracing every instruction. Conversely, if, for example, you have
allocated your own stack in P0 space, use the /NOSTATIC qualifier
when setting a watchpoint on a variable that is allocated on that
stack. This enables the debugger to treat the watchpoint as a
nonstatic watchpoint.
Another distinction between static and nonstatic watchpoints is
speed of execution. To watch a static variable, the debugger
write-protects the page containing the variable. If your program
attempts to write to that page, an access violation occurs and
the debugger handles the exception, determining whether the
watched variable was modified. Except when writing to that page,
the program executes at normal speed.
To watch a nonstatic variable, the debugger traces every
instruction in the variable's defining routine and checks the
value of the variable after each instruction has been executed.
Since this significantly slows down execution, the debugger
issues a message when you set a nonstatic watchpoint. The /INTO
and /OVER qualifiers enable you to choose whether to also trace
instructions within any routine that is called by the defining
routine or to execute the called routine at normal speed.
Qualifiers
The qualifiers can be grouped as follows.
The following qualifiers affect what output is seen when a
watchpoint is reached: /[NO]SILENT, /[NO]SOURCE.
The following qualifiers affect the timing and duration of
watchpoints: /AFTER:n, /TEMPORARY.
The following qualifiers apply only to nonstatic variables:
/INTO, /OVER.
The following qualifiers are used to override the debugger's
determination of whether a variable is static or nonstatic:
/[NO]STATIC.
Additional information available:
/AFTER:n/INTO/NOSILENT/NOSOURCE/NOSTATIC/OVER
/SILENT/SOURCE/STATIC/TEMPORARY
/AFTER:n
Specifies that watch action not be taken until the nth time the
designated watchpoint is encountered (n is a decimal integer).
Thereafter, the watchpoint occurs every time it is encountered
provided that conditions in the WHEN clause are TRUE. The
command SET WATCH/AFTER:1 has the same effect as the SET WATCH
command.
/INTO
Specifies that the debugger is to monitor a nonstatic variable by
tracing instructions not only within the defining routine, but
also within a routine that is called from the defining routine
(and any other such nested calls). SET WATCH/INTO enables you to
monitor nonstatic variables within called routines more precisely
than SET WATCH/OVER; but the speed of execution within called
routines is faster with SET WATCH/OVER.
/NOSILENT
Specifies that the "watch . . . " message is displayed at the
watchpoint. This the default.
/NOSOURCE
Specifies that the source line for the current location is not
displayed at the watchpoint. See also SET STEP [NO]SOURCE.
/NOSTATIC
Enables you to override the debugger's default determination of
whether a specified variable (location) is static or nonstatic.
/NOSTATIC specifies that the debugger should treat the variable
as a nonstatic variable, even though it may be allocated in P0
space. /NOSTATIC causes the debugger to monitor the location by
tracing every instruction. Exercise caution when using this
qualifier.
/OVER
Specifies that the debugger is to monitor a nonstatic variable by
tracing instructions only within the defining routine, not within
a routine that is called by the defining routine. As a result,
the debugger executes a called routine at normal speed and
resumes tracing instructions only when execution returns to the
defining routine. SET WATCH/OVER provides faster execution than
SET WATCH/INTO; but if a called routine modifies the watched
variable, execution is interrupted only upon returning to the
defining routine. SET WATCH/OVER is the default behavior when
you set watchpoints on nonstatic variables.
/SILENT
Specifies that the "watch . . . " message and the source line
for the current location are not displayed at the watchpoint.
/SILENT overrides /SOURCE.
/SOURCE
Specifies that the source line for the current location is
displayed at the watchpoint. This is the default. /SILENT
overrides /SOURCE. See also SET STEP [NO]SOURCE.
/STATIC
Enables you to override the debugger's default determination of
whether a specified variable (location) is static or nonstatic.
/STATIC specifies that the debugger should treat the variable as
a static variable, even though it may be allocated in P1 space.
This causes the debugger to monitor the location by using the
faster write-protection method rather than by tracing every
instruction. Exercise caution when using this qualifier.
/TEMPORARY
Causes the watchpoint to disappear after it is triggered (the
watchpoint does not remain permanently set).
WINDOW
Establishes a screen window definition. A screen window is a
region on the terminal screen at which a screen display may be
displayed. A screen window definition associates a window name
with a screen region specified in terms of a beginning line,
height (line count), beginning column, width (characters per
line). The last two values are optional and, if not specified,
default to column 1 and the current terminal screen width
respectively. Once defined, the name of a screen window can be
used in DISPLAY and SET DISPLAY commands to position screen
displays on the screen.
Format:
SET WINDOW wname AT (start-line, line_count
[, start-column, column-count])
Additional information available:
Parameters
wname
The name of the window being defined.
start-line
The starting line number of the window. This is the line at
which the window header line is displayed. The top line of the
screen is line 1.
line-count
The number of lines of text in the window, not counting the
header line. Line-count must be at least 1. Start-line plus
line-count may not exceed the current screen height.
start-column
The starting column number of the window. This is the column at
which the first character in the window is displayed. Note, the
left hand border may occupy the column just to the left of the
starting column number. The left most column on the screen is
column 1.
column-count
The number of characters per line in the window. Column-count
must be at least 1 and less than the current terminal screen
width. Start-column plus column-count may not exceed the current
screen width.
Examples
! Make a window named ONELINE at the top of the
! screen that spans the entire width of the screen.
!
DBG> SET WINDOW ONELINE AT (1,1)
! Make a window named MIDDLE for the central
! region of the screen.
!
DBG> SET WINDOW MIDDLE AT (9,4,30,20)
SHOW
The function depends on the keyword. For example, SHOW BREAK
displays the current breakpoints. See the the subtopics for
details.
Format:
SHOW keyword [/qualifier] [parameter]
Additional information available:
ABORT_KEYASTATSIGNBREAKCALLSDEFINE
DISPLAYEDITOREVENT_FACILITYEXIT_HANDLERSIMAGE
KEYLANGUAGELOGMARGINSMAX_SOURCE_FILESMODE
MODULEOUTPUTPROCESSRADIXSCOPESEARCHSELECT
SOURCESTACKSTEPSYMBOLTASKTERMINALTRACE
TYPEWATCHWINDOW
Parameters
keyword
Specifies the item to be displayed. Keyword can be
ABORT_KEY,AST, ATSIGN, BREAK, CALLS, DEFINE, DISPLAY, EDITOR,
EVENT_FACILITY, EXIT_HANDLERS, KEY, LANGUAGE, LOG, MARGIN,
MAX_SOURCE_FILES, MODE, MODULE, OUTPUT, PROCESS, RADIX, SCOPE,
SEARCH, SELECT, SOURCE, STEP, SYMBOL, TASK, TERMINAL, TRACE,
TYPE, WATCH, or WINDOW.
qualifiers
Depends on the keyword specified.
parameters
Depends on the keyword specified.
ABORT_KEY
Identifies the CTRL-key sequence currently defined to abort the
execution of a debugger command or to interrupt program
execution.
By default, the CTRL/C sequence, when entered within a debugging
session, aborts the execution of a debugger command and
interrupts program execution. The SET ABORT_KEY command enables
you to assign the abort function to another CTRL-key sequence.
The SHOW ABORT_ KEY command identifies the CTRL-key sequence
currently in effect for the abort function.
Format:
SHOW ABORT_KEY
Additional information available:
Example
DBG> SHOW ABORT_KEY
Abort Command Key is CTRL_C
DBG> SET ABORT_KEY = CTRL_P
DBG> SHOW ABORT_KEY
Abort Command Key is CTRL_P
The first SHOW ABORT_KEY command identifies the default abort
command key sequence, CTRL/C. The command SET ABORT_KEY = CTRL_P
assigns the abort- command function to the CTRL/P sequence, as
verified by the second SHOW ABORT_KEY command.
AST
SHOW AST tells you whether ASTs are enabled or disabled in your
program. See the ENABLE AST and DISABLE AST commands for more
details.
SHOW AST does not give you information about what ASTs are
pending.
Example:
DBG> SHOW AST
ASTs are enabled
DBG> DISABLE AST
ASTs were enabled, are now disabled
DBG> SHOW AST
ASTs are disabled
ATSIGN
SHOW ATSIGN displays the default file specification that is
applied to the "@file-spec" command, as previously specified by
the SET ATSIGN command.
Example:
DBG> SHOW ATSIGN
No indirect command file default in effect, using DEBUG.COM
DBG> SET ATSIGN MYDISK:[MYDIR.DEBUG].DBG
DBG> SHOW ATSIGN
Indirect command file default is MYDISK:[MYDIR.DEBUG].DBG
BREAK
Displays information about breakpoints that are currently set,
including any options such as WHEN or DO clauses, /AFTER counts,
and so on.
Format:
SHOW BREAK [/qualifier]
By default, SHOW BREAK displays information about both user
defined and predefined breakpoints (if any). This is equivalent
to entering the command SHOW BREAK/USER/PREDEFINED. User defined
breakpoints are set with the SET BREAK command. Predefined
breakpoints are set automatically when you invoke the debugger,
and they depend on the type of program you are debugging.
If you established a breakpoint using the /AFTER:n command
qualifier with the SET BREAK command, the SHOW BREAK command
displays the current value of the decimal integer n, that is, the
originally specified integer value minus one for each time the
breakpoint location was reached. (The debugger decrements n each
time the breakpoint location is reached until the value of n is
zero, at which time the debugger takes break action.)
Additional information available:
Examples
1 DBG> SET BREAK/AFTER:3 MAIN WHEN (A .EQ. B)
DBG> SHOW BREAK
breakpoint at routine MAIN
/after: 3
WHEN (A .EQ. B)
This SHOW BREAK command identifies the user defined breakpoint
set with the previous SET BREAK command.
2 DBG> SHOW BREAK
breakpoint at SUB1\LOOP
breakpoint at MAIN\MAIN+1F
do (EX SUB1\D ; EX/SYMBOLIC PSL; GO)
breakpoint at routine SUB2\SUB2
/after: 2
The SHOW BREAK command identifies all breakpoints that are
currently set. This example indicates user defined breakpoints
that are triggered whenever execution reaches SUB1\LOOP,
MAIN\MAIN, and SUB2\SUB2, respectively.
3 DBG> SHOW BREAK/PREDEFINED
predefined breakpoint on Ada event "DEPENDENTS_EXCEPTION"
for any value
predefined breakpoint on Ada event "EXCEPTION_TERMINATED"
for any value
This command identifies the predefined breakpoints that are
currently set. The example shows two predefined breakpoints,
which are associated with Ada tasking exception events. These
breakpoints are set automatically by the debugger for all Ada
programs and for any mixed language program that is linked with
an Ada module.
Qualifiers
Additional information available:
/PREDEFINED
Displays information about predefined breakpoints.
/USER
Displays information about user defined breakpoints.
CALLS
Causes the debugger to display information about the sequence of
currently active procedure calls. This tells you where you are
in the execution of your program.
The optional parameter n specifies the number of call frames to
be displayed. If you do not specify the parameter n, information
about all call frames is displayed.
Format:
SHOW CALLS [n]
Additional information available:
Parameters
n
Specifies the number of call frames that you wish information
about. If omitted, the debugger displays information about all
call frames.
Example
In the following example we are now at line 117 of routine
PRIMES, which was called from line 141 of routine LISTPRIMES.
The asterisks before the module name indicate that the module is
set.
DBG> SHOW CALLS
module name routine name line rel PC abs PC
*PRIMES PRIME 117 00000002 000009B8
*PRIMES LISTPRIMES 141 0000004D 00000A29
DEFINE
Shows what define setting has been specified by a previous SET
DEFINE command. (To display all defined symbols, the command is
SHOW SYMBOL/DEFINED.)
Format: SHOW DEFINE
Example:
! The default is DEFINE/ADDRESS
DBG> SHOW DEFINE
current setting is: DEFINE/ADDRESS
DBG> SET DEFINE VALUE
! Treat all DEFINEs as DEFINE/VALUE
DBG> SHOW DEFINE
current setting is: DEFINE/VALUE
DISPLAY
Causes the debugger to list defined screen displays. The name,
maximum size, screen window, kind, and debugger command list (if
any) of the defined screen displays are listed. The displays are
listed in their pasting order with the display that is most
hidden listed first.
With no parameters, /ALL, or *, the names and attributes of all
displays are listed. The debugger also accepts a parameter list
of display names. This list of names can include wildcarded (*)
names, in which case all matching display names are displayed.
Format:
SHOW DISPLAY [/qualifier[,...]] display-name
Additional information available:
Example
DBG> SHOW DISPLAY
display SRC at H1, size = 64
kind = SOURCE (EXAMINE/SOURCE .%SOURCE_SCOPE\%PC)
display INST at H1, size = 64, removed
kind = INSTRUCTION (EXAMINE/INSTRUCTION .0\%PC)
display REG at RH1, size = 64, removed, kind = REGISTER
display OUT at S45, size = 100, kind = OUTPUT
display FOO at (10,4,24,30), size = 64, kind = OUTPUT
display PROMPT at S6, size = 64, kind = PROGRAM
DBG> SHOW DISPLAY SRC
display SRC at H1, size = 64
kind = SOURCE (EXAMINE/SOURCE .%SOURCE_SCOPE\%PC)
Parameters
display-name (optional) - the name of the display you want
displayed. If this parameter is omitted, information is
displayed about all displays. The disp-name parameter may
contain * as a wildcard.
Example:
SHOW DISPLAY S* - gives information about all displays whose name
begins with S.
Qualifiers
Additional information available:
/ALL
Lists all display definitions. Do not specify a display name
with /ALL.
/SUFFIX[=process-identifier-type]
Note: This qualifier applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS). Use
this qualifier only directly after a display name.
Appends a process-identifying suffix to a display name. The
suffix denotes the visible process. This qualifier is used
primarily in command procedures when specifying display
definitions or key definitions that are bound to display
definitions. Use any of the following process-identifier-type
keywords:
PROCESS_NAME The display-name suffix is the VMS process name.
PROCESS_NUMBER The display-name suffix is the process number
(as shown in a SHOW PROCESS display).
PROCESS_PID The display-name suffix is the VMS process
identification number (PID).
If you specify /SUFFIX without a process-identifier- type
keyword, the process identifier type used for the display-name
suffix is, by default, the same as that used for the prompt
suffix (see SET PROMPT/SUFFIX).
EDITOR
SHOW EDITOR displays the action taken by the EDIT command, as set
by the SET EDITOR command.
Example:
DBG> SHOW EDITOR
The editor is SPAWNed, with command line "LSEDIT/START=(n,1)"
DBG> SET EDITOR/CALLABLE_TPU
DBG> SHOW EDITOR
The editor is CALLABLE_TPU, with command line "TPU"
EVENT_FACILITY
Displays the run-time facility that has been selected by the
command SET EVENT_FACILITY. Also displays the event names that
are defined by the facility (that is the keywords that you can
specify on the command SET BREAK/EVENT=keyword). Currently, the
languages that have event facilities are ADA and SCAN.
Format:
SHOW EVENT_FACILITY
Additional information available:
Example:
DBG> SHOW EVENT
event facility is ADA
The general forms of commands to set a breakpoint or tracepoint
on an Ada event are:
SET BREAK/EVENT=event [task[, ... ]] [WHEN(expr)] [DO(comnd[;
... ])]
SET TRACE/EVENT=event [task[, ... ]] [WHEN(expr)] [DO(comnd[;
... ])]
If tasks are specified, the breakpoint triggers only if the
event occurs for those specific tasks.
Ada event names and their definitions
HANDLED an exception is about to be handled
HANDLED_OTHERS an exception is about to be handled in an
OTHERS handler
TERMINATED a task is terminating (including by abort
or exception)
EXCEPTION_TERMINATED a task is terminating because of an
exception
ABORT_TERMINATED a task is terminating because of abort
DEPENDENTS_EXCEPTION an exception is about to cause a task to
await
dependent tasks
RENDEZVOUS_EXCEPTION an exception is propagating out of a
rendezvous
RUN a task is about to run
ACTIVATING a task is about to begin its activation
PREEMPTED a task is about to be preempted
SUSPENDED a task is about to be suspended
EXIT_HANDLERS
SHOW EXIT_HANDLERS gives a display of the exit handlers that your
program has declared. The exit handler routines are displayed in
the order that they are called (that is, last in, first out).
The routine name is displayed symbolically if possible; otherwise
its address is displayed. The debugger's exit handlers are not
displayed.
Example:
DBG> SHOW EXIT
exit handler at MODNAME\EXIT_ROUT1
exit handler at MODNAME\EXIT_ROUT2
IMAGE
Displays information about the shareable images that are part of
your running program. The name, start address and end addresses
are displayed. Also displayed is whether the image is "set" (see
HELP SET IMAGE).
Format:
SHOW IMAGE [image-name]
If "image-name" is omitted, all images are displayed.
"image-name" may include wildcards.
Example:
DBG> SHOW IMAGE SHARE$*
image name set base address end
address
*SHARE yes 00000200 00000FFF
SHARE1 no 00001000 000017FF
SHARE2 no 00018C00 000191FF
SHARE3 no 00019200 000195FF
SHARE4 no 00019600 0001B7FF
total images: 5 bytes allocated: 33032
The asterisk next to the image name indicates that the image is
the "current image".
KEY
Displays current key definitions for the specified keys in the
specified states.
Format:
SHOW KEY [/qualifiers] [key-name-list]
Example:
DBG> DEFINE/KEY KP0 "STEP"
DBG> SHOW KEY KP0
DEFAULT definition for key KP0:
"STEP"
Additional information available:
Qualifiers
Additional information available:
/ALL/BRIEF/DIRECTORY/NOSTATE/STATE
/ALL
Show all keys defined in the current state(s).
/BRIEF
Only display the key definition and state. By default, the
system provides other information including qualifiers associated
with the definition, etc.
/DIRECTORY
Only give the names of the keys that have been defined
/NOSTATE
Give the definitions for the keys in the currently active state.
(default)
/STATE
Format:
SHOW KEY/STATE=state-name-list[/qualifier[...]] [key-name[,...]]
This qualifier modifies the others so that they perform their
operations on the list of states given. For example:
SHOW KEY/STATE=GOLD/DIR gives a list of the keys
defined for the GOLD state.
LANGUAGE
Causes the debugger to display the current language.
The current language is the language last established by the SET
LANGUAGE command or the language established at debugger
start-up.
Supported languages are ADA, BASIC, BLISS, C, COBOL, DIBOL,
FORTRAN, MACRO, PASCAL, PLI, RPG, and SCAN. See "HELP Languages"
for details on the support for each one.
Format:
SHOW LANGUAGE
LOG
Causes the debugger to display the name of the current log file
and to report whether the debugger is writing to that log file.
The current log file is the log file last established by a SET
LOG command or the default log file DEBUG.LOG.
Format:
SHOW LOG
MARGINS
Displays the current source-line margin settings for the display
of source code.
Margin settings are established by the SET MARGIN command. By
default, the debugger sets the left margin to 1 and the right
margin to 255.
Format:
SHOW MARGINS
MAX_SOURCE_FILES
Displays the maximum number of source files that the debugger may
keep open at any one time.
The maximum number of source files that the debugger may keep
open at any one time may be specified using the SET
MAX_SOURCE_FILES command or may be the default value of 5.
Format:
SHOW MAX_SOURCE_FILES
MODE
Identifies the current debugger modes (screen or no screen,
keypad or nokeypad, and so on) and the current radix.
The current debugger modes are the modes last established with
the SET MODE command. If no SET MODE command was entered, the
current modes are, by default: DYNAMIC, NOG_FLOAT (D_float),
INTERRUPT, KEYPAD, LINE, NOSCREEN, SCROLL, NOSEPARATE, SYMBOLIC.
Format:
SHOW MODE
MODULE
SHOW MODULE provides a formatted alphabetized display giving
information about all the modules in your program. "SHOW MODULE
modname" displays information only about the module named
"modname". The name may contain wildcards (*).
Included in the display is a column telling you whether the
module is set, and a column telling you how many bytes are
required to set the module. At the bottom of the display is a
number which tells you how many bytes are currently allocated in
the debugger's memory pool.
Format:
SHOW MODULE [/qualifiers] [name]
Additional information available:
Parameters
name (optional) - the name of the module you want displayed. If
the "name" parameter is omitted, information is displayed about
all modules. The "name" parameter may contain * as a wildcard.
Example:
SHOW MODULE DBG* - gives information about all modules whose name
begins with DBG.
Example:
DBG> SHOW MODULE
module name symbols size
X1 no 1504
X2 no 1520
X3 yes 396
total PASCAL modules: 3. bytes allocated: 35928.
Qualifiers
Additional information available:
/NORELATED/NOSHARE/RELATED/SHARE
/NORELATED
(ADA only) This is the default. It specifies that no information
about related modules is to be output.
/NOSHARE
This is the default. It specifies that shareable image modules
not be included in the SHOW MODULE output.
/RELATED
(ADA only) This qualifier tells the debugger to output
information about those modules that are related to each module
that is normally displayed. It lists the relationship of each of
these subordinate modules to the main module along with the
normal information you get with each module. ADA packages and
ADA subunits are the language constructs which give rise to
relationships between modules.
/SHARE
This tells the debugger to include shareable images in the SHOW
MODULE display (for example, SHARE$LIBRTL, SHARE$FORRTL). By
default, these are omitted since there is only limited support
for debugging shareable images.
OUTPUT
Says whether or not the debugger is displaying output on the
terminal (term or noterm), whether or not the debugger is writing
output to a log file (log or nolog), and whether or not the
debugger echos commands from command procedures and DO clauses
(verify/noverify).
Format:
SHOW OUTPUT
PROCESS
Note: This command applies to a multiprocess debugging
configuration (when DBG$PROCESS has the value MULTIPROCESS).
The SHOW PROCESS command displays information about specified
processes and any images running in those processes. A process
can first appear in a SHOW PROCESS display as soon as it comes
under debugger control. A process can no longer appear in a SHOW
PROCESS display if it is terminated through an EXIT or QUIT
command.
Format:
SHOW PROCESS [/qualifier] [process-spec[, . . . ]]
By default (/BRIEF), one line of information is displayed for
each process, including the following:
1. The process number assigned by the debugger. A process
number is assigned sequentially, starting with process 1, to
each process that comes under debugger control. If a process
is terminated by an EXIT or QUIT command, its process number
is not reused during that debugging session. The visible
process is marked with an asterisk (*) in the leftmost
column.
2. The VMS process name.
3. Whether the process has been put on hold with a SET
PROCESS/HOLD command.
4. The current debugging state for that process (see the States
subtopic).
5. The location (symbolized, if possible) where execution of the
image is suspended in that process.
The SHOW PROCESS/FULL gives additional information about
processes.
Additional information available:
ExamplesParametersQualifiersStates
Examples
1 DBG_2> SHOW PROCESS
Number Name Hold State Current PC
* 2 _WTA3: HOLD break SCREEN_IO\%LINE 47
In this example, the SHOW PROCESS command, by default, displays
one line of information about the visible process (which is
identified with an asterisk in the leftmost column. The process
has the VMS process name _WTA3:. It is the second process
brought under debugger control (process number 2). It has been
put on hold, and the image's execution is suspended at a
breakpoint at line 47 of module SCREEN_IO.
2 DBG_2> SHOW PROCESS/FULL %PREVIOUS_PROCESS
The command SHOW PROCESS/FULL %PREVIOUS_PROCESS displays the
maximum level of information about the previous process in the
circular list of processes (process number 1, in this case).
3 DBG_2> SHOW PROCESS %PROCESS_NAME TEST_3
Number Name Hold State Current PC
7 TEST_3 watch of TEST_3\ROUT4\COUNT
TEST_3\%LINE 54
This SHOW PROCESS command displays one line of information about
process TEST_3. The image is suspended at a watchpoint of
variable COUNT.
4 DBG_2> SHOW PROCESS/DYNAMIC
Dynamic process setting is enabled
This SHOW PROCESS/DYNAMIC command indicates that dynamic process
setting is enabled.
Parameters
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.
%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 (*)
You can also use the asterisk wildcard character (*) to specify
all processes. If you do not specify a process, the visible
process is selected, unless you specify /ALL.
Qualifiers
Additional information available:
/ALL/BRIEF/DYNAMIC/FULL/HOLD/NOHOLD/VISIBLE
/ALL
Selects all processes known to the debugger for display. Do not
specify a process with /ALL.
/BRIEF
Displays only one line of information for each process selected
for display. /BRIEF is the default.
/DYNAMIC
Shows whether dynamic process setting is enabled or disabled.
Dynamic process setting is enabled by default and is controlled
with the command SET PROCESS/[NO]DYNAMIC.
Do not specify a process with /DYNAMIC. Do not specify /ALL,
/BRIEF, /FULL, /[NO]HOLD, or /VISIBLE with /DYNAMIC.
/FULL
Displays maximum information for each process selected for
display.
/HOLD
Selects processes that are on hold for display. If you do not
specify a process, /HOLD selects all processes that are on hold.
If you specify a process list, /HOLD selects the processes in the
list that are on hold.
If you specify both /HOLD and /NOHOLD on the same command line,
the effect is to select processes that are on hold and processes
that are not on hold for display (the qualifier specified last on
the command line does not override the other).
/NOHOLD
Selects processes that are not on hold for display. If you do
not specify a process, /NOHOLD selects all processes that are not
on hold. If you specify a process list, /NOHOLD selects the
processes in the list that are not on hold.
If you specify both /HOLD and /NOHOLD on the same command line,
the effect is to select processes that are on hold and processes
that are not on hold for display (the qualifier specified last on
the command line does not override the other).
/VISIBLE
Selects the visible process for display. If you do not specify
/VISIBLE, it is assumed by default.
States
The debugging states that may appear in a SHOW PROCESS display
are as follows:
_______________________________________________________
Activated The image and its process have
just been brought under debugger
control, either through a DCL
RUN/DEBUG command, a debugger
CONNECT command, a CTRL/Y - DEBUG
sequence, or by the program
signalling SS$_DEBUG while it
was not under debugger control.
Break A breakpoint was triggered.
Break on branch
Break on call
Break on instruction
Break on lines
Break on modify of
Break on return
Exception break
Excep. break preceding
Interrupted Execution was interrupted in that
process, either because execution
was suspended in some other process,
or because the user interrupted
program execution with the abort-key
sequence (CTRL/C, by default).
Step A STEP command has completed.
Step on return
Terminated The image indicated has terminated
execution but the process is still
under debugger control. Therefore,
you can obtain information about
the image and its process. You can
use the EXIT or QUIT command to
terminate the process.
Trace A tracepoint was triggered.
Trace on branch
Trace on call
Trace on instruction
Trace on lines
Trace on modify of
Trace on return
Exception trace
Excep. trace preceding
Unhandled exception at An unhandled exception was encountered.
Watch of A watchpoint was triggered.
RADIX
Causes the debugger to display the current radix settings. The
current input radix and the current output radix are displayed.
Radix may be one of BINARY, OCTAL, DECIMAL, or HEXADECIMAL.
SCOPE
Causes the debugger to display the current scope search list,
that is, the scope search list established by the last SET SCOPE
command.
The current scope search list designates one or more program
locations (specified by pathnames and/or other special
characters) to be used in the interpretation of symbols that are
specified without pathname prefixes in debugger commands.
Format:
SHOW SCOPE
SEARCH
Displays the current SEARCH parameters.
Current SEARCH parameters are either established by the SET
SEARCH command or are the default values ALL and STRING.
SEARCH parameters determine whether the debugger searches for all
occurrences (ALL) of the string or only the next occurrence
(NEXT) of the string, and whether the debugger displays any
occurrence of the string (STRING) or only those occurrences in
which the string is not bounded on either side by a character
that cannot be part of an identifier in the current language
(IDENTIFIER).
Format:
SHOW SEARCH
SELECT
Shows the current screen display select settings as set by the
SELECT command.
Format:
SHOW SELECT
SOURCE
Displays the source directory search list(s) currently in effect.
The SET SOURCE/MODULE=modname command establishes a source
directory search list for a particular module. The SET SOURCE
command establishes a source directory search list for all
modules not explicitly mentioned in a SET SOURCE/MODULE=modname
command.
If a directory search list has not been established by means of
the SET SOURCE or SET SOURCE/MODULE=modname commands, the SHOW
SOURCE command indicates that no directory search list is
currently in effect. In this case, the debugger expects each
source file to be in the same directory as it was in at compile
time.
Format:
SHOW SOURCE [/EDIT]
Additional information available:
Qualifiers
Additional information available:
/EDIT
Shows the directory search lists that were established with SET
SOURCE/EDIT.
STACK
Displays information from the current call stack. For each
frame, information such as the condition handler and saved
register values is displayed.
Format:
SHOW STACK [n]
The optional argument "n" specifies how many frames to display.
If it is omitted, information about all stack frames is
displayed.
Additional information available:
Example
DBG> SHOW STACK
stack frame 0 (2146814812)
condition handler: 0
SPA: 0
S: 0
mask: M<R2>
PSW: 0000 (hexadecimal)
saved AP: 7
saved FP: 2146814852
saved PC: EIGHTQUEENS\%LINE 69
saved R2: 0
argument list:(1) EIGHTQUEENS\%LINE 68+2
stack frame 1 (2146814852)
condition handler: SHARE$PASRTL+888
SPA: 0
S: 0
mask: none saved
PSW: 0000 (hexadecimal)
saved AP: 2146814924
saved FP: 2146814904
saved PC: SHARE$DEBUG+667
Argument List
One part of the output of SHOW STACK (if existing) for each
frame, is the Argument List. It is the list of arguments passed
along with the call to a subroutine.
NOTE: In some cases the list may contain addresses to actual
arguments. In these cases, "DBG> EXAMINE address" returns the
values of these arguments.
STEP
Causes the debugger to display the current step conditions.
The current step conditions include: whether the debugger steps
by lines or by instructions, whether the debugger steps "into"
routines in the user program or "over" them, whether source is
displayed on each STEP command (source/nosource), and whether any
output is given on each STEP command (silent/nosilent).
Current step conditions are the step conditions established by
the last SET STEP command or the default step conditions
established by the current language.
Format:
SHOW STEP
SYMBOL
Displays information about symbols in your program. Using this
command, you can obtain a list of symbols in your program
matching a given namespec, together with type and address
information about the symbols.
Format:
SHOW SYMBOL [/qualifier] namespec [,namespec...]
[IN scope [,scope...]]
Additional information available:
Example
DBG> SHOW SYMBOL/TYPE/ADDRESS *
module FFF, language FORTRAN
routine FFF
address: 1024, size: 32 bytes
data FFF\B
address: +512
atomic type, byte logical, size: 1 bytes
data FFF\W
address: +514
atomic type, word integer, size: 2 bytes
data FFF\L
address: +528
atomic type, longword integer, size: 4 bytes
data FFF\F
address: +532
atomic type, F_floating, size: 4 bytes
data FFF\D
address: +520
atomic type, D_floating, size: 8 bytes
routine FFF (global)
address: 1024
Parameters
namespec
This consists of a single symbol name, or a symbol name that
includes wildcard characters. "*" is the wildcard character, and
it can match zero or more characters.
scopespec
Specifies a module, routine, lexical block, or numeric scope. It
has the same syntax as the scope specification in the SET SCOPE
command. This specifies that only those symbols that match the
namespec and are declared within the given scope are to be
selected.
Qualifiers
Additional information available:
/ADDRESS/DEFINED/DIRECT/GLOBAL/LOCAL/TYPE/USE_CLAUSE
/ADDRESS
Directs the debugger to print the address specification for each
selected symbol.
/DEFINED
Displays symbols you have defined with the DEFINE command.
/DIRECT
Select only those symbols that are declared directly in the given
scope, but not those that are declared in nested scopes.
/GLOBAL
Displays only those defined symbols that are defined /GLOBAL.
Only applies to SHOW SYMBOL/DEFINED.
/LOCAL
Displays only those defined symbols that are defined /LOCAL.
Only applies to SHOW SYMBOL/DEFINED.
/TYPE
Display type information about each selected symbol.
/USE_CLAUSE
Note: This qualifier applies to Ada programs.
Identifies any package that this routine (subprogram), block, or
package mentions in a use clause. In the case of a package, also
identifies any routine, blocks, or packages that mention this
package in a use clause.
TASK
(Only valid for ADA multitasking programs).
Using this command, you can obtain a list of individual tasks in
existence and their current state. Alternatively, you can obtain
information on the entire multitasking system. The type of
display is determined by "task information qualifiers". If no
task information qualifer is given, the command displays a brief
one line status report for each task specified.
For those commands which operate on individual tasks, the tasks
of interest can be specified by taskname parameters and/or by
"task selection qualifiers". If neither of these means are used,
the task defaults to the "visible task", %VISIBLE_TASK. (See SET
TASK/VISIBLE and SET TASK/ACTIVE).
Format:
SHOW TASK [/qualifier...] [taskname [,taskname...] ]
Additional information available:
ParametersSelection QualifiersInformation QualifiersExamples
Parameters
taskname
A taskname parameter may be a pathname which designates a task
declared in your program, for example, MY_MAIN\PROG\MONITOR.
A taskname parameter may also be a task ID or pseudo taskname. A
task ID is a unique number that is associated with a task at the
time the task is created. The debugger syntax for specifying a
task ID is "%TASK n", where "n" is a positive decimal integer.
You can see what task IDs are assigned to currently existing
tasks by typing SHOW TASK/ALL.
A pseudo taskname is one of the debugger built-in symbols
%ACTIVE_TASK, %CALLER_TASK, %NEXT_TASK, or %VISIBLE_TASK. Type
"HELP Built_in_Symbols" for more information on these.
The default taskname parameter is %VISIBLE_TASK.
Selection Qualifiers
Task selection qualifiers can be used singly or in combination.
Except for the ALL" qualifier, they can also be used with
taskname parameters. When used in combination, the logical AND
of the selection criterea is applied. This gives the programmer
a powerful and flexible mechanism to select the tasks of interest
from the many tasks a complicated program may create. There are
five ways to indicate what tasks are of interest:
o A task list selects an explicit set of tasks.
o The /ALL qualifier selects all tasks.
o The /PRIORITY, /STATE, and /[NO]HOLD qualifiers can be used
singly or in combination to select all tasks having the
logical AND of the specified criteria.
o The /PRIORITY, /STATE, and /[NO]HOLD qualifiers can be used
with a task list to select from a small set of "interesting"
tasks.
o The visible task is selected by default if no other selection
is specified.
Additional information available:
/ALL
Selects all tasks that currently exist in your program. Taskname
parameters are not permitted.
/HOLD
/HOLD
/NOHOLD
Selects either those tasks that are on hold or those tasks that
are not on hold (see SET TASK/[NO]HOLD).
If a list of tasknames is given, select from the list those tasks
that satisfy the hold criterea. If the taskname parameters are
omitted, select from all tasks in the program those tasks that
satisfy the hold criterea (that is, the /ALL qualifier is
implied).
/PRIORITY
/PRIORITY = n
/PRIORITY = (n1,...,nk)
Selects those tasks that have priority n or those tasks that have
one of the priorities (n1,...,nk), where n is a decimal integer
from 0 to 15 inclusive. (VAX Ada specifies subtype PRIORITY to
be INTEGER range 0..15).
If a list of tasknames is given, select from the list those tasks
that satisfy the priority criteria. If the taskname parameters
are omitted, select from all tasks in the program those tasks
that have the given priorities (that is, the /ALL qualifier is
implied).
/STATE
/STATE = s
/STATE = (s1,...,sk)
Selects those tasks that are in state s or those tasks that are
in one of the states (s1,...,sk).
The state s must be one of the following task states:
READY, RUNNING, SUSPENDED, TERMINATED
If a list of tasknames is given, select from the list those tasks
that satisfy the state criteria. If the taskname parameters are
omitted, select from all tasks in the program those tasks that
are in the given state (that is, the /ALL qualifier is implied).
Information Qualifiers
These qualifiers determine what type of information to display.
If no task information qualifer is given, the default is to
display a brief one line status report for each task selected by
other qualifiers, or explicitly given in the list of tasknames.
Additional information available:
/CALLS/FULL/STATISTICS/TIME_SLICE
/CALLS
/CALLS
/CALLS = n
For each selected task, display information about the sequence of
currently active procedure calls -- that is, the call frames on
the stack of that task.
The optional parameter n specifies the number of call frames to
display. The value of n may be a decimal integer in the range 0
through 32767. If the parameter n is omitted, the debugger
displays information about all call frames.
The /FULL qualifier provides additional information.
/FULL
Display additional information.
The exact function of this qualifier depends on what other
information qualifiers are given. It is meaningfull when used
with /CALL, /STATISTICS, or by itself. When used without any
other information qualifiers, it changes the brief one line
display of the basic task state to a multi-line report of
detailed information.
/STATISTICS
Display tasking statistics for the entire multitasking system.
These statistics include the number of task activations,
terminations, schedulings, blocks, and other information. The
task list and task selection qualifiers must be omitted.
The /FULL qualifier provides additional information.
/TIME_SLICE
Display the current setting of the value of the Ada pragma
TIME_SLICE. This is the time used by the Ada multitasking system
for round-robin scheduling. It is displayed in seconds as a
fixed point decimal number. (See the command SET
TASK/TIME_SLICE). The task list and task selection qualifiers
must be omitted.
Examples
SHOW TASK
Shows information for the visible task (typically the task that
entered the debugger).
SHOW TASK/ALL/FULL
Shows detailed information for all currently existing tasks.
SHOW TASK/ALL/PRI=(4,5)/STATE=(READY,RUN)/NOHOLD/CALLS=3
Shows information for all priority 4 or 5 tasks, in the READY or
RUN state, and not on hold. In addition, the last 3 procedure
calls in each task are shown.
SHOW TASK/PRIORITY=(3,4)/STATE=READY X,Y,Z
Shows which of X,Y,and Z have priority 3 or 4 and are in the
READY state.
SHOW TASK/STATISTICS/FULL
Shows full statistics for the multitasking system.
SHOW TASK/ALL/STATE=READY
Shows all tasks which are ready to be run.
SHOW TASK/PRI=3/STATE=SUSP X,Y,Z
Shows which tasks of X,Y, and Z have priority 3 and are
suspended.
TERMINAL
Causes the debugger to display the terminal width and height
currently used to format debugger output. The width and height
can be set with the SET TERMINAL command.
Format:
SHOW TERMINAL
TRACE
Displays information about tracepoints that are currently set,
including any options such as WHEN or DO clauses, /AFTER counts,
and so on.
Format:
SHOW TRACE [/qualifier]
By default, SHOW TRACE displays information about both user
defined and predefined tracepoints (if any). This is equivalent
to entering the command SHOW TRACE/USER/PREDEFINED. User defined
tracepoints are set with the SET TRACE command. Predefined
tracepoints are set automatically when you invoke the debugger,
and they depend on the type of program you are debugging.
If you established a tracepoint using the /AFTER:n command
qualifier with the SET TRACE command, the SHOW TRACE command
displays the current value of the decimal integer n, that is, the
originally specified integer value minus one for each time the
tracepoint location was reached. (The debugger decrements n each
time the tracepoint location is reached until the value of n is
zero, at which time the debugger takes trace action.)
Additional information available:
Examples
1 DBG> SET TRACE/INST WHEN (A .NE. 0)
DBG> SHOW TRACE
tracepoint on instructions
WHEN (A .NE. 0)
This SHOW TRACE command identifies the user defined tracepoint
set with the previous SET TRACE command.
2 DBG> SHOW TRACE
tracepoint at routine CALC\MULT
tracepoint on calls:
RET RSB BSBB JSB BSBW CALLG CALLS
The SHOW TRACE command identifies all tracepoints that are
currently set. This example indicates user defined tracepoints
that are triggered whenever execution reaches routine MULT in
module CALC or one of the instructions RET, RSB, BSBB, JSB, BSBW,
CALLG, or CALLS.
3 DBG_2> SHOW TRACE/PREDEFINED
predefined tracepoint on program activation
DO (SET DISP/DYN/REM/SIZE:64/PROC SRC_/SUF=PROCESS_NU AT H1
SOURCE (EXAM/SOURCE .%SOURCE_SCOPE\%PC);
SET DISP/DYN/REM/SIZE:64/PROC INST_/SUF=PROCESS_NU AT H1
INSTRUCTION (EXAM/INSTRUCTION .0\%PC))
predefined tracepoint on program termination
This command identifies the predefined tracepoints that are
currently set. The example shows the predefined tracepoints that
are set automatically by the debugger for a multiprocess program
(when DBG$PROCESS has the value MULTIPROCESS). The tracepoint on
program activation triggers whenever a new process comes under
debugger control. The DO clause creates a process-specific
source display named SRC_n and a process-specific instruction
display named INST_n whenever a process activation tracepoint is
triggered. The tracepoint on program termination triggers
whenever a process performs an image exit.
Qualifiers
Additional information available:
/PREDEFINED
Displays information about predefined tracepoints.
/USER
Displays information about user defined tracepoints.
TYPE
Causes the debugger to display the current default type or, if
the /OVERRIDE command qualifier is specified, the current
override type.
Format:
SHOW TYPE [/qualifier]
Additional information available:
Qualifiers
Additional information available:
/OVERRIDE
Causes the debugger to display the current override type.
WATCH
Causes the debugger to display the locations at which watchpoints
have been established by the SET WATCH.
All of the information about each watchpoint is displayed -- that
is, WHEN and DO clauses, after count, and so on.
Format:
SHOW WATCH
Example:
DBG> SET WATCH X DO (SHOW CALLS)
DBG> SHOW WATCH
watchpoint of X
DO (SHOW CALLS)
WINDOW
Causes the debugger to list defined screen windows. The name and
screen position of each defined window are displayed. The list
consists of all user defined windows as well as the many debugger
predefined windows. The windows are listed in alphabetical
order.
With no parameters, /ALL, or *, the names and attributes of all
windows are listed. The debugger also accepts a parameter list
of window names. This list of names can include wildcarded (*)
names, in which case all matching window names are displayed.
Format:
SHOW WINDOW [/ALL | name [,...]]
Additional information available:
Qualifiers
Additional information available:
/ALL
/ALL qualifier, like the default SHOW WINDOW and SHOW WINDOW *,
causes the debugger to list all of the screen window definitions.
Parameters
name (optional) - the name of the window you want displayed. If
the "name" parameter is omitted, information is displayed about
all windows. The "name" parameter may contain * as a wildcard.
Example:
SHOW WINDOW S* - gives information about all windows whose name
begins with S.
SPAWN
Enables you to execute DCL commands without leaving the debugging
session. If you specify a DCL command as the parameter to SPAWN,
the command is executed in the context of a spawned subprocess.
For example, the command SPAWN MAIL invokes the VMS MAIL utility
and, when you exit from MAIL, you return to your debugging
session. If you do not specify a parameter, the SPAWN command
brings you to DCL level in the spawned subprocess. You can then
enter DCL commands, and you return to your debugging session by
logging out of the subprocess.
Format:
SPAWN [/qualifier]
SPAWN dcl-command
SPAWN "dcl-command"
Additional information available:
Parameters
dcl-command
Can be any dcl-command. If the command contains a semicolon,
then the entire command must be placed inside quotes so that the
debugger does not interpret the semicolon as the end of a
debugger command.
Example
DBG> SPAWN MAIL
You have 2 new messages
MAIL> ...
MAIL> EXIT
%DEBUG-I-RETURNED, control returned to process TITLE
DBG>
Qualifiers
Additional information available:
/INPUT=file-spec
Specifies an input file containing one or more DCL commands to be
executed by the spawned subprocess. If you specify a dcl-command
string with the SPAWN command and an input file with the /INPUT
qualifier, the dcl-command string is processed before the input
file. Once processing of the input file is complete, the
subprocess is terminated.
No wildcards are allowed in the file specification.
/NOWAIT
Specifies that the parent process continue in parallel with the
spawned subprocess. This is the same as SPAWN/NOWAIT in DCL.
/OUTPUT=file-spec
Requests that the output from the SPAWN operation be written to
the specified file.
No wildcards are allowed in the file specification.
/WAIT
Specifies that the parent process should be suspended and that
the terminal should be attached to the sub-process.
SS$_DEBUG
SS$_DEBUG (defined in STARLET) is a condition you can signal from
your program to invoke the debugger. Signalling SS$_DEBUG from
your program is equivalent to typing "control-Y" followed by
DEBUG at that point.
You can pass commands to the debugger at the time you signal it
with SS$_DEBUG. For example, to invoke the debugger and do a
SHOW CALLS command at a given point in your program, you could
put the following into your program (this example is coded in
BLISS):
SIGNAL(SS$_DEBUG, 1,
UPLIT BYTE(%ASCIC 'SHOW CALLS'));
STEP
The STEP command causes the debugger to execute your program by
line, by instruction, or by some other step unit. STEP is one of
the four debugger commands that can cause your program to execute
(the others are CALL, EXIT, and GO).
Format:
STEP [/qualifier] [n]
The behavior of the STEP command depends on the following
factors:
o The default STEP mode previously established with a SET STEP
command, if any.
o The qualifier specified with the STEP command, if any.
o The number of step units specified as parameter to the STEP
command, if any.
If no SET STEP command was previously entered, the debugger takes
the following default action when you enter a STEP command
without specifying a qualifier or parameter:
1. Executes a line of source code (STEP/LINE is the default).
2. Reports that execution has completed by issuing a "stepped to
..." message (STEP/NOSILENT is the default).
3. Displays the line of source code where execution is suspended
(STEP/SOURCE is the default).
4. Issues the prompt.
If you plan to enter several STEP commands with the same
qualifiers, you can first use the SET STEP command to establish
new default qualifiers (for example, SET STEP INTO NOSYSTEM makes
the STEP command behave like STEP/INTO/NOSYSTEM). Then you do
not have to use those qualifiers with the STEP command. You can
override the current default qualifiers for the duration of a
single STEP command by specifying other qualifiers. Use the SHOW
STEP command to identify the current STEP defaults.
Additional information available:
ExamplesMultiprocess ProgramsParametersQualifiers
Examples
1 DBG> SHOW STEP
step type: source, nosilent, by line,
over routine calls
DBG> STEP
stepped to SQUARES$MAIN\%LINE 4
4: OPEN(UNIT=8, FILE='DATAFILE.DAT', STATUS='OLD')
DBG>
The SHOW STEP command identifies the default qualifiers currently
in effect for the STEP command. In this case, the STEP command,
without any parameters or qualifiers, causes the debugger to
execute the next line of source code. After the STEP command has
completed, execution is suspended at the beginning of line 4.
2 DBG> STEP 5
stepped to MAIN\%LINE 47
47: SWAP(X,Y);
DBG>
This command causes the debugger to execute the next 5 lines of
source code. After the STEP command has completed, execution is
suspended at the beginning of line 47.
3 DBG> STEP/INTO
stepped to routine SWAP
23: procedure SWAP (A,B: in out integer) is
DBG> STEP
stepped to MAIN\SWAP\%LINE 24
24: TEMP: integer := 0;
DBG> STEP/RETURN
stepped on return from MAIN\SWAP\%LINE 24 to MAIN\SWAP\%LINE 29
29: end SWAP;
DBG>
In this example, the STEP/INTO command causes the debugger to
execute the program up to the start of the routine that is being
called at the current PC value (SWAP, in this case). The STEP
command executes the next line of source code. The STEP/RETURN
command causes the debugger to finish executing routine SWAP up
to its RET instruction (that is, up to the point just prior to
transferring control back to the calling routine).
4 DBG> SET STEP INSTRUCTION
DBG> SHOW STEP
step type: source, nosilent, by instruction,
over routine calls
DBG> STEP
stepped to SUB1\%LINE 26: MOVL S^#4,B^-20(FP)
26: Z:integer:=4;
DBG>
In this example, the SET STEP INSTRUCTION command establishes the
default STEP command qualifier to be /INSTRUCTION. This is
verified by the SHOW STEP command. The STEP command causes the
debugger to execute the next instruction. After the STEP command
has completed, execution is suspended at the first instruction
(MOVL) of line 26 in module SUB1.
Multiprocess Programs
If you are using the multiprocess debugging configuration to
debug a multiprocess program (if the logical name DBG$PROCESS has
the value MULTIPROCESS), note the following additional points:
1. The STEP command is executed in the context of the visible
process, but images in any other unheld processes (processes
that have not been put on hold with a SET PROCESS/HOLD
command) are also allowed to execute. If you use the DO
command to broadcast a STEP command to one or more processes,
the STEP command is executed in the context of each specified
unheld process, but images in any other unheld processes are
also allowed to execute. In all cases, a hold condition in
the visible process is ignored.
2. Once execution is started, the way in which it continues
depends on whether the command SET MODE [NO]INTERRUPT was
entered. By default (SET MODE INTERRUPT), execution
continues until it is suspended in any process. At that
point, execution is interrupted in any other processes that
were executing images, and the debugger prompts for input.
Parameters
n
A decimal integer that specifies the number of step units (lines,
instructions, and so on) to be executed. If you do not specify
the parameter n, the debugger executes one step unit.
Qualifiers
STEP command qualifiers determine the exact stepping behavior.
The following qualifiers affect the location to which you step:
/BRANCH, /CALL, /EXCEPTION, /INSTRUCTION,
/INSTRUCTION=(opcode-list), /LINE, /RETURN.
The following qualifiers affect what output is seen upon
completion of a step: /[NO]SILENT, /[NO]SOURCE.
The following qualifiers affect what happens at a routine call:
/INTO, /[NO]JSB, /OVER, /[NO]SHARE, /[NO]SYSTEM.
Additional information available:
/BRANCH/CALL/EXCEPTION/INSTRUCTION/INSTRUCTION
/INTO/JSB/LINE/NOJSB/NOSHARE/NOSILENT/NOSOURCE
/NOSYSTEM/OVER/RETURN/SHARE/SILENT/SOURCE
/SYSTEM
/BRANCH
Executes the program to the next branch instruction. STEP/BRANCH
has the same effect as SET BREAK/TEMPORARY/BRANCH;GO.
/CALL
Executes the program to the next call or RET instruction.
STEP/CALL has the same effect as SET BREAK/TEMPORARY/CALL;GO.
/EXCEPTION
Executes the program to the next exception condition, if any.
STEP/EXCEPTION has the same effect as SET
BREAK/TEMPORARY/EXCEPTION;GO. If no exception condition occurs,
STEP/EXCEPTION has the same effect as GO.
/INSTRUCTION
Executes the program to the next instruction. STEP/INSTRUCTION
has the same effect as SET BREAK/TEMPORARY/INSTRUCTION;GO.
/INSTRUCTION=(opcode-list)
Executes the program to the next instruction whose opcode is
specified in the list. STEP/INSTRUCTION=(opcode[,...]) has the
same effect as SET BREAK/TEMPORARY/INSTRUCTION=(opcode[,...]);GO.
/INTO
If execution is currently suspended at a routine call, STEP/INTO
executes the program up to the start of that routine (steps into
that routine). Otherwise, STEP/INTO has the same effect as STEP
without a qualifier. /INTO is the opposite of /OVER (the default
behavior).
The STEP/INTO behavior may be modified by also using the
/[NO]JSB, /[NO]SHARE, and /[NO]SYSTEM qualifiers.
/JSB
Use STEP/INTO/JSB to override a previous SET STEP NOJSB command.
STEP/INTO/JSB enables a STEP/INTO command to step into routines
that are called by a JSB instruction, as well as into routines
that are called by a CALL instruction. /JSB is the default for
all languages except DIBOL. (See /NOJSB for more information).
/LINE
Executes the program to the next line of source code. However,
note that the debugger skips over any source lines that do not
result in executable code when compiled (for example, comment
lines). STEP/LINE has the same effect as SET
BREAK/TEMPORARY/LINE;GO. This is the default behavior for all
languages.
/NOJSB
Use /NOJSB with /INTO. If execution is currently suspended at a
routine call and the routine is called by a JSB instruction,
STEP/INTO/NOJSB has the same effect as STEP/OVER. Otherwise,
STEP/INTO/NOJSB has the same effect as STEP/INTO.
/NOJSB is the default for DIBOL. In DIBOL, user-written routines
are called by the CALL instruction and DIBOL run-time library
routines are called by the JSB instruction.
/NOSHARE
Use /NOSHARE with /INTO. If execution is currently suspended at
a call to a shareable image routine, STEP/INTO/NOSHARE has the
same effect as STEP/OVER. Otherwise, STEP/INTO/NOSHARE has the
same effect as STEP/INTO.
/NOSILENT
Specifies that the "stepped to..." message is displayed after the
STEP has completed. This is the default.
/NOSOURCE
Specifies that the source line for the current location is not
displayed after the STEP has completed. See also SET STEP
[NO]SOURCE.
/NOSYSTEM
Use /NOSYSTEM with /INTO. If execution is currently suspended at
a call to a system routine (in P1 space), STEP/INTO/NOSYSTEM has
the same effect as STEP/OVER. Otherwise, STEP/INTO/NOSYSTEM has
the same effect as STEP/INTO.
/OVER
If execution is currently suspended at a routine call, STEP/OVER
executes the routine up to and including the routine's RET
instruction (steps over that routine). /OVER is the default
behavior and is the opposite of /INTO.
/RETURN
Executes the routine in which execution is currently suspended up
to its RET instruction (that is, up to the point just prior to
transferring control back to the calling routine). This enables
you to inspect the local environment (for example, obtain the
values of local variables) before the RET instruction deletes the
routine's call frame from the call stack. STEP/RETURN has the
same effect as SET BREAK/TEMPORARY/RETURN;GO.
STEP/RETURN n executes the program up n levels of the call stack.
/SHARE
Use STEP/INTO/SHARE to override a previous SET STEP NOSHARE
command. STEP/INTO/SHARE enables a STEP/INTO command to step
into shareable image routines, as well as into other kinds of
routines. /SHARE is the default.
/SILENT
Specifies that the "stepped to..." message and the source line
for the current location are not displayed after the STEP has
completed. /SILENT overrides /SOURCE.
/SOURCE
Specifies that the source line for the current location is
displayed after the STEP has completed. This is the default.
See also SET STEP [NO]SOURCE.
/SYSTEM
Use STEP/INTO/SYSTEM to override a previous SET STEP NOSYSTEM
command. STEP/INTO/SYSTEM enables a STEP/INTO command to step
into system routines (in P1 space), as well as into other kinds
of routines. /SYSTEM is the default.
SYMBOLIZE
Converts a virtual address to a symbolic representation. If the
given address is a static address, the address is symbolized as
the nearest preceding symbol name plus an offset. If it is also
a code address, a line number is included in the symbolization if
a line number can be found which covers the address. If the
address is a register name, the debugger displays symbols in all
SET modules that are bound to that register. If the address is a
stack address, then the debugger tries to symbolize to a variable
in the routine whose call frame contains that address.
Symbolization is now done automatically on EXAMINE commands, so
SYMBOLIZE now has limited usefulness.
Format:
SYMBOLIZE address-expression [,address-expression...]
Additional information available:
Examples
DBG> EVAL/ADDR X
400
DBG> SYMB 400
address 400:
FOO\X
DBG> EXAM 400
FOO\X: 3
DBG> SYMB R0
address %R0:
FOO\Y
FOO\Z
Parameters
address-expression
any address expression which is valid in the currently set
language.
TYPE
Displays source code corresponding to the specified line number
or specified line number range. In non-screen mode, the source
code is just written to the terminal. In screen mode, with a
source window displayed, the TYPE command positions the source
window around the specified line.
Format:
TYPE [ [modname\]line-number[:line-number]
[,[modname\]line-number[:line-number]...] ]
Additional information available:
Example
DBG> TYPE 1
module FORARRAY
1: PROGRAM FORARRAY
DBG> TYPE
module FORARRAY
2: C
DBG> TYPE 1:5
module FORARRAY
1: PROGRAM FORARRAY
2: C
3: C This test program is used to test
4: C FORTRAN array references in the Debugger.
5: C It allows testing of straight array references,
Parameters
line-number
The listing line number for the source line. You can specify a
single line, a list of lines, or a line number range. If
omitted, the debugger displays the next line after the one it
last displayed.
modname
Name of the module whose source you want displayed. If omitted,
the default is to determine the module from the current scope.
WHILE
The WHILE command provides a way of iteratively executing
debugger commands. As long as the language expression given as
the WHILE clause is true, the debugger command list given in the
DO clause is executed.
Format:
WHILE lang-exp DO (debug-cmd-list)
Additional information available:
Example
To repeatedly STEP until the variable X is not equal to zero:
DBG> WHILE (X .EQ. 0) DO (STEP/SILENT/INTO)
Parameters
lang-exp
Any expression in the currently set language which evaluates to
TRUE or FALSE.
debug-cmd-list
A single debugger command, or a sequence of debugger commands
separated by semicolons.