DEBUG DEBUG — VMS 5.4
For more detailed help, choose one of the additional topics
listed below:
Additional information available:
SS$_DEBUGATTACHCALLCANCELCONNECTCTRL_C
CTRL_YCTRL_ZDECLAREDEFINEDELETEDEPOSITDISABLE
DISPLAYDOEDITENABLEEVALUATEEXAMINEEXIT
EXITLOOPEXPANDEXTRACTFORGOHELPIF
MOVEQUITREPEATSAVESCROLLSEARCHSELECT
SETSHOWSPAWNSTEPSYMBOLIZESYNCHRONIZE
TYPEWHILE
New FeaturesRelease NotesAddress ExpressionsBuilt in Symbols
Debugging ConfigurationsKeypad DefinitionsLanguage SupportLogical Names
MessagesMultiprocessPathnamesScreen ModeSystem Management@file spec
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_Mode 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_Mode 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_Mode 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 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" 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_Mode 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
(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
/[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
V5.4
The new features for Version V5.4 of the debugger are as
follows:
1. You can debug vectorized programs -- that is, programs that
use VAX vector instructions. See the topic Vector_Features,
which also lists the debugger commands and command
qualifiers that are new with this release of the debugger.
2. When using the EXAMINE command, you can specify composite
address expressions of a complex form, such as might be
appropriate for a vectorized program. (Note that this
feature is not restricted to vectorized programs.) See the
topic Composite_Examine.
Type HELP Release_Notes V5.4 for more information about this
release.
Additional information available:
Vector FeaturesComposite Examine
Vector Features
The Version 5.4 debugger has a new set of features that enable
you to debug vectorized programs (programs that use VAX vector
instructions). You can now perform the following tasks:
o Display information about the availability and use of the
vector processor on your system
o Control and monitor the execution of vector instructions
with breakpoints, watchpoints, and so on
o Specify built-in symbols for the vector registers (%V0 to
%V15) and the vector control registers (%VCR, %VLR, and
%VMR)
o Examine and deposit into the vector registers and the vector
control registers
o Display vector instructions using a screen-mode instruction
display
o Examine and deposit vector instructions and their operands
o Perform masked operations on vector registers and vector
instructions to display only certain register elements or
override the masking associated with a vector instruction
o When using the EXAMINE command, specify composite address
expressions of a complex form that might be appropriate for
a vectorized program
o Display the decoded results of vector floating-point
exceptions
o Control synchronization between the scalar and vector
processors
o Save and restore the current vector state when using the
CALL command to execute a routine that might affect the
vector state
The following list identifies new and enhanced commands and
qualifiers for the debugger's command interface:
o CALL/[NO]SAVE_VECTOR_STATE
o CANCEL BREAK/VECTOR_INSTRUCTION
o CANCEL TRACE/VECTOR-INSTRUCTION
o EXAMINE/FMASK, /TMASK, /OPERANDS
o SET BREAK/VECTOR_INSTRUCTION, /INSTRUCTION[=(opcode[,...])]
o SET STEP VECTOR_INSTRUCTION, INSTRUCTION[=(opcode[,...])]
o SET TRACE/VECTOR_INSTRUCTION, /INSTRUCTION[=(opcode[,...])]
o SET VECTOR_MODE [NO]SYNCHRONIZED
o SHOW PROCESS
o SHOW VECTOR_MODE
o STEP/VECTOR_INSTRUCTION, /INSTRUCTION[=(opcode[,...])]
o SYNCHRONIZE VECTOR_MODE
Composite Examine
When using the EXAMINE command, you can specify various forms of
composite address expressions---expressions that include byte
offsets from a given address. For example, if X is an integer
variable, the following EXAMINE command displays the value
currently stored at the memory location that is 6 bytes beyond
the address of X:
DBG> EXAMINE X + 6
MOD3\X+6: 274903
You can now specify composite address expressions of a complex
form, such as might be appropriate for a vectorized program.
(Note that this feature is not restricted to vectorized
programs.) For example:
DBG> EXAMINE ARRX(1) + .%V9(0:VLR-1)
DBG> EXAMINE ARRZ(1) + .%V1(0:3) + .%V3(0:2)
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 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_Mode 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, multiple users who are simultaneously
debugging programs can place an additional load on a system.
The subtopics 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, you might also
have to tune your system 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 as follows:
o Each user's ENQLM quota should be increased by at least
the number of processes being debugged.
o Each user's PGFLQUOTA might need to be increased. If a
user has an insufficient PGFLQUOTA, the debugger might
fail to activate or cause "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) might
need to be increased. For example, if 10 users are using
the debugger simultaneously, 10 global sections using a
total of 650 global pages are required by the debugger.
V5.4
The additional topics describe any problems or restrictions with
this release of the debugger and provide any other relevant
information.
New features are listed separately under HELP New_Features V5.4.
There are no incompatibilities with previous versions of the
debugger.
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.4 Release Notes Manual for complete
information.
Additional information available:
Corrected Problems or RestrictionsNew Problems or RestrictionsPrevious Problems or Restrictions
Single Process Debugging ConfigurationObsolete Commands
Corrected Problems or Restrictions
The following problems or restrictions in previous versions of
the debugger have been corrected.
In VMS Version 5.0:
o If you defined a symbol with the DEFINE/COMMAND command, you
could not then specify that symbol as the first or only
element of a command string in another DEFINE/COMMAND
command. This problem has been corrected; there are no
longer any restrictions on using a previously defined symbol
in another DEFINE/COMMAND command.
o If you used the STEP command to execute a line of code that
caused certain exceptions, the debugger executed the program
(stepped) into an application-declared exception handler, if
one was available, and suspended execution within the
handler. This problem has been corrected; the debugger now
allows uninterrupted execution of the exception handler.
o In a COBOL program, depositing a value into a variable of
type SIGNED LEADING SEPARATE modified adjacent memory
locations. This problem has been fixed; depositing no
longer affects adjacent locations.
In VMS Version 5.2:
o You could not invoke the debugger with a program that was
linked with more than 25 images, including any Run-Time
Library images. This problem has been corrected; there are
no longer any restrictions on the number of images that can
be linked with your program.
o To achieve good debugger startup performance with large
images (more than 5000 blocks), you had to adjust your
working set quota (WSQUOTA) to 3000 or more. This problem
has been corrected; you no longer have to adjust your
working set quota to achieve good startup performance with
large images.
In VMS Version 5.3:
o If you entered a GO command and specified an address
expression after the program terminated, any breakpoints,
tracepoints, or watchpoints that you set previously were
ignored. This problem has been corrected; any previously
set breakpoints, tracepoints, or watchpoints are no longer
ignored.
o The low/high bound expressions in Pascal subrange
expressions were restricted to being constants. This
problem has been corrected; the subrange expressions no
longer have such a restriction.
o The Parameters subtopic in the online help caused some
confusion. To elimate any confusion, the Parameters
subtopic has been deleted from the HELP MESSAGES topic.
o There were restrictions on specifying a search list for
SYS$LIBRARY. This problem has been corrected; any such
restrictions have now been removed.
o The technique for setting watchpoints in installed writable
shareable images was not included in the debugger
documentation. The VMS Version 5.4 edition of the VMS
Debugger Manual outlines the technique for setting
watchpoints.
New Problems or Restrictions
The additional topics describe problems or restrictions that are
new with this version of the debugger.
Additional information available:
Vector Support Restrictions and ProblemsMACRO Source Correlation Problem
Vector Support Restrictions and Problems
The following are problems and restrictions with the debugger's
support for vectorized programs:
o When the programming language is Bliss, COBOL, or RPG, to
deposit into %VMR you must specify a type qualifier. For
example, DEPOSIT/QUADWORD %VMR = %HEX 0FFFFFFFF.
o When the programming language is PL/I, COBOL, or DIBOL, the
command EXAMINE %VMR displays %VMR as an array of bits
instead of as a hexadecimal quadword. Type the command
EXAMINE/HEX/QUADWORD %VMR to get the default behavior for
other programming languages.
o When the vector mode is synchronized (if you have entered
the command SET VECTOR_MODE SYNCHRONIZED), the debugger
suspends execution twice at any breakpoints that were set on
vector instructions. To resume execution from such
breakpoints, you must enter the GO or STEP command twice.
MACRO Source Correlation Problem
There is a source-line correlation problem with MACRO programs
that invoke either the $FAO or $FAO_S system service macro, or
an application-defined macro that contains any of the following
directives: .IRP, .IRPC, .REPT or .REPEAT.
In such cases, the symbol table information about source lines
and line numbers might be unreliable. The problem occurs as
soon as the macro is invoked and persists as long as execution
is within the module in which the macro is invoked.
When the problem occurs, the pointer in a screen-mode source
display is typically 1 or 2 lines off the line at which
execution is actually suspended.
To determine the exact point at which execution is suspended,
use the screen-mode instruction display INST. The arrow in
display INST correctly points to the instruction at which
execution is suspended. Pressing keypad key 7 puts displays SRC
and INST side by side so that you can quickly compare the MACRO
source code and the decoded instruction stream. Note that the
line number information in display INST might be unreliable (as
in SRC).
The problem shows up also when the debugger issues a "stepped
to...", "break at...", or "trace at..." message, which might
indicate the wrong source line.
Specifying a line number in a command might also give incorrect
results. For example, do not specify SET BREAK %LINE 34. When
setting breakpoints or tracepoints, specify a routine name, a
label, or a memory address instead of a line number.
Previous Problems or Restrictions
The additional topics describes problems or restrictions that
originated in previous versions of the debugger and have not yet
been corrected.
The version in which the problem or restriction was first
noticed is identified.
Additional information available:
$WAKE Call Followed by $HIBER Call V53Debugging SMG Programs Using the Debugger’s Command Interface V50
RUN/DETACHED Command Entered After LINK/DEBUG Command V53SET IMAGE Command Limitation V53
Using Debugger Commands in DCL Command Procedures v52Using the Abort Key or Stop Button After a SPAWN Command V52
Using the Debugger on a VAXstation Running VWS V50
$WAKE Call Followed by $HIBER Call V53
If a program running under the debugger issues a $WAKE call
followed by a $HIBER call, the debugger hibernates.
Debugging SMG Programs Using the Debugger's Command Interface V50
The debugger uses the VMS Screen Management Facility (SMG) to
implement screen mode. If your program also calls SMG routines
and you debug it with the debugger running on the same terminal,
there is likely to be interference between your program and the
debugger.
To avoid this problem, debug the program using two terminals or
a VAXstation. This technique is described in the VMS Debugger
Manual.
RUN/DETACHED Command Entered After LINK/DEBUG Command V53
If you link a program with the command LINK/DEBUG and then
execute the program in a detached process (with the command
RUN/DETACHED), the debugger goes into an infinite loop. To
circumvent this problem, use the following syntax when
specifying the RUN/DETACHED command:
RUN/DETACHED/OUTPUT=device:/INPUT=device:
SET IMAGE Command Limitation V53
For some large programs with many program sections (usually
caused by many FORTRAN routines with many COMMON blocks) the
debugger may receive an internal error during the processing of
a SET IMAGE command. In such cases, the image cannot be
debugged.
Using Debugger Commands in DCL Command Procedures v52
Before Version 5.2, 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
Beginning with Version 5.2, 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 way to work around this problem is to establish a
single-process debugging configuration, by means of the
following DCL command
$ DEFINE DBG$PROCESS NONE
Using the Abort Key or Stop Button After a SPAWN Command V52
If you use the SPAWN command either from the DCL level or from
within a debugging session, the debugger abort key or Stop
button is disabled after you log out or return from the spawned
subprocess.
In the debugger command interface, the abort key is Ctrl/C by
default. In the DECwindows interface, the abort button is the
Stop button in the main window.
The only way to re-enable the abort key or Stop button is to log
out and log back in.
Using the Debugger on a VAXstation Running VWS V50
There is a problem with the handling of Ctrl/Y when the debugger
is running in its own window and you have entered the command
SET MODE SEPARATE. Ctrl/Y is ignored when the keyboard is
attached to the debugger window. To make Ctrl/Y take effect,
attach the keyboard to the window from which you invoked the
debugger (by pointing at that window with the mouse), then press
Ctrl/Y.
Single Process Debugging Configuration
Before VMS Version 5.2, the debugger and the program being
debugged ran in the same process. This debugging configuration
is referred to as the single-process configuration. Beginning
with VMS Version 5.2, the debugger consists of the following two
parts that run in separate processes:
o DEBUG.EXE, a relatively small kernel debugger image
o DEBUGSHR.EXE, a larger main image
When you invoke the 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 (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 following additional debugger
features that are available beginning 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 and
then the DCL command DEBUG to abort a debugger command or
program execution from within a debugging session. Using Ctrl/Y
returns you to the 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
control-key sequence.
The single-process configuration avoids the following
restrictions of the default and multiprocess configurations:
1. Restriction on using debugger commands in DCL command
procedures
2. Restriction on using the abort key (CTRL/C, by default)
after a SPAWN command.
See the additional topics for more information about these
restrictions.
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
To avoid the restrictions of the default configuration
use the single-process configuration (established when the
definition of DBG$PROCESS is NONE) only when necessary.
The single-process configuration is unsupported and may not
be available in future releases of the debugger. If you
encounter any problems using the default or multiprocess
configurations (other than those mentioned in these release
notes), please submit a Software Problem Report (SPR).
Additional information available:
Using Debugger Commands in DCL Command ProceduresUsing the Abort Key or Stop Button After a SPAWN Command
Using Debugger Commands in DCL Command Procedures
Before Version 5.2, 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
Beginning with Version 5.2, 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 way to work around this problem is to establish a
single-process debugging configuration, by means of the
following DCL command
$ DEFINE DBG$PROCESS NONE
Using the Abort Key or Stop Button After a SPAWN Command
If you use the SPAWN command either from the DCL level or from
within a debugging session, the debugger abort key or Stop
button is disabled after you log out or return from the spawned
subprocess.
In the debugger command interface, the abort key is Ctrl/C by
default. In the DECwindows interface, the abort button is the
Stop button in the main window.
The only way to re-enable the abort key or Stop button is to log
out and log back in.
Obsolete Commands
The following debugger commands and command qualifiers are
obsolete and are no longer documented.
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 DISPLAY
The DISPLAY command now enables you to create a new display, in
addition to modifying an existing display.
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.
Address Expressions
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
Built in Symbols
The debugger built-in symbols provide options for specifying
program entities and values in debugger commands.
The topic Overview lists the built-in symbols according to
functional groupings.
Additional information available:
%AP%FP%SP%PC%VCR%VLR%VMR
%NAME%PARCNT%BIN%DEC%HEX%OCT%CURLOC
%NEXTLOC%PREVLOC%CURVAL%LABEL%LINE%PAGE%WIDTH
%CURDISP%CURSCROLL%NEXTDISP%NEXTINST
%NEXTOUTPUT%NEXTSCROLL%NEXTSOURCE%SOURCE_SCOPE
%INST_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
Overview
The debugger built-in symbols are grouped functionally as
follows:
%R0 through %R11, %AP (R12), %FP (R13), %SP (R14), %PC (R15),
and %PSL -- used to specify the VAX general registers.
%V0 to %V15, %VCR, %VLR, and %VMR -- used to specify the VAX
vector registers and vector control 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 scope, relative to the call
stack, for which source code is displayed in a screen mode
source display.
%INST_SCOPE -- used to specify the scope, relative to the call
stack, for which decoded instructions are displayed in a screen
mode instruction display.
%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.
%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)
%Vn
%V0 through %V15 specify the VAX vector registers V0 through
V15.
%VCR
%VCR specifies the VAX vector count register (VCR). The VCR
specifies the length of the offset vector generated by the IOTA
instruction.
%VLR
%VLR specifies the VAX vector length register (VLR). The VLR
limits the highest element of a vector register that is
processed by a vector instruction.
%VMR
%VMR specifies the VAX vector mask register (VMR). The VMR
specifies a mask (a bit pattern) that a vector instruction uses
in order to operate on only certain elements of a vector
register operand.
%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, DEPOSIT, or
EVALUATE/ADDRESS 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, DEPOSIT, or EVALUATE/ADDRESS
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, DEPOSIT, or EVALUATE/ADDRESS
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. These two
symbols are not affected by an EVALUATE/ADDRESS command.
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 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 scope, relative to the call stack, for which
source code is displayed in a screen-mode source display. If
source code is not available for display in that scope, the
debugger displays source code for the next level down the call
stack for which it is available.
The symbol %SOURCE_SCOPE is used in the definition of the
predefined screen-mode source display SRC:
DBG> DISPLAY SRC AT H1 SOURCE (EXAMINE/SOURCE .%SOURCE_SCOPE\%PC)
%INST_SCOPE
Specifies the scope, relative to the call stack, for which
decoded VAX instructions are displayed in a screen-mode
instruction display.
The symbol %INST_SCOPE is used in the definition of the
predefined screen-mode instruction display INST:
DBG> DISPLAY INST AT H1 INSTRUCTION (EXAMINE/INST .%INST_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
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 |
+-----------------------+
Keypad Definitions
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 |
| | | |
+-----------------+--------+--------+
Language Support
You can use the debugger with the following VAX languages: Ada,
BASIC, BLISS, C, COBOL, DIBOL, FORTRAN, MACRO-32, Pascal, PL/I,
RPG II, and SCAN. The debugger recognizes the syntax, data
typing, and scoping rules of a given language.
The debugger also recognizes the operators and expression syntax
of a given language. Therefore, you can compute the value of a
source-language expression using the syntax of the currently set
language.
The additional topics provide the following information for each
language:
- Supported operators in language expressions
- Supported constructs in language expressions and address
expressions
- Supported data types
- Any other language-specific features (for example, event
keywords in the case of Ada and SCAN)
- Restrictions in debugger support, if any
For further information about language-specific debugger
support, refer to the documentation furnished with a particular
language.
If your program is written in more than one language, you can
use the SET LANGUAGE command to change the debugging context
from one language to another during a debugging session.
In addition, when debugging a program that is written in an
unsupported language, you can set the language to UNKNOWN. To
maximize the usability of the debugger with unsupported
languages, this setting causes the debugger to accept a large
set of data formats and operators, including some that might be
specific to only a few supported languages. The operators and
constructs that are recognized when the language is set to
UNKNOWN are identified in the topic UNKNOWN.
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 TypesEventsExceptionsMultitaskingOperatorsNamesPredefined Symbols
OverloadingPackagesSubunitsTick OperatorsRestrictions
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 Language_Support 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
Predefined Symbols
Supported predefined symbols for Ada follow:
Symbol Meaning
------ -------
TRUE Boolean True
FALSE Boolean False
null Null access value
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
Restrictions
Restrictions in debugger support for Ada are as follows:
- With certain Ada record variables, the debugger fails to
show the record components correctly (possibly with a
NOACCESSR error message) when the type declaration is in a
different scope than the record (symbol) declaration.
- You cannot examine Ada objects requiring extended descriptor
DSTs (debug-symbol-table records) to describe them. These
objects are typically accessed arrays whose size is greater
than 65535 bytes.
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 Pointer type
unsigned char Array type
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 TypesNotesRestrictions
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.
Restrictions
Restrictions in debugger support for Pascal are as follows.
You cannot examine the .LENGTH and .BODY fields of a Pascal
varying string variable using the normal language syntax. For
example, if VARS is the name of a string variable, the following
commands are not supported:
DBG> EXAMINE VARS.LENGTH
DBG> EXAMINE VARS.BODY
To examine these fields, use the techniques illustrated in the
following examples:
Use: Instead of:
EXAMINE/WORD VARS EXAMINE VARS.LENGTH
EXAMINE/ASCII VARS+2 EXAMINE VARS.BODY
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:
EventsOperatorsExpressionsPredefined SymbolsData 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
Predefined Symbols
Supported predefined symbols for SCAN follow:
Symbol Meaning
------ -------
TRUE Boolean True
FALSE Boolean False
NIL Nil pointer
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:
OperatorsExpressionsPredefined SymbolsData 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
Predefined Symbols
Supported predefined symbols for UNKNOWN follow:
Symbol Meaning
------ -------
TRUE Boolean True
FALSE Boolean False
NIL Nil pointer
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
To obtain help about a debugger message, use the following
general command format:
DBG> HELP MESSAGES message-identifier
where "message-identifier" is the keyword that is displayed to
the left of the message text.
The following information is provided for each message
identifier: message text, explanation, and user action. The
additional topics list all message identifiers alphabetically.
Additional information available:
ABORTEDABSDATSYNACCADDCOMACTIVATING
ADDRANCOVADDRESSMODEADDRMBZADDRREGAMBFIELD
AMBIGQUALAMPERSANDASTWASDISABLEDASTWASENABLED
ATTACHEDATTREQREFBADADDSPABADADDSTA
BADDESCRBADDISCVALBADDSTBADEVNPARBADEXH
BADFRAMEBADHANDLEBADOPCODEBADPARAM
BADSCOPEBADSIGARGBADSTACKBADSTARTPCBADSTATUS
BADTAGVALBADTARGETBADUSREVNTBADWATCH
BADWIDGETBASVARNOTSETBITRANGEBUFFEROVF
BWLGISMUSCANTACCESSMAINCANTCREATEMAINCANTGETFID
CANTINTPROCANTOPNIMGCANTPASTCIREXLSTCLIBRDFAI
CLIBRDLCKCMDISCORCMDISOBSCMDNOTDWCMDNOTONE
CMDSYNERRCMPNOTFNDCNTRLWRDNOTACCESS
CONFLICTCONFROMEXCCONSTRCOMPCPOSTDECR
CPOSTINCRCPREDECRCPREINCRCRMPSCFAILCVTNEGUNS
DBGERRDBGSTOPPEDDECLARERRDECOVFDECROPRAND
DEFKEYDEFKEYERRDEFTOORECDELKEYDELKEYERR
DELTIMTOODESCNOTSETDISABLEASTDISNAMREQ
DISNOTSELDISPEXISTSDISPRLENSIZDIVBYZERO
DSTERRGDSTNESDEPDUPLVQUALDWERRDWNOT1PROC
DYNIMGSETDYNMODSETEDITDISVEREDITERROR
EDITFILEEDITNOFILEEDITREVVERENABLEAST
ENTRYMASKENUMRANGEERRACTIMGERRASSIGN
ERRCLSFILEERRCRELNMERRDEASSIGNERRFAO
ERRGETDVIERRGETEFERRINSDECERRINSIGNAL
ERRINVEDITERRORERRORLIMITERROR_BLOCK
ERRQIOWERRSMGERRSYSSERVERRTARGOPERRUSREVNT
EXABEYREGEXARANGEEXCBREREPEXCDURCAL
EXITARGEXITERREXITSTATUSEXPMEMPOOLFAILFINDIMG
FAILHEIRKYFAILXTINITFATALSTATUSFILEUNALFLTOVF
HEIGHTDIFFIDENTLONGIFIXUNDIFLTUNDIINTOVF
ILLADDCONILLASTERILLDEFNAMILLENUMVAL
ILLEVNSTRILLFILPTRILLFLOATILLLENGTHILLPACSIZILLPATH1ILLPATH2
ILLPATHELEMILLPOSFLDILLQUALIFILLRANGEILLSETCONILLSIGEXT
ILLSIZFLDILLSUBLENILLSUBSTRILLTYPEILLVQUALINCDSTNESINCOMPOPR
INCOMPPTRINCOMQUALINCOMTARGETINCOMVERSION
INDBASEQLINITERRINITIALINPREADERRINSVIRMEM
INTERRINTERRUPTEDINTMEMERRINTOVFINTVECERR
INUMTRUNCINVARGLISINVARRDIMINVARRDSC
INVCHARINVCHRCONINVDESCINVDIGBININVDIGDECINVDIGHEX
INVDIGOCTINVDIRNAMINVDMTPTRINVDSPSIZ
INVDSTRECINVEXPRINVFIXDSTINVFLDREFINVGSTREC
INVGSTTYPINVMARINVNUMBERINVNUMSRC
INVNUMSTRINVOPADDRINVOPSYMINVPAGEINVPRCSYN
INVPRIORINVRANSPECINVSELDISINVSRCLININVTIMSLIINVWIDTH
INVWINPARIRFAOVFISTRTRUITMNOTAVAITMTRUNC
IVALNOFITIVALOUTBNDSIVPRCLOGKERFUNCNYIKEYNAMERR
KEYSTATERRLASTCHANCELINEINFOLOGFILEISLONGSTRING
LOOPINCRLOOPVARLOWBNDOPTMASKMISMATCHMASKNOTUSED
MASKNOTVMRMASKPARNREQMATQUOMISMISCLOSUB
MISINVNUMMISINVOPERMISMODBEGMISMODEND
MISOPEMISMODUSCOPEMOVED_1MOVED_2MOVED_3MOVED_4
MOVED_5MOVED_6MPARENREQMPCOMMANDNAMSTRMIS
NAMTOOLONGNEEDMORENEEDPARENNOACCESSR
NOACCESSWNOADDRREGNOALTERSPNOATTACH
NOBREAGGRNOBREAKATNOBREAKSNOCALLSNOCANMAIN
NOCLINOCONNECTNOCURLOCNODEFSCPENODELIMTR
NODEPDEBUGNODIRLISMNODIRLISTNOELABBODYNOELABSPEC
NOENDNOEPTSPECNOEVALEXPRNOEVENTFAC
NOEXCBRENOEXHNDNOFIELDNOFREENOGLOBALSNOINPAVAIL
NOINPFOCNOINSTRANNOKEYDEFNOKEYPADNOLASTVAL
NOLINXXXNOLISTNOLOCALSNOMAINNOMARKCHNGNOMATCH
NOMORENONEXPRNONEXPRCNONUMSCOPENONXTLINNOOCCLDISP
NOOUTAVAILNOPACKMEMBODYNOPACKMEMSPECNOPRED
NOPROMPTNORECSYMNORMALNORSTBLDNOSAVPROG
NOSCOPENOSCOPELISTNOSCRDEVNOSCRMODENOSCROLL
NOSCROLLDISPNOSETTERMNOSPAWNNOSRCHSTR
NOSRCLINNOSTEPGONOSUCCNOSUCHBPTNOSUCHDISP
NOSUCHELPNOSUCHIMGNOSUCHMODUNOSUCHPACK
NOSUCHSCOPENOSUCHTASKNOSUCHTPTNOSUCHWIND
NOSUCHWPTNOSYMBOLNOSYMBOLRNOTADAPROG
NOTARRAYNOTASTRUCTNOTATMAINNOTCURPCNOTDEFINE
NOTIMPLANNOTINLOOPNOTINSCOPENOTINST
NOTNUMSCOPENOTORIGSRCNOTPTRNOTRACESNOTRAZERO
NOTRECORDNOTREENOTRUNDWNOTTASKVAL
NOTUISOSCNOTUISV30NOTUNQOVRNOTUPDATE
NOTYPEINFONOUNIQUENOUNIVERSALSNOUSREVNT
NOVALATPCNOVALTYPNOVALUENOVECTNOWATCHES
NOWATTARNOWATVARIANOWATVARSTGNOWBPTNOWILD
NOWILDFILNOWOPCONOWPROTNO_SYNC_FROM_EXC_BRENPROMPT
NULLPTRNUMCONLONGNUMTRUNCOBJECTINV
OBJPTRINVOBJTYPMISOBSOLETE_1OBSOLETE_10
OBSOLETE_11OBSOLETE_12OBSOLETE_13OBSOLETE_14
OBSOLETE_15OBSOLETE_16OBSOLETE_17OBSOLETE_18
OBSOLETE_19OBSOLETE_20OBSOLETE_21OBSOLETE_22
OBSOLETE_23OBSOLETE_24OBSOLETE_25OBSOLETE_26
OBSOLETE_27OBSOLETE_28OBSOLETE_29OBSOLETE_3
OBSOLETE_30OBSOLETE_31OBSOLETE_4OBSOLETE_5
OBSOLETE_6OBSOLETE_7OBSOLETE_8OBSOLETE_9
OPCDECOPNOTALLOWOPSYNTAXOUTPUTLOSTPACSIZREQ
PARENREQPARSTKOVRPASTHRUPATHNOTACPPATHTLONG
PATHTOOLONGPCNOTALLPLICVTERRPREDEPTNOT
PROFRANOTPROMPTCLENPROMPTOCCLPROMPTRLEN
PROVRFLOWPSHINARYNYIPSHVALNYIPXCNQUALREQ
QUOSTRLONGREADERRREFUSEDREGMASKHIDDENREGMASKMISSING
REGREQRENAMENOTRESUMERRRETURNEDRNDFCTROUT
ROPRANDFRPCDBBDTRPCERRRPCINVDSCRPCOVFRPCUNF
RPCUNKARGRSTERRSCALEADDSCALESUBSCRNOACCESSR
SCRNOSRCLINSCRNOTORIGSRCSCRTOBIGSCRTOSMALL
SCRUNAOPNSRCSCRUNAREASRCSETKEYSETKEYERR
SFCNTNEGSHOKEYERRSHRPRCSIDEFFECTSIGVECTRUNC
SIZEATOMICSIZETRUNCSOURCESCOPESPAWNEDSRCLINNOT
SS_INTSTEPINTOSTGTRUNCSTRNGPADSTRTOOLONGSTRUCSIZE
SUBOUTBNDSUBSCRNGSUBSTRINGSUPERDEBUGSYMNOTACT
SYMNOTFNDSYNCDONESYNCREPCOMSYNC_ALREADY_IN_PROGRESS
SYNERREXPRSYNERRLABELSYNERRLINESYNTAX
TASKERRORTASKNONULLTASKNOREGSTASKNOTABORT
TASKNOTACTTASKNULLTERMINATINGTIMESLICETOOFEWSUB
TOOMANDIMTOOMANERRTOOMANINVTOOMANPARM
TOOMANSUBUNAACCREGUNACREDBGOUNACVT
UNACVTBYTTAUUNALIGNEDUNALLOCATEDUNAOPEDBGI
UNAOPESCRUNAOPNHLPUNAOPNINIUNAOPNSRC
UNAREASRCUNASAVVALUNASETIMGUNASETTAS
UNASWISTAUNBPARENUNDEXPNUNDKEYUNHANDLED
UNIMPLENTUNMTCHPARNUNREQVQUALUPBNDOPT
USREVNTERRVALNOTADDRVALRNGVARNESDEP
VECDISVECREASONVECSCP0VECTSUBRNGVERIFYICF
VERSIONNUMVFLTDIVVFLTOVFVFLTROPVFLTUNDWATCHSETUP
WATCHSIZEWATNOWCANWATNOWWATWATVARGSGONE
WATVARGSOVRWATVARNOWGBLWATVARPROTWATVARPTR
WATVARREMAPWATVARSCPWIDTHDIFFWORKSTACMD
WPTTRACEWRITE_FAILEDWRITE_INTO_KERNELWRITE_INTO_KERNEL_STACK
ZERLENDSTZEROINCR
ExampleMessage FormatSeverity Levels
Example
For example, suppose the debugger displays the following
message:
%DEBUG-I-INITIAL, language is BASIC, module set to TEST
In this example, the message identifier is INITIAL. To obtain
information about this message, enter the following command:
DBG> HELP MESSAGE INITIAL
Message Format
The following example shows the elements of a debugger
diagnostic message:
%DEBUG-W-NOSYMBOL, symbol 'X' is not in the symbol table
1 2 3 4
1. The facility name (DEBUG).
2. The severity level (W, in this example).
3. The message identifier (NOSYMBOL, in this example). The
message identifier is an abbreviation of the message text.
4. The message text.
Severity Levels
The possible severity levels for diagnostic messages are as
follows:
S (success)
I (informational)
W (warning)
E (error)
F (fatal, or severe error)
Success and informational messages inform you that the debugger
has performed your request.
Warning messages indicate that the debugger might have performed
some, but not all, of your request and that you should verify
the result.
Error messages indicate that the debugger could not perform your
request, but that the state of the debugging session was not
changed. The only exceptions are if the message identifier was
DBGERR or INTERR. These identifiers signify an internal
debugger error, and you should submit a Software Performance
Report (SPR) in such cases.
Fatal messages indicate that the debugger could not perform your
request and that the debugging session is in an indeterminate
state from which you cannot recover reliably. Typically, the
error ends the debugging session.
ABORTED
Message: command aborted by user request
Severity: Warning
Explanation: The command being executed was stopped when you typed
CTRL-C.
User Action: No action necessary.
ABSDATSYN
Message: absolute date-time syntax error
Severity: Warning
Explanation: The date-time value could not be converted because it
is not in the proper VMS format.
User Action: Re-enter the date-time value using the correct VMS
date-time format.
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.
User Action: Submit an SPR. This message is handled internally,
and should never be signaled to the user.
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
ADDRMBZ
Message: a must-be-zero field in an address was not zero
Severity: Error
Explanation: This is an internal debugger error.
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.
ADDRREG
Message: & not allowed on register variables: operand bound to
register_name
Severity: Warning
Explanation: The C language & operator could not be applied to the
given operand because the operand is a register variable. This
is not allowed in the C language definition.
User Action: Do not use the & operator on a register variable.
AMBFIELD
Message: field_name is an ambiguous field name
Severity: Warning
Explanation: The reference to the given field cannot be resolved
because there is more than one field with the given name.
User Action: Fully qualify the reference with a complete name for
the desired field.
AMBIGQUAL
Message: qualifier qualifier_name is ambiguous
Severity: Warning
Explanation: The qualifier cannot be resolved to a single option.
There is more than one option to the command that starts with
these characters.
User Action: Add more of the characters to the qualifier string to
make the option unambiguous. The qualifier should be
unambiguous when it has at least four characters.
AMPERSAND
Message: operand of ampersand must be lvalue
Severity: Warning
Explanation: The C language & operator cannot be applied to the
result of an expression. This is not allowed in the C language
definition.
User Action: Do not use the & operator in this context.
ASTWASDISABLED
Message: ASTs were disabled, are still disabled
Severity: Informational
Explanation: The delivery of asynchronous system traps ASTs were
already turned off in your program when the DISABLE AST command
was issued.
User Action: None
ASTWASENABLED
Message: ASTs were enabled, are still enabled
Severity: Informational
Explanation: The delivery of asynchronous system traps ASTs were
already turned on in your program when the ENABLE AST command
was issued.
User Action: None
ATTACHED
Message: terminal now attached to process process_name
Severity: Informational
Explanation: The control of your terminal is being passed from the
current process to another process by means of the ATTACH
command.
User Action: None
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.
BADADDSPA
Message: attempted to compare addresses in different address spaces
Severity: Error
Explanation: This is an internal debugger error.
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.
BADADDSTA
Message: attempted to compare addresses with different address
states
Severity: Error
Explanation: This is an internal debugger error.
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.
BADDESCR
Message: descriptor for 'symbol_name' is bad or is not set up yet
Severity: Warning
Explanation: The descriptor for the given symbol points into memory
that cannot be read by the Debugger.
User Action: Correct the descriptor.
BADDISCVAL
Message: incorrect value of tag_value in discriminant field
tag_name.
Severity: Informational
Explanation: The discriminate value you gave was out of range.
User Action: Supply a discriminate value that is within the correct
range.
BADDST
Message: bad debugger symbol table (compiler error)
Severity: Error
Explanation: The debugger has detected an error in the Debug Symbol
Table of your program. This indicates an internal error in
either the debugger or the compiler of this module.
User Action: Please submit a Software Performance Report.
BADEVNPAR
Message: parameter does not have permitted data type for this event
Severity: Error
Explanation: The event you specified cannot be used with the
specified symbol. For example, you cannot specify the RUN event
except on TASK type symbols. Please see the documentation for
details on which events can be specified with which symbol
types.
User Action: Specify the correct symbol type for this event.
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 Explanation: The tag value you gave was out of range. User Action: Supply a tag that is within the correct range.
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
Explanation: The debugger has detected an internal inconsistency in
the event tables of the Run Time Library. This indicates an
internal error in either the debugger or the Run Time Library.
User Action: Please submit a Software Performance Report.
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.
BADWIDGET
Message: the debugger can not write to the command dialog box, is
not initialized.
Severity: Fatal
Explanation: The debugger got an unexpected status when trying to
write to the command dialog box. This prevents the debugger
from continuing this session.
User Action: Try the debugger again, if the same results exist
submit a Software Performance Report (SPR).
BASVARNOTSET
Message: base variable not set up yet
Severity: Warning
Explanation: The pointer to the based variable has not been set up
by an ALLOCATE statement. Without a valid pointer, the
reference cannot be made.
User Action: Execute the ALLOCATE statement that defines the
pointer for this based variable and then use the pointer to
dereference the desired variable.
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
Explanation: You must specify the type of offset as either B
(byte), W (word), or L (longword). You must specify the type of
literal as either I (immediate) or S (short). You may specify
the addressing mode as G (general).
User Action: Enter the instruction again, specifying the operand
using one of the above modes.
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.
User Action: The debugger failed to interrupt the process. Unless
the reason for this is apparent, submit a Software Performance
Report (SPR).
CANTOPNIMG
Message: cannot open image image_name (File:
device_name:(file_id,file_id,file_id))
Severity: Informational
Explanation: The information the debugger needs to allow you to
debug this section of code is in an image file that could not be
opened.
User Action: Check for the existence of the specified file and/or
its associated file protection attributes.
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.
The attempt to write to the clipboard may not have completed
successfully.
User Action: Verify that the clipboard contains the data that you
wrote to it. If it does not, attempt the operation again.
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.
CMDISCOR
Message: the correct command is command_name
Severity: Informational
Explanation: The previous message shows the obsolete command. The
command replacing it is shown in this message.
User Action: Use the correct command as shown. The obsolete
command will not be available in a future release of the
debugger.
CMDISOBS
Message: command command_name is obsolete
Severity: Informational
Explanation: This command is obsolete.
User Action: Do not use this command, it will not be available in a
future release of the debugger.
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.
User Action: Do not use the command 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.
User Action: Do not use the command with the one process debugger.
CMDSYNERR
Message: command syntax error at or near 'the
debugger_command_segment'
Severity: Warning
Explanation: There is a syntax error in the Debug command somewhere
near the string shown in the message.
User Action: Correct the syntax error and re-enter the command.
CMPNOTFND
Message: specified component not found in this type
Severity: Warning
Explanation: The enumeration component named in this operation
could not be found in the list of components defined for this
type.
User Action: Correct the name of the enumeration component or
correct the expression.
CNTRLWRDNOTACCESS
Message: the vector control word is not accessible
Severity: Error
Explanation: The debugger does not have direct access to the vector
control word. Therefore the operands of this instruction cannot
be displayed correctly.
User Action: Do not attempt to display the operands of vector
instructions whose control word is not accessible to the
debugger.
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
Explanation: The debugger has encountered a severe error and is
continuing. The validity of this debugging session can no
longer be guaranteed.
User Action: Determine and correct the cause of the severe error.
If the problem cannot be solved, submit a Software Performance
Report (SPR).
CONSTRCOMP
Message: illegal deposit to a constrained record component
Severity: Error
Explanation: The debugger cannot DEPOSIT into a constrained record
component.
User Action: Do not attempt to deposit into a constrained record
component.
CPOSTDECR
Message: side effect on post-decrement operation not performed
Severity: Informational
Explanation: The debugger does not support the evaluation of a
post-decrement expression.
User Action: None
CPOSTINCR
Message: side effect on post-increment operation not performed
Severity: Informational
Explanation: The debugger does not support the evaluation of a
post-increment expression.
User Action: None
CPREDECR
Message: side effect on pre-decrement operation not performed
Severity: Informational
Explanation: The debugger does not support the evaluation of a
pre-decrement expression.
User Action: None
CPREINCR
Message: side effect on pre-increment operation not performed
Severity: Informational
Explanation: The debugger does not support the evaluation of a
pre-increment expression.
User Action: None
CRMPSCFAIL
Message: failed to map-in the debugger Symbol Table (DST)
Severity: Informational
Explanation: There will always be a secondary message describing
why the debugger failed to map-in the debugger symbol table
(DST) or global symbol table (GST).
User Action: Please refer to the secondary message to take the
appropriate action.
CVTNEGUNS
Message: cannot convert negative value to unsigned value at or near
opcode_name
Severity: Warning
Explanation: The command is attempting to assign a negative value
to an unsigned type. This is not allowed.
User Action: Do not attempt to put a negative value into an
unsigned variable.
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
Explanation: There is a mismatch between the number of declarations
in a command procedure and the number of parameters passed to
that command procedure.
User Action: Check the command procedure and the DECLARE statements
within to see if they agree with the number of parameters on the
command line.
DECOVF
Message: decimal overflow at or near opcode_name
Severity: Error
Explanation: The value being deposited does not fit into the
specified address.
User Action: Specify either a smaller value or a different target
address.
DECROPRAND
Message: illegal packed or decimal string value (Reserved Operand
fault occurred during conversion)
Severity: Error
Explanation: The debugger encountered a Reserved Operand Fault when
attempting to convert the specified value. This indicates that
the packed or decimal string value did not contain a valid
number.
User Action: Ensure that the string value contains only valid
digits.
DEFKEY
Message: state_name key key_name has been defined
Severity: Informational
Explanation: The defining of functions keys has just been performed
using the DEFINE/KEY command. This command assigns a string to
function key. This is the logging message for the DEFINE/KEY
command.
User Action: None
DEFKEYERR
Message: error in processing DEFINE/KEY command:
Severity: Warning
Explanation: There was an error in defining the given key in the
display system. The key may not be redefinable, either because
the display system will not allow it or because there are
protections that prevent it. The key definition may be invalid.
User Action: Correct the error in the key definition.
DEFTOOREC
Message: Command defined with too many levels of recursion.
Severity: Error
Explanation: Commands may only be defined to a specified depth of
recursion (now set at 100).
User Action: Redefine your command such that it uses less levels of
recursion.
DELKEY
Message: state_name key key_name has been deleted
Severity: Informational
Explanation: The undefining of functions keys has just been
performed using the DELETE/KEY command. This command deletes
the key definitions that were established by the DEFINE/KEY
command or, by default by the debugger.This is the logging
message for the DELETE/KEY command.
User Action: None
DELKEYERR
Message: error in processing DELETE/KEY command:
Severity: Warning
Explanation: There was an error in deleting the given key
definition from the display mechanism. The key may not be a
defined key. The key definition might also be protected against
deletions.
User Action: Correct the error in the command or correct the
protections of the key in the display mechanism being used.
DELTIMTOO
Message: delta time too large
Severity: Error
Explanation: The debugger encountered an error when attempting to
convert the string form of the delta time to binary.
User Action: Enter the delta time specifying a smaller value.
DESCNOTSET
Message: descriptor not set up yet
Severity: Warning
Explanation: A descriptor used in an expression in the command is
not yet fully initialized. Some of the fields are not valid,
which means that the Debugger cannot completely evaluate the
expression.
User Action: Examine the descriptor that caused the problem and
determine which fields are not correct. Fill in these fields
with the correct values.
DISABLEAST
Message: ASTs were enabled, are now disabled
Severity: Informational
Explanation: Delivery of asynchronous system traps (ASTs) has been
turned off in your program by a DISABLE AST command.
User Action: None
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
Explanation: You specified a display which is removed from the
screen.
User Action: Either specify a display which is not removed from the
screen, or place the specified display onto the screen and
attempt the operation again.
DISPEXISTS
Message: display_name display already exists; cannot be set until
canceled
Severity: Error
Explanation: You attempted to create a display which already
exists, either by explicitly creating the display or by trying
to save the contents of a display into currently existing
display.
User Action: Specify a display which does not exist.
DISPRLENSIZ
Message: length of display_name display cannot exceed maximum size
increase /SIZE or specify fewer lines
Severity: Error
Explanation: You attempted to resize the display so that the number
of visible lines in the display is larger than the number of
lines which are saved for the display. The debugger has set the
number of visible lines of the display to the SIZE value of the
display.
User Action: Either decrease the number of visible lines in the
display, or increase the number of lines which are saved for
this display by the use of the SIZE value.
DIVBYZERO
Message: attempted to divide by zero
Severity: Error
Explanation: During the evaluation of an expression, the debugger
noticed an attempt to divide by zero.
User Action: Correct the expression so that it does not divide by
zero.
DSTERRG
Message: error in DST (compiler error). GOTO DST has been ignored
Severity: Informational
Explanation: This represents an internal compiler, linker or
debugger error. If this can be reproduced please submit an
Software Performance Report (SPR).
User Action: If this can be reproduced please submit an Software
Performance Report (SPR).
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.
DUPLVQUAL
Message: Duplicate or conflicting vector qualifier specified at
'command_line'
Severity: Error
Explanation: The qualifier indicated in the shown command line
fragment has already been specified, or is conflicting with an
earlier specified qualifier.
User Action: Delete the qualifier in error.
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
Explanation: The debugger is automatically setting to the image
containing the current PC. This is only an informational
message.
User Action: None
DYNMODSET
Message: setting module path_name
Severity: Informational
Explanation: The debugger is automatically setting to the module
containing the current PC. This is only an informational
message.
User Action: None
EDITDISVER
Message: the original version is file_specification
Severity: Informational
Explanation: The original file has been revised since the start of
the debug session. This message indicates that source lines may
not correspond to the ones used to compile this module
User Action: Use SET SOURCE command to point to the original source
file if possible and re-attempt operation.
EDITERROR
Message: error while trying to EDIT
Severity: Informational
Explanation: An error occurred because of specifying a bad command
line or because of choosing an editor which is not installed on
this system.
User Action: Check command line syntax and re-enter, or select an
editor which is installed on the system. For further
information on the installed editors contact your system
manager.
EDITFILE
Message: editing file file_specification
Severity: Informational
Explanation: The debugger is currently setup to edit the file as
specified in the message. This is only an informational
message.
User Action: None
EDITNOFILE
Message: no source file to use for editing
Severity: Informational
Explanation: This messages indicates that the debugger could not
find the specified source file to use for editing.
User Action: Use SET SOURCE command to point to the original source
file if possible and reattempt operation.
EDITREVVER
Message: editing a revised version of the original source file
Severity: Informational
Explanation: The original source file has been revised since the
start of the debug session. This message indicates that future
source line may not correspond to the ones used to compile this
module.
User Action: Use SET SOURCE command to point to the original source
file if possible and reattempt operation.
ENABLEAST
Message: ASTs were disabled, are now enabled
Severity: Informational
Explanation: Delivery of asynchronous system traps (ASTs) has been
turned off in your program by a DISABLE AST command.
User Action: None
ENTRYMASK
Message: entry mask has non-zero value in bits 12:13
Severity: Informational
Explanation: This is an internal status signal, it should never be
seen by the user. If this message does occur please submit a
Software Performance Report (SPR).
User Action: Submit a Software Performance Report (SPR).
ENUMRANGE
Message: enumeration value out of range
Severity: Informational
Explanation: An error in your program indicates that the value of
this enumeration is out of range.
User Action: Examine this field in numeric format to determine its
value. Determine the error in your code and make the
appropriate corrections.
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
Explanation: The debugger has encountered an error during decoding
an instruction at the current PC
User Action: The address may be an entry mask, examine the
instruction 2 bytes beyond the specified address.
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).
ERRTARGOP
Message: unable to perform operation for current target system
Severity: Error
Explanation: This is an internal debugger error.
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.
ERRUSREVNT
Message: error in user-specified event
Severity: Error
Explanation: When attempting to process the specified event, the
debugger called the Run Time Library, which returned an error
status. The error status returned by the Run Time Library
follows this message.
User Action: Correct the problem based on the associated message
which follows the debugger error message.
EXABEYREG
Message: Attempt to examine beyond the end of a register detected.
Severity: Error
Explanation: A ranged examine command was specified that attempted
to examine beyond the end of a bounded register.
User Action: Respecify the command so that it does not go past the
end of the register.
EXARANGE
Message: invalid range of addresses
Severity: Error
Explanation: The first address of a range to examine must be less
than the second address in this range.
User Action: Enter the address range specifying the addresses in
increasing order.
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.
User Action: Submit an SPR. This message is handled internally,
and should never be signaled to the user.
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
Explanation: The parameter specified on the EXITLOOP command is
greater than the number of loops nested at this time. It is
also possible that you have specified an EXITLOOP command when
you are not inside of a loop.
User Action: Reduce the parameter on the EXITLOOP command to no
more than the number of loops nested at the time the EXITLOOP
command is to be executed. If there are no loops currently
being executed, then the EXITLOOP command is redundant.
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.
FAILFINDIMG
Message: the debugger could not find the DECwindows image to be
initialized.
Severity: Fatal
Explanation: The debugger could not find the DECwindows image that
it was trying to initialize.
User Action: Try the debugger again, if the same results exist
submit a Software Performance Report (SPR).
FAILHEIRKY
Message: the debugger could not open the user interface definition
file, SYS$LIBRARY:DEBUGUIL.UID.
Severity: Fatal
Explanation: The debugger could not find one of the necessary file
to support the DECWindows interface, preventing the debugger
from continuing this session.
User Action: Check for the exsistance and accessability of
SYS$LIBRARY:DEBUGUIL.UID. For further assistance and
information on this probelm check with your system manager.
FAILXTINIT
Message: the debugger detected an error when trying to connect to
the DECWindow software.
Severity: Fatal
Explanation: The debugger failed to establish a connection to the X
server preventing the debugger from continuing this session.
User Action: Try the debugger again, if the same results exist
submit a Software Performance Report (SPR).
FATALSTATUS
Message: a fatal condition was detected by the debugger.
Severity: Fatal
Explanation: The debugger got an unexpected status from the system
service or RTL routine routine-name which prevents this DEBUG
session from continuing.
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.
FILEUNAL
Message: file not available
Severity: Warning
Explanation: The source file for the given program cannot be read.
User Action: Change the protections on the source file, or use SET
SOURCE to tell the Debugger where the source file really exists.
FLTOVF
Message: floating overflow at or near opcode_name
Severity: Error
Explanation: The value being deposited does not fit into the
specified address.
User Action: Specify either a smaller value or a different target
address.
HEIGHTDIFF
Message: desired height of specified_height is not allowed, height
is set to actual_height
Severity: Informational
Explanation: The device specified by DBG$OUTPUT had a screen height
that wasn't in the range of 18-100.
User Action: Use SHOW TERMINAL command and verify that the terminal
height is correct, it is in the range 18-100, and is pointing to
a valid terminal type.
IDENTLONG
Message: identifier too long, please shorten
Severity: Error
Explanation: Identifiers in address expressions must be shorter
than 256 characters.
User Action: Enter a shorter identifier.
IFIXUND
Message: precision lost during fixed point operation
Severity: Informational
Explanation: While doing operations on fixed point data items, the
debugger recognized that some precision was lost.
User Action: You should understand that the result of the operation
is imprecise and may not be exactly what you expect.
IFLTUND
Message: floating underflow at or near opcode_name
Severity: Informational
Explanation: While performing the arithmetic operation, a
floating-point value became less than the smallest representable
value for that data type.
User Action: You should understand that the result of the operation
is imprecise and may not be exactly what you expect.
IINTOVF
Message: integer overflow at or near opcode_name
Severity: Informational
Explanation: While performing the arithmetic operation, a
floating-point value exceeded the largest representable value
for that data type.
User Action: You should understand that the result of the operation
is imprecise and may not be exactly what you expect.
ILLADDCON
Message: illegal constant constant_name in address expression
Severity: Warning
Explanation: The constant in the message evaluates to a non-integer
type. Only integer types can be used in an address expression.
User Action: Change the constant to the appropriate integer value.
ILLASTER
Message: subscript range ('*') not permitted here (must be at
lowest level of data structure)
Severity: Warning
Explanation: The debugger does not allow an asterisk as a range in
an EXAMINE except as the last index in the array. That is, the
memory to examine must be a contiguous region. Unconnected
slices of arrays are not allowed.
User Action: Remove the asterisk from the expression to examine.
Placing the corrected EXAMINE inside a Debugger FOR loop command
could provide the functionality needed to do the command as
originally desired.
ILLDEFNAM
Message: illegal name for DEFINE: defined_name Severity: Warning Explanation: A defined name must be non-null. User Action: Enter a non-null name to DEFINE.
ILLENUMVAL
Message: enumeration value out of legal range
Severity: Warning
Explanation: The predecessor (or successor) function has been used
on the first (or last) component of the enumeration. The result
would not be a valid value of the enumeration.
User Action: Do not use the predecessor (or successor) function on
the first (or last) component of the enumeration.
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
Explanation: The file variable references a file descriptor that
cannot be read, is incomplete, or points to a file that is not
open.
User Action: Correct the file descriptor.
ILLFLOAT
Message: float_value is an illegal floating point value
Severity: Warning
Explanation: The Debugger attempted to parse the given floating
point number and encountered an illegal character.
User Action: Correct the floating point number.
ILLLENGTH
Message: illegal length field length_value in structure reference
Severity: Warning
Explanation: A negative value was given for the length of a field
in a structure reference.
User Action: Change the field length to a non-negative value.
ILLPACSIZ
Message: illegal packed size size_value; must be 0..31
Severity: Warning
Explanation: The specified size on a /PACKED qualifier is illegal.
It must be a value between 0 and 31.
User Action: Specify a legal value with the /PACKED qualifier.
ILLPATH1
Message: illegal use of %SOURCE_SCOPE (must not be combined with
invocation numbers)
Warning %SOURCE_SCOPE has been used in the same path with other
scope numbers.
User Action: Remove all but one of the references to the desired
scope.
ILLPATH2
Message: illegal use of %SOURCE_SCOPE (must appear at the start of
the pathname)
Warning %SOURCE_SCOPE has been used in a path name in an illegal
position. The %SOURCE_SCOPE lexical must be the first item in
the path list.
User Action: Move the %SOURCE_SCOPE lexical to the first position
in the pathname.
ILLPATHELEM
Message: illegal pathname element at path_name
Severity: Error
Explanation: Invocation numbers must consist only of numeric
digits, and cannot occur with other pathnames.
User Action: Specify a numeric invocation number.
ILLPOSFLD
Message: position field value position_value is too large
Severity: Warning
Explanation: The value of the position specifier in the BLISS field
reference is an incredibly large number, larger than the
Debugger can handle. The value may be negative, which is also
illegal.
User Action: Change the value of the position specifier in the
BLISS field reference to a smaller (or positive) value.
ILLQUALIF
Message: illegal or unsupported qualifier on SPAWN command
Severity: Warning
Explanation: One of the qualifiers to the SPAWN command is
incorrect.
User Action: Remove the incorrect qualifier to the SPAWN command.
ILLRANGE
Message: subscript range not permitted here (must be at lowest
level of data structure)
Severity: Warning
Explanation: The Debugger does not allow a range in an EXAMINE
except as the last index in the array. That is, the memory to
examine must be a contiguous region. Unconnected slices of
arrays are not allowed.
User Action: Remove the range from the expression to examine.
Placing the corrected EXAMINE inside a Debugger FOR loop command
could provide the functionality needed to do the command as
originally desired.
ILLSETCON
Message: illegal set constant in expression
Severity: Warning
Explanation: One of the constants specified in the given set
expression has a type that is inconsistent with the set type.
User Action: Change the erroneous set constant value to a constant
with a type that agrees with the set type.
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
Explanation: The size value for a BLISS field reference contains an
illegal value.
User Action: Change the size value of the field reference to an
integer between 0 and 32, inclusive.
ILLSUBLEN
Message: substring length larger than 32K not supported
Severity: Warning
Explanation: The calculated length of a substring in the expression
is larger than can be handled by the Debugger.
User Action: Do not use a substring with a length greater than 32K
in an expression to be evaluated by the Debugger.
ILLSUBSTR
Message: can only apply substring operation to string data types
Severity: Warning
Explanation: The Debugger has found a substring operation, but the
data type of the operand is not a string type.
User Action: Correct the data type of the string operand in the
substring expression.
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.
ILLVQUAL
Message: Illegal vector instruction qualifier specified at
'command_line'
Severity: Error
Explanation: A vector instruction qualifier that is illegal for
this vector instruction was specified during a
DEPOSIT/INSTRUCTION command.
User Action: Do not specify that illegal qualifier on that
instruction.
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
Explanation: When parsing an instruction, the debugger found an
incomplete operand.
User Action: Specify complete operands when entering machine
instructions.
INCOMPPTR
Message: pointers of different size, cannot perform subtraction
Severity: Warning
Explanation: The two pointers point to objects with incompatible
types. A computation involving these pointers does not have a
meaningful result.
User Action: Do not attempt to mix pointers of different types in
arithmetic computations.
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
Explanation: When parsing an instruction, the debugger found an
operand whose base register and index registers were the same.
The VAX instruction architecture forbids this construction.
User Action: Specify different registers for the base and index
registers.
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
Explanation: There was an error from the system while trying to
read the input line.
User Action: Re-enter the command line. Check to see that the
Debugger has read access to the input source. If the problem
persists, submit a Software Performance Report (SPR).
INSVIRMEM
Message: insufficient virtual memory for the debugger memory pool
Severity: Informational
Explanation: An attempt to allocate additional memory for working
storage failed.
User Action: Cancel set modules to free space in memory.
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
Explanation: The value being deposited does not fit into the
specified address.
User Action: Specify either a smaller value or a different target
address.
INTVECERR
Message: internal debugger coding error in using vector
instruction(s)
Severity: Error
Explanation: An internal debugger error has been encountered when
attempting to execute a vector instruction. Messages will
follow this text which will more fully explain the error.
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.
INUMTRUNC
Message: number truncated at or near opcode_name
Severity: Informational
Explanation: On some conversions packed numbers need to be
truncated to fit into their destination. Truncation is done
from the least significant digit to the most significant digit.
User Action: You should understand that the result of the operation
is imprecise and may not be exactly what you expect.
INVARGLIS
Message: invalid argument list for 'the debugger_command_segment'
Severity: Warning
Explanation: There is an error with the argument list. The
Debugger may be expecting an argument list when none was
supplied. The Debugger may have found an argument list where
one was not expected. The Debugger may have found an argument
list that was too long or too short. Finally, the Debugger may
have found an inconsistency in the argument list.
User Action: Correct the command. Supply the correct argument list
if one was missing or in error. Delete the inappropriate
argument list, if one was present.
INVARRDIM
Message: array dimension is out of range
Severity: Warning
Explanation: The array dimension is out of the range of the
declared size and shape of the array. Either the dimension
requested is less than zero, or it is greater than the number of
dimensions the array was declared with.
User Action: Correct the invalid array dimension.
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.
INVCHAR
Message: invalid character
Severity: Error
Explanation: When parsing the command, an invalid character was
detected.
User Action: Enter the command specifying only valid characters.
INVCHRCON
Message: invalid character constant in expression
Severity: Error
Explanation: When evaluating a language expression, the debugger
expected to find a closing single quote mark, or the end of the
command. Some other character was found, which resulted in an
illegal language expression.
User Action: Enter a valid language expression.
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
Explanation: A numeric value other than '0' and '1' was found in a
binary number.
User Action: Enter binary numbers specifying only digits '0' and
'1'.
INVDIGDEC
Message: invalid digit in decimal number: number_value
Severity: Error
Explanation: A numeric value other than in the range '0' through
'9' was found in a decimal number.
User Action: Enter decimal numbers specifying only digits '0'
through '9'.
INVDIGHEX
Message: invalid digit in hexadecimal number: number_value
Severity: Error
Explanation: A numeric value other than in the range '0' through
'9' or an alphabetic value other than in the range 'A' through
'F' was found in a hexadecimal number. Hexadecimal numbers must
also start with a numeric character, for example '0F'.
User Action: Enter hexadecimal numbers specifying only digits '0'
through '9' and alphabetic values 'A' through 'F'.
INVDIGOCT
Message: invalid digit in octal number: number_value
Severity: Error
Explanation: A numeric value other than in the range '0' through
'7' was found in a decimal number.
User Action: Enter decimal numbers specifying only digits '0'
through '7'.
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
Explanation: The debugger found that the pointer in the image
header to the Debug Module Table (DMT) was invalid. The
debugger will continue from this error trying to initialize
based on the Debug Symbol Table (DST).
User Action: Check that the image file hasn't been modified or
corrupted in some way. If not, submit a Software Performance
Report (SPR).
INVDSPSIZ
Message: invalid display size: display_size
Severity: Error
Explanation: The SIZE value for a display must be between 1 and
1000.
User Action: Specify the SIZE value between 1 and 1000.
INVDSTREC
Message: invalid DST record
Severity: Error
Explanation: The debugger has detected an error in the Debug Symbol
Table of your program. This indicates an internal error in
either the debugger or the compiler of this module.
User Action: Please submit a Software Performance Report.
INVEXPR
Message: invalid expression for operand number operand_number
Severity: Error
Explanation: The specified operand was not correct for this
instruction.
User Action: Please check the documentation for the correct
operands for this instruction, and re-enter the instruction with
the correct operands.
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
Explanation: The Debugger could not complete the parse of the BLISS
field reference specification. Either the closing angle bracket
terminator was found too soon, or it was not found when it was
expected.
User Action: Correct the field reference.
INVGSTREC
Message: invalid GST record
Severity: Error
Explanation: The debugger has detected an error in the Global
Symbol Table of your program. This indicates an internal error
in either the debugger or the compiler of this module.
User Action: Please submit a Software Performance Report.
INVGSTTYP
Message: invalid GST record; GST is partially built
Severity: Informational
Explanation: The debugger found an invalid Global Symbol Table
(GST) record in the image. The debugger will discontinue
initializing the GST at this point. The debugger will continue
from this error, however global symbol information may not be
complete.
User Action: Check that the image file hasn't been modified or
corrupted in some way. If not, submit a Software Performance
Report (SPR).
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.
INVNUMBER
Message: invalid numeric string 'number_value'
Severity: Error
Explanation: A numeric value which was not in the specified radix
was found in the language expression.
User Action: Enter numbers specifying only valid digits for that
radix.
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
Explanation: The debugger encountered an error when attempting to
convert the specified value. This indicates that the string
value did not contain a valid number.
User Action: Ensure that the string value contains only valid
digits.
INVOPADDR
Message: invalid operator 'operator_symbol' in address expression Severity: Error Explanation: Address expressions cannot contain operators. User Action: Enter the address expression without operators.
INVOPSYM
Message: invalid operator symbol 'operator_symbol' in expression
Severity: Error
Explanation: Identifiers in address expressions must be shorter
than 256 characters.
User Action: Enter a shorter identifier.
INVPAGE
Message: invalid screen height, value must be between
minimum_height and maximum_height
Severity: Error
Explanation: The height of the terminal which the debugger uses to
place it's windows must be between the values specified.
User Action: Specify the page size of the screen to be between the
values specified.
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 Explanation: The priority of an Ada task must be between 0 and 15. User Action: Specify a valid priority for the task.
INVRANSPEC
Message: invalid range specification in array subscript
Severity: Warning
Explanation: A range specification in an array reference is
illegal. The Debugger may have found a range where none is
allowed. An asterisk may have been used as a range where it is
not allowed. The array subscripts may have more than one set of
ranges, which is not allowed. The range may be invalid, with
bounds greater than the declared bounds of the array. Finally,
the lower bound of the range may be greater than the upper bound
of the array.
User Action: Correct the range specification in the array
subscript.
INVSELDIS
Message: invalid selection of display_name display; wrong display
kind
Severity: Error
Explanation: Some attributes can only be placed on certain types of
displays. For example, the SOURCE attribute can only be placed
on source displays. The attribute you specified cannot be
placed on the display you specified.
User Action: See the debugger documentation of the SELECT command
for details on which attributes can be placed on which displays.
Specify attributes which are compatible with the display kind.
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
Explanation: The value specified for the time slice was out of
range of the Ada type DURATION.
User Action: See the Ada documentation for the range of the
DURATION type. Specify time slice values which are in range of
type DURATION.
INVWIDTH
Message: invalid screen width, value must be between minimum_width
and maximum_width
Severity: Error
Explanation: The width of the terminal which the debugger uses to
place its windows must be between the values specified.
User Action: Specify the width of the screen to be between the
values specified.
INVWINPAR
Message: invalid window parameter: number_value
Severity: Error
Explanation: The value specified was out of range of the screen on
which the window will be placed. If the debugger is placing its
windows on a terminal screen, the beginning row and column
numbers must be between 1 and the height and width of the
screen, and the beginning value plus the height or width of the
window must not exceed the height or width of the terminal
screen. If the debugger is running with the DECwindows
interface, the beginning row and column numbers must be greater
than 0.
User Action: Specify valid parameters for the window row and column
values, and for the height and width of the window.
IRFAOVF
Message: record file address overflow at or near opcode_name
Severity: Informational
Explanation: The conversion of the ASCII string to a record file
address caused an overflow. The conversion was performed
however.
User Action: Check the value to make sure the conversion performed
as expected.
ISTRTRU
Message: string truncated at or near opcode_name
Severity: Informational
Explanation: The string did not fit into the specified destination
resulting in lost trailing characters. The conversion was
performed however.
User Action: Check the value to make sure the conversion performed
as expected.
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)
IVALNOFIT
Message: value does not fit into target location at or near
opcode_name
Severity: Informational
Explanation: The value can not be represented in the target
location and may be truncated. The bit field is not large
enough to hold the value.
User Action: Check the value in the target location.
IVALOUTBNDS
Message: value assigned is out of bounds at or near opcode_name
Severity: Informational
Explanation: The value is out of the bounds defined for the data.
The operation was performed however.
User Action: Check the results of the operation to make sure they
are as you expected.
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
Explanation: This is either 'No line information available', or 'No
line <line_number, !UL>, previous line is <line_number, !UL>,
next line is <line_number, !UL>'
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
Explanation: The length of a string or the range of one array bound
is greater than 2**16. The string or array is too large for the
Debugger.
User Action: Do not use strings of this length with the Debugger.
LOOPINCR
Message: loop increment cannot be zero
Severity: Warning
Explanation: The loop increment specified on the FOR command is
zero.
User Action: Change the loop increment to be a non-zero value.
LOOPVAR
Message: loop var loop_variable has been redefined; exiting for
loop
Severity: Informational
Explanation: Since the loop variable has been redefined, the
debugger will exit the loop. No further comparison is possible.
User Action: None.
LOWBNDOPT
Message: lower bound of subrange was optimized away
Severity: Informational
Explanation: The lower bound of the subrange was optimized away.
The largest negative number on the machine is being used as the
lower bound.
User Action: You may wish to recompile the program without
optimizations.
MASKMISMATCH
Message: mask/target subscripts do not match, displaying mask
Severity: Informational
Explanation: The subscript values for the supplied mask value are
different then the subscript values for the target value. To
minimize confusion, Debug is showing the mask values as well as
the target values.
User Action: None, this message is informational.
MASKNOTUSED
Message: mask operations not allowed on record and SCAN tree
objects
Severity: Informational
Explanation: A mask operation (as specified by the /TMASK or /FMASK
qualifiers) cannot be performed on a record or SCAN tree object.
User Action: Specify an array or address range to perform the mask
operation on.
MASKNOTVMR
Message: mask used is not %VMR, displaying specified mask
Severity: Informational
Explanation: The supplied mask is not %VMR. To minimize confusion,
Debug is showing the mask values as well as the target values.
User Action: None, this message is informational.
MASKPARNREQ
Message: parenthesis required in 'EXAMINE/xMASK=(x)'
Severity: Warning
Explanation: Parentheses are required around the mask expression
specified with the /TMASK or /FMASK qualifiers on the Examine
command.
User Action: Include parantheses when specifying a mask expression.
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.
MISCLOSUB
Message: missing closing subscript parenthesis Severity: Warning Explanation: This is a syntax error in a Debug command User Action: Reinvoke the command with the proper syntax
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
Explanation: An operand was encountered in a language expression
when an operator was expected. For example, 'EVALUATE A B'
instead of 'EVALUATE A + B'.
User Action: Specify valid operators between operands.
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
Explanation: An operand was encountered in a language expression
when an operator was expected, or an operand did not follow an
operator. For example, 'EVALUATE A B' or 'EVALUATE A + '
instead of 'EVALUATE A + B'.
User Action: Specify valid operators between operands.
MODUSCOPE
Message: a module name was expected; path_name not valid Severity: Warning Explanation: This is a syntax error in a Debug command User Action: Reinvoke the command with the proper syntax
MOVED_1
Message: this message is available for reuse Severity: Informational Explanation: This message has been moved, and should not be seen. User Action: Please submit a Software Performance Report.
MOVED_2
Message: this message is available for reuse Severity: Informational Explanation: This message has been moved, and should not be seen. User Action: Please submit a Software Performance Report.
MOVED_3
Message: this message is available for reuse Severity: Informational Explanation: This message has been moved, and should not be seen. User Action: Please submit a Software Performance Report.
MOVED_4
Message: this message is available for reuse Severity: Warning Explanation: This message has been moved, and should not be seen. User Action: Please submit a Software Performance Report.
MOVED_5
Message: this message is available for reuse Severity: Fatal Explanation: This message has been moved, and should not be seen. User Action: Please submit a Software Performance Report.
MOVED_6
Message: this message is available for reuse Severity: Fatal Explanation: This message has been moved, and should not be seen. User Action: Please submit a Software Performance Report.
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
Explanation: The %NAME construct requires either a quoted string or
a name to be supplied.
User Action: Specify a valid name after the %NAME construct.
NAMTOOLONG
Message: name is too long: 'symbol_name'
Severity: Error
Explanation: Display and window names must be less than 80
characters in length.
User Action: Shorten the name to be less than 80 characters long.
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
Explanation: Parenthesis are required in THEN, ELSE, and DO clauses
to group the containing debugger commands.
User Action: Correct the THEN, ELSE, or DO clause by including
parenthesis.
NOACCESSR
Message: no read access to address address_value
Severity: Error
Explanation: The address you specified cannot be read by the
debugger. Therefore the operation you requested cannot be
performed.
User Action: Verify that the address being read is correct. One
way to do this is to use EVALUATE to find the address of the
specified symbol, or to EXAMINE the descriptor to see if it
specifies a valid address.
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
Explanation: The user has requested the address of a register but
registers do not have addresses
User Action: Examine the register directly
NOALTERSP
Message: deposit into register 14 (stack pointer) not allowed
Severity: Informational
Explanation: You can not deposit into the stack pointer register
because the debugger is on the stack and it would corrupt the
debugger or program stack frames.
User Action: None.
NOATTACH
Message: attach command failed
Severity: Error
Explanation: The ATTACH command could be not performed because of
an error which was returned by the system service called by the
debugger. The error status returned by the system service
routine follows this message.
User Action: Correct the problem based on the associated message
which follows the debugger error message.
NOBREAGGR
Message: breakpoints or tracepoints on registers, records or arrays
are not allowed
Severity: Error
Explanation: Only watchpoints are allowed on registers, records or
arrays.
User Action: Either change the address of the breakpoint or
tracepoint, or specify a watchpoint on the address.
NOBREAKAT
Message: cannot set breakpoint or tracepoint at address
address_value
Severity: Warning
Explanation: The user has requested that a breakpoint be set at an
address that is either non-writable, in Debug, or invalid in
some other way.
User Action: Correct the address and reissue the command
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
Explanation: The call stack cannot be displayed because your
program has run to completion, and there are no call frames on
the stack.
User Action: None.
NOCANMAIN
Message: cannot cancel main image
Severity: Warning
Explanation: The user has requested that the main image symbols be
canceled. This is an invalid operation.
User Action: No action required - operation invalid.
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
Explanation: The user has tried to deposit into addresses occupied
by the Debugger. This is not allowed.
User Action: Correct the address and reissue the command.
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
Explanation: The expression could not be evaluated. The following
message indicates why.
User Action: See the following message.
NOEVENTFAC
Message: /EVENT qualifier not allowed: first type 'SET EVENT
facility' to specify an event facility
Severity: Error
Explanation: No event facility has been set up yet, therefore no
events which use an event facility can be set, canceled, or
displayed.
User Action: Set an event facility, and try the operation again.
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.
User Action: None. This message is informational.
NOEXHND
Message: no exit handlers are declared
Severity: Informational
Explanation: There are no user-mode exit handlers currently
declared.
User Action: None. This message is 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
Explanation: The debugger has used all memory available.
User Action: Memory must be made available before the debugger can
continue executing. SET modules could be canceled, or the
debugging session can be stopped and system management can
increase the virtual memory on your system.
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
Explanation: The user is trying to define or set a keypad
definition which can not be performed due to the current
operating mode.
User Action: Use a terminal that supports keypad operations.
NOKEYPAD
Message: unable to set up keypad definitions
Severity: Informational
Explanation: An error status was returned from the Screen
Management Facility that indicates that the debugger keypad
definitions are corrupted.
User Action: Try to set keypad mode again (SET MODE KEYPAD). If
this fails to correct the problem submit a Software Performance
Report (SPR).
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.
NOMAIN
Message: the debugger detected an error when trying to fetch the
main window from the Digital Resource Manager (DRM).
Severity: Fatal
Explanation: The debugger detected an error when trying to fetch
debuggers main window from the Digital Resource Manager (DRM).
This prevents the debugger from continuing this session.
User Action: Try the debugger again, if the same results exist
submit a Software Performance Report (SPR).
NOMARKCHNG
Message: [NO]MARK_CHANGE qualifier not applicable to display_name
display
Severity: Informational
Explanation: The /MARK_CHANGE and /NOMARK_CHANGE qualifiers can not
be applied to the indicated kind of display.
User Action: None.
NOMATCH
Message: no matches
Severity: Warning
Explanation: A SEARCH command was being used and no matches were
found
User Action: No action required
NOMORE
Message: wildcard request complete
Severity: Warning
Explanation: This is a debugger internal error code.
User Action: If the debugger reports this error please 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
Explanation: The debugger could not find the scope indicated by the
numbered scope in the scope list.
User Action: Set the module that contains that scope.
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
Explanation: A display was positioned over the indicated display
that is not allowed to be occluded. The indicated display was
popped to the front.
User Action: You may wish to move the display so it is not occluded
by the display named in the message.
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
Explanation: This display can not be deleted, removed, unselected,
or have it's kind changed.
User Action: None.
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
Explanation: This is an internal status signal, it should never be
seen by the user. If this message does occur please submit a
Software Performance Report (SPR).
User Action: Submit a Software Performance Report (SPR).
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
Explanation: The SAVE command is not allowed on a program I/O
display since the debugger does not know the contents of the
display.
User Action: None.
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
Explanation: The debugger output is being sent to a device that the
Screen Management Facility does can not write to. While the
debugger will continue to process commands, the screen mode
output will be lost.
User Action: Make sure the logical DBG$OUTPUT is pointed to a
device that the Screen Management Facility can write to.
NOSCRMODE
Message: screen mode is not supported on this terminal screen mode
is not set
Severity: Warning
Explanation: Screen mode is not allowed on the terminal type used
by the current session.
User Action: Use another terminal if screen mode is desired
NOSCROLL
Message: no scrolling display selected or missing display name
Severity: Error
Explanation: The user did not enter a display name with the
command, and the debugger attempted to use the display with the
SCROLL attribute. However, no display currently has the SCROLL
attribute.
User Action: Either reenter the command, specifying a display name,
or SELECT a display to have the SCROLL attribute and reenter the
command.
NOSCROLLDISP
Message: display_name display may not be scrolled Severity: Informational Explanation: This display can not be scrolled. User Action: None.
NOSETTERM
Message: the SET TERMINAL command is not supported on this terminal
Severity: Warning
Explanation: The SET TERMINAL command is not allowed on the
terminal being used for the current session
User Action: Use another type of terminal
NOSPAWN
Message: spawn command failed
Severity: Error
Explanation: The debugger failed to perform a SPAWN command or
SPAWN an editor. The error status returned from the SPAWN
command is appended to this error message.
User Action: If the SPAWN error is correctable, correct the problem
and reenter the command. If not, the SPAWN command is
unavailable.
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
Explanation: A STEP, GO, SET PROCESS/VISIBLE or CALL command was
used in a screen display command list. The debugger does not
allow the use of such commands in display command lists.
User Action: Re-specify the screen display command list without
using any of the disallowed commands.
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
Explanation: The specified display <display_name, !AC> does not
exist.
User Action: Re-enter the command, specifying an existing display.
NOSUCHELP
Message: no such help topic or invalid HELP command
Severity: Warning
Explanation: The user has requested help for a topic for which
there is no help or the syntax used to request the help was
invalid
User Action: Try another topic or just type HELP for a topic list
NOSUCHIMG
Message: image image_name not found Severity: Error Explanation: The specified image <image_name, !AC> does not exist. User Action: Re-enter the command, specifying an existing image.
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
Explanation: The user has requested that the current scope be set
to a scope that is invalid for the current module
User Action: Correct the scope specification and reissue the
command
NOSUCHTASK
Message: no such task exists or no task satisfies criteria
Severity: Error
Explanation: The user entered a task expression that does not
correspond to an existing task, or no existing task satisfies
the task expression.
User Action: Reenter the command with a task expression that
specifies an existing task.
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
Explanation: The specified, or defaulted window <window_name, !AC>
does not exist.
User Action: Reenter the command, specifying an existing window
name.
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
Explanation: The debugger could not find the symbol '<symbol_name,
!AC>' in its symbol table.
User Action: The symbol may have been entered incorrectly, in which
case the fix is to enter the symbol correctly. The other
possibility is that the module the symbol is defined in has not
been loaded into the debugger's symbol table; perform a SET
MODULE of the appropriate module.
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
Explanation: The entered command applies only to Ada programs ;
since this is not an Ada program, the command cannot be
executed.
User Action: No user action required.
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
Explanation: The debugger has started at the beginning of
LIB$INITIALIZE code.
User Action: If you want to get to the actual start of the main
program you should type GO at the debug prompt. The debugger
will allow the program to execute the LIB$INITIALIZE code and
then break at the start of the main program. If you'd like to
debug the LIB$INITIALIZE code you are positioned to do so at
this point.
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
Explanation: The symbol was not found in the defined symbol table.
User Action: Check your spelling or use SHOW DEFINE to see what
symbols have been defined.
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
Explanation: An incorrect nesting of loops exist in the command
stream currently being executed.
User Action: Correct the command stream
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
Explanation: The examined address does not denote the start of an
instruction.
User Action: Specify an address that does denote the start of an
instruction.
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
Explanation: The user has requested a record operation on a
variable which is not a record.
User Action: Correct the command and reissue it
NOTREE
Message: SCAN tree or subtree not found SCAN error message Severity: Warning
NOTRUNDW
Message: the debugger is uncertain about the DECWindow
configuration.
Severity: Fatal
Explanation: The debugger is uncertain about the systems DECWindow
configuration
User Action: Try the debugger again, if the same results exist
submit a Software Performance Report (SPR).
NOTTASKVAL
Message: expression does not specify a task value
Severity: Error
Explanation: The expression entered does not specify a task value.
The command entered requires a task value.
User Action: Reenter the command, correctly specifying a task
value.
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
Explanation: More than one instance of the specified symbol
'<symbol_name, !AC>' exists in the user program. Without
further information, the debugger cannot determine which symbol
to use.
User Action: Re-enter the command, uniquely specifying the symbol
to be used. The SHOW SYMBOL command can be used to find the
unique symbol names.
NOTUPDATE
Message: instruction screen display not updated
Severity: Informational
Explanation: The instruction screen display was not updated because
of the preceding error message.
User Action: See the preceding error message.
NOTYPEINFO
Message: symbol type information not available please SET the
module that describes this type
Severity: Warning
Explanation: The user has requested information about a symbol
which cannot be provided in the current context.
User Action: SET the module containing the information and reissue
the command
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 Explanation: No universal symbols were found in the image. User Action: None.
NOUSREVNT
Message: no user-specified events are allowed; none are declared
Severity: Error
Explanation: A reference was made to an event, when no such event
had been defined (language not SCAN).
User Action: Reenter the last command, without specifying any
events.
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.
NOVECT
Message: no vector support - command cannot be performed
Severity: Error
Explanation: An attempt was made to modify vector state on a system
which has neither hardware vector capabilities nor the VVIEF.
This includes the EXAMINE vector-register, DEPOSIT
vector-register, and SET VECTOR_MODE commands.
User Action: Do not attempt to modify vector state on a system
which does not have vector capabilities.
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
Explanation: The user has requested that a watchpoint be set on a
variant record. This operation is not currently supported
User Action: No user action required
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
Explanation: The components of a file specification entered in a
SET SOURCE command may not be wildcarded.
User Action: Reenter the command without wildcarding any file
specification components.
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.
NO_SYNC_FROM_EXC_BRE
Message: Synchronize can not be done from an exception break.
Severity: Error
Explanation: A synchronize command can not be done from an
exception break.
User Action: Do not perform a synchronization command when at an
exception break.
NPROMPT
Message: the debugger could not properly setup the state to accept
input.
Severity: Fatal
Explanation: The debugger it could not properly setup the state to
accept input. This prevents the debugger from continuing this
session.
User Action: Try the debugger again, if the same results exist
submit a Software Performance Report (SPR).
NULLPTR
Message: cannot dereference null pointer Severity: Warning
NUMCONLONG
Message: numeric constant too long, please shorten Severity: Error Explanation: A number entered in the command line is too long. User Action: Reenter the command, shortening the long number.
NUMTRUNC
Message: number truncated
Severity: Informational
Explanation: The number entered is greater than the largest signed
longword integer. The value has been truncated to the the
largest signed integer.
User Action: None.
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 Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_10
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_11
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_12
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_13
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_14
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_15
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_16
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_17
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_18
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_19
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_20
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_21
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_22
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_23
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_24
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_25
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_26
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_27
Message: this message is available for reuse Severity: Warning Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_28
Message: this message is available for reuse Severity: Warning Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_29
Message: this message is available for reuse Severity: Warning Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_3
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_30
Message: this message is available for reuse Severity: Error Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_31
Message: this message is available for re-use Severity: Error Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_4
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_5
Message: this message is available for re-use Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_6
Message: this message is available for re-use Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_7
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_8
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
OBSOLETE_9
Message: this message is available for reuse Severity: Informational Explanation: This message is obsolete, and should never be seen. User Action: Please submit a Software Performance Report.
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
Explanation: The debugger encountered a problem when performing the
operation '<operator_symbol, !AC>' on the specified operands.
This may be a data type conversion error.
User Action: Reenter the command, specifying compatible operands.
OPSYNTAX
Message: instruction operand syntax error for operand number
operand_number
Severity: Error
Explanation: The debugger encountered an error in one of the
operands of a VAX instruction.
User Action: If the instruction was entered by the user, reenter
the instruction, correcting the operand error. If not, then
there may be an error in the user program instructions.
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 Explanation: A size parameter is required User Action: Supply a size parameter and reissue the command
PARENREQ
Message: parenthesis required in 'debugger_command_segment
/TYPE=(X)'
Severity: Warning
Explanation: The debugger_command_segment is either SET TYPE,
DEPOSIT, or EXAMINE.
User Action: Place parentheses around the type of expression
specified
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
Explanation: This is an internal status signal, it should never be
seen by the user. If this message does occur please submit a
Software Performance Report (SPR).
User Action: Submit a Software Performance Report (SPR).
PATHNOTACP
Message: pathname qualifiers (path_name) not allowed in SHOW SYMBOL
data name
Severity: Warning
Explanation: The user has issued a command with invalid syntax
User Action: No user action required
PATHTLONG
Message: too many qualifiers on name
Severity: Error
Explanation: There are too many pathname elements in the entered
pathname for the debugger to handle.
User Action: Shorten the pathname entered, either by abbreviating
the pathname, defining a symbol for the pathname, or setting a
search scope so that you can use a shorter pathname.
PATHTOOLONG
Message: pathname too long at path_name
Severity: Error
Explanation: The entered pathname is too long for the debugger to
handle.
User Action: Shorten the pathname entered, either by abbreviating
the pathname, defining a symbol for the pathname, or setting a
search scope so that you can use a shorter pathname.
PCNOTALL
Message: PC not allowed in context for operand number
operand_number
Severity: Error
Explanation: Using the PC as an operand in the entered instruction
is not allowed.
User Action: If the instruction was entered by the user, reenter
the instruction, without using the PC in the operand. If not,
then there may be an error in the user program instructions.
PLICVTERR
Message: PLI conversion error at or near opcode_name
Severity: Error
Explanation: An error occurred in the PL/I RTL performing a data
type conversion, for the object <opcode_name, !AC>.
User Action: Reenter the command, specifying a legitimate object
for the operation desired.
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
Explanation: This display's width can not be changed. It must be
the full width of the screen.
User Action: None.
PROMPTOCCL
Message: display_name display now occludes some or all of
display_name display's text
Severity: Informational
Explanation: This display now occludes some or all of the specified
display.
User Action: None.
PROMPTRLEN
Message: display_name display length not changed, must be at least
2 lines long
Severity: Informational
Explanation: This display's length can not be changed to less than
the minimum value specified.
User Action: None.
PROVRFLOW
Message: too many levels of @ procedure nesting
Severity: Warning
Explanation: The user has nested indirect command processing too
deeply
User Action: Try to eliminate some of the levels of indirection or
look for a recursive invocation
PSHINARYNYI
Message: PUSH_INNER_ARRAY DST stack machine operator for array
'symbol_name' is not yet implemented
Severity: Error
Explanation: The named array is unconstrained, and its subscript
bounds 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. Examine the nearest object code which
references the variable and simulate the access algorithm by
hand.
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
Explanation: A quoted string was entered in a debugger command that
was too large for the debugger to handle.
User Action: Reenter the command, shortening the string entered.
READERR
Message: debugger input read error, force to exit
Severity: Warning
Explanation: Too many read errors have occurred from the input
command stream. The Debugger will exit after printing this
message
User Action: Check the physical integrity of the device containing
the input stream.
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
Explanation: A register is required to establish context for the
specified operand.
User Action: If the instruction was entered by the user, reenter
the instruction, using a register with the specified operand.
If not, then there may be an error in the user program
instructions.
RENAMENOT
Message: Unable to look up 'symbol_name', object being renamed not
found in symbol table
Severity: Warning
Explanation: The user has requested an operation on an object that
was not found in the symbol table.
User Action: Correct and reissue the command
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 Explanation: Control has returned to the parent process. User Action: None.
RNDFCTROUT
Message: round factor out of range Severity: Warning Explanation: The DIBOL scale factor is out of the acceptable range
ROPRANDF
Message: reserved operand fault at or near opcode_name
Severity: Error
Explanation: The debugger encountered an opcode that is reserved to
Digital.
User Action: If the instruction was entered by the user, reenter
the instruction, without using an opcode reserved to Digital.
If not, then there may be an error in the user program
instructions.
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
Explanation: Indicates the scale factor applied in computing the
address.
User Action: None.
SCALESUB
Message: pointer subtraction: scale factor of scale_factor applied
to right/left
Severity: Informational
Explanation: Indicates the scale factor applied in computing the
address.
User Action: None.
SCRNOACCESSR
Message: no read access to virtual address address_value for
display in display_name
Severity: Error
SCRNOSRCLIN
Message: no source line for address address_value for display in
display_name
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.
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
Explanation: The current screen dimensions are too large for
debugger screen mode.
User Action: Change the screen dimensions to be small enough for
debugger screen mode.
SCRTOSMALL
Message: screen too small for Screen Mode width must be at least
minimum_width, height must be at least minimum_height
Severity: Error
Explanation: The current screen dimensions are too small for
debugger screen mode.
User Action: Change the screen dimensions to be large enough for
debugger screen mode.
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 Explanation: The specified keypad state has been set. User Action: None.
SETKEYERR
Message: error in processing SET KEY command: Severity: Warning Explanation: An error has occurred during a SET KEY command
SFCNTNEG
Message: shift count is negative Severity: Warning
SHOKEYERR
Message: error in processing SHOW KEY command:
Severity: Warning
Explanation: An error has occurred during the processing of a SHOW
KEY command
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
Explanation: The user has requested the use of an operator that has
side effects. This operation is not currently supported by the
Debugger.
User Action: Issue the operation and the side effects as individual
commands
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 Explanation: SIZE is not supported on the item requested User Action: No user action required
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
Explanation: There were no source lines available for the current
PC, so the debugger displayed the source lines for the calling
routine. The source lines may be unavailable because the code
associated with the current PC is not available (e.g. is in a
Digital-supplied shareable image) or was compiled or linked
/NODEBUG.
User Action: If source modules is available, then recompile and
relink the application using the /DEBUG qualifier.
SPAWNED
Message: subprocess spawned
Severity: Informational
Explanation: This message is output by the DEBUG command SPAWN when
it spawns a subprocess.
User Action: None. This message is 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
Explanation: This error code is used by the debugger to indicate
that a system service has been intercepted.
User Action: Submit an SPR. This message is handled internally,
and should never be signaled to the user.
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
Explanation: While processing the command, the debugger truncated a
text string.
User Action: The debugger failed to allocate a large enough buffer
to store the command output. Unless the reason for this is
apparent, submit a Software Performance Report (SPR).
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
Explanation: The string that was specified by the user is too large
for the debugger to handle
User Action: Try to redo the operation with a shorter string
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
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
Explanation: The subscript specification is not within the bounds
of the array.
User Action: Reenter the command, specifying a subscript
specification that is within the bounds defined for the array.
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.
SUPERDEBUG
Message: SUPERDEBUG not available
Severity: Error
Explanation: This is a Debug internal message. The user should
never see this message.
User Action: If you see this message, please submit an SPR
describing the circumstances.
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
Explanation: You attempted to use the SHOW SYMBOL command to show a
symbol that is not defined.
User Action: Verify that the symbol is defined and reenter the
command.
SYNCDONE
Message: vector synchronization complete
Severity: Error
Explanation: This signal is generated by the debugger kernel after
it has executed the synchronization instruction(s) necessary to
insure that all vector exceptions have been reported.
User Action: Submit an SPR. This message is handled internally,
and should never be signaled to the user.
SYNCREPCOM
Message: Synchronize reporting complete Severity: Informational Explanation: All current vector exceptions have been reported. User Action: None, this message is informational.
SYNC_ALREADY_IN_PROGRESS
Message: Synchronize already in progress.
Severity: Error
Explanation: Only one synchronize command is allowed at a time.
User Action: Do not perform a synchronization command until the
previous command has completed.
SYNERREXPR
Message: syntax error in expression at or near
'debugger_command_segment'
Severity: Error
Explanation: The debugger encountered text it does not understand
near '<debugger_command_segment, !AC>'.
User Action: Reenter the command, correcting the syntax error.
SYNERRLABEL
Message: syntax error in %LABEL construct, see HELP
Built_in_Symbols %LABEL
Severity: Error
Explanation: The debugger encountered an error in the use of the
%LABEL built-in symbol.
User Action: Reenter the command line, correcting the error in the
%LABEL construct.
SYNERRLINE
Message: syntax error in %LINE construct, see HELP Built_in_Symbols
%LINE
Severity: Error
Explanation: The debugger encountered an error in the use of the
%LINE built-in symbol.
User Action: Reenter the command line, correcting the error in the
%LINE construct.
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
Explanation: An unexpected error was returned to the debugger from
the Ada RTL. Additional information from the Ada RTL is
appended to this error message.
User Action: User action is dependent on the information returned
from the Ada RTL. If the error is not recoverable, the user may
wish to enter an SPR on the Ada compiler.
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
Explanation: The task specified may not be aborted at this time.
User Action: Retry the abort at a later time.
TASKNOTACT
Message: task cannot be made the active task; task is not ready or
running
Severity: Error
Explanation: The task specified to made the active task is not in
either the READY nor the RUNNING state. Tasks not in those
states cannot be made the active task. To determine the state
of the task, perform a SHOW TASK command.
User Action: If the task is in the TERMINATED state, no action is
possible. If the task is in the SUSPENDED state, the action
required to get the task in the READY or RUNNING state depends
on the user program and the state of the debugging session.
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.
User Action: Submit an SPR. This message is handled internally,
and should never be signaled to the user.
TIMESLICE
Message: time slice interval has been slowed to 10.0 seconds
Severity: Informational
Explanation: DEBUG has changed the ADA time slice interval to 10.0
seconds. When you set watchpoints, DEBUG automatically
increases the value of pragma TIME_SLICE to 10.0. This is
because of interaction between the watchpoint implementation and
VAX Ada's time slicing. Slowing down the time-slice rate
prevents problems from occurring.
User Action: If the change in time-slice setting is undesirable,
then avoid the use of watchpoints.
TOOFEWSUB
Message: too few subscripts, array has num_dimensions dimensions
Severity: Warning
Explanation: The user has specified a symbol reference with too few
subscripts
User Action: Correct and reissue the command
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
Explanation: The user has specified a symbol reference with too
many subscripts
User Action: Correct and reissue the command
UNAACCREG
Message: unable to access beyond end of register set
Severity: Error
Explanation: The command entered attempted to read or write beyond
the end of a register or register set.
User Action: Re-enter the command, insuring that you do not attempt
to access beyond the end of the register set.
UNACREDBGO
Message: unable to create DBG$OUTPUT, SYS$OUTPUT used Severity: Informational
UNACVT
Message: unable to convert radixvalue to datatype_name Severity: Warning Explanation: Debug was unable to perform the requested conversion User Action: No user action required
UNACVTBYTTAU
Message: error converting byte count into target addressable units
Severity: Error
Explanation: This is an internal debugger error.
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.
UNALIGNED
Message: data is not aligned on a byte boundary
Severity: Warning
Explanation: The user has requested a type override that can not be
performed
User Action: No user action required
UNALLOCATED
Message: entity 'symbol_name' was not allocated in memory (was
optimized away)
Severity: Warning
Explanation: The requested entity is not available for use due to
optimizations performed by the compiler
User Action: Recompile the program with no optimizations in effect
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
Explanation: The initialization file cannot be opened. The
accompanying VMS RMS status message gives you more information
about the reasons for the file not being opened.
User Action: Examine the VMS RMS status message to determine the
reasons for the initialization file not being opened, and take
action based on that information. Also, verify that the logical
name DBG$INIT is defined to indicate the proper file.
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
Explanation: The image is linked with the /NODEBUG qualifier, so
there is no symbol table.
User Action: Relink the image with the /DEBUG qualifier.
UNASETTAS
Message: unable to set visible task: registers not available Severity: Error
UNASWISTA
Message: Unable to create debugger stack, using program stack
Severity: Informational
Explanation: DEBUG failed to set the protection ($SETPRT) on the
DEBUG stack's guard pages. This message indicates an internal
debugger error.
User Action: Submit an SPR.
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
Explanation: You attempted to use the SHOW/KEY or the DELETE/KEY
command to show or delete the definition of a key that is not
defined.
User Action: Verify that the key is defined and reenter the
command.
UNHANDLED
Message: The primary handler should now handle this unhandled
exception
Severity: Success
Explanation: This is an internal status signal, it should never be
seen by the user. If this message does occur please submit a
Software Performance Report (SPR).
User Action: Submit a Software Performance Report (SPR).
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 ()).
UNREQVQUAL
Message: Unreqcognized vector instruction qualifier specified at
'command_line'
Severity: Error
Explanation: The qualifier indicated in the shown command line
fragment is unreqcognized.
User Action: Specify a legal vector instruction qualifier.
UPBNDOPT
Message: upper bound of subrange was optimized away
Severity: Informational
Explanation: The upper bound of the specified subrange was
optimized away by the compiler. In place of the actual upper
bound, DEBUG used the hex value 7FFFFFFF.
User Action: None. This message is 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.
VALRNG
Message: 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.
VARNESDEP
Message: variant nesting depth exceeds 20, cannot access record
component
Severity: Error
VECDIS
Message: debugger-generated vector disabled fault
Severity: Error
Explanation: This signal is generated by the debugger kernel while
it is processing a vector disabled fault that it has caused.
User Action: Submit an SPR. This message is handled internally,
and should never be signaled to the user.
VECREASON
Message: the reason values for this vector error are reason_values
Severity: Informational
Explanation: An internal error has occurred with the debuggers use
of vector instructions. The particular error code has two
values which are associated with it, which more fully explain
what went wrong.
User Action: None.
VECSCP0
Message: vector registers can be accessed only in scope 0
Severity: Error
Explanation: An attempt was made to reference a vector register
from a scope other than scope 0. DEBUG will not accept a
command which specifies any other scope for a vector register.
User Action: If the current scope has been set to a scope other
than scope 0 (using the SET SCOPE command), use an explicit 0\
pathname to access the vector register.
VECTSUBRNG
Message: vector register subscript out of bounds, bounds are
low_bound..high_bound
Severity: Error
Explanation: An attempt to subscript out of the bounds of an array
was made.
User Action: Change the value of the subscript.
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.
User Action: Submit an SPR. This message is handled internally,
and should never be signaled to the user.
VFLTDIV
Message: Reserved operand, encoded as floating divide by zero
Severity: Error
Explanation: During a floating-point operation, an attempt was made
to divide by zero.
User Action: Examine the code that caused the fault. Verify that
the operands or variables are specified correctly. Verify that
the encoded reserved operand was not deposited by a
non-floating-point operation.
VFLTOVF
Message: Reserved operand, encoded as floating overflow
Severity: Error
Explanation: During a floating-point operation, a floating point
value exceeded the largest representable value for that data
type.
User Action: Examine the code that caused the fault. Verify that
the operands or variables are specified correctly. Verify that
the encoded reserved operand was not deposited by a
non-floating-point operation.
VFLTROP
Message: Reserved operand, encoded as floating reserved operand
Severity: Error
Explanation: During a floating-point operation, an attempt is made
to divide by zero.
User Action: Examine the code that caused the fault. Verify that
the operands or variables are specified correctly. Verify that
the encoded reserved operand was not deposited by a
non-floating-point operation.
VFLTUND
Message: Reserved operand, encoded as floating underflow
Severity: Error
Explanation: An arithmetic exception condition occurred as a result
of floating-point underflow.
User Action: Examine the code that caused the fault. Verify that
the operands or variables are specified correctly. Verify that
the encoded reserved operand was not deposited by a
non-floating-point operation.
WATCHSETUP
Message: instruction at current PC may trigger a watchpoint
Severity: Error
Explanation: This signal is generated by the debugger kernel when
it is about to execute an instruction that may trigger a
watchpoint.
User Action: Submit an SPR. This message is handled internally,
and should never be signaled to the user.
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).
User Action: None. This message is informational.
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.
User Action: None. This message is informational.
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.
User Action: No action necessary.
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.
User Action: No action necessary.
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.
User Action: None. This message is informational.
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.
User Action: None. This message is informational.
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.
User Action: None. This message is informational.
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.
User Action: None. This message is informational.
WIDTHDIFF
Message: desired width of display_width is not allowed, width is
set to display_width
Severity: Informational
Explanation: After creating the display pasteboard using the SMG
routine SMG$CREATE_PASTEBOARD, DEBUG found that the display
width was not in the range 20-255.
User Action: Issue the DCL command SHOW TERMINAL and verify that
the terminal width is correct and in the range 20-255.
WORKSTACMD
Message: the command debugger-command is only supported on VWS
workstations
Severity: Warning
Explanation: The debugger only supports the command
debugger-commandon workstations running VWS.
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
Explanation: A zero-length DST record was encountered within a
module. This message normally indicates a compiler error.
User Action: Submit a Software Performance Report.
ZEROINCR
Message: increment for ranged examine is zero; exiting loop
Severity: Informational
Explanation: While performing a ranged examine, DEBUG no successor
to the current data item was found because the length of the
current data item was zero bytes.
User Action: None. This message is informational.
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 DISPLAY command, 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> 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 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, 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.
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".
Screen Mode
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: 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 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 command 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
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'));
System Management
The debugger consists of two parts (main and kernel), to
accommodate the debugging of multiprocess programs.
o For a program that runs in one process, a debugging session
requires two processes instead of one.
o For a multiprocess 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, multiple users who are simultaneously
debugging programs can place an additional load on a system.
The subtopics 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, you might also
have to tune your system 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 as follows:
o Each user's ENQLM quota should be increased by at least
the number of processes being debugged.
o Each user's PGFLQUOTA might need to be increased. If a
user has an insufficient PGFLQUOTA, the debugger might
fail to activate or cause "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) might
need to be increased. For example, if 10 users are using
the debugger simultaneously, 10 global sections using a
total of 650 global pages are required by the debugger.
@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
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
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 [,...])]
Additional information available:
DescriptionExamplesParametersQualifiersMultiprocess Programs
Description
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.
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
Additional information available:
/AST/NOAST/SAVE_VECTOR_STATE/NOSAVE_VECTOR_STATE
/AST
Specifies that ASTs can be delivered during execution of the
called routine.
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.
/NOAST
Specifies that ASTs cannot be delivered during execution of
the called routine.
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.
/SAVE_VECTOR_STATE
/SAVE_VECTOR_STATE
/NOSAVE_VECTOR_STATE (default)
Note: These qualifiers apply to vectorized programs.
Controls whether the current state of the vector processor
is saved and then restored when a routine is called with the
CALL command.
The state of the vector processor comprises the following:
o The values of the vector registers (V0 to V15) and the
vector control registers (VCR, VLR, and VMR)
o Any vector exception (an exception caused by the
execution of a vector instruction) that might be pending
delivery
When you use the CALL command to execute a routine,
execution of the routine might change the state of the
vector processor as follows:
o By changing the values of vector registers or vector
control registers
o By causing a vector exception
o By causing the delivery of a vector exception that was
pending when the CALL command was issued
The /SAVE_VECTOR_STATE qualifier specifies that the state of
the vector processor that exists before the CALL command is
issued is restored by the debugger after the called routine
has completed execution. This ensures that, after the
called routine has completed execution:
o Any vector exception that was pending delivery before
the CALL command was issued is still pending delivery
o No vector exception that was triggered during the
routine call is still pending delivery
o The values of the vector registers are identical to
their values before the CALL command was issued
The /NOSAVE_VECTOR_STATE qualifier, which is the default,
specifies that the state of the vector processor that exists
before the CALL command is issued is not restored by the
debugger after the called routine has completed execution.
In this case, the state of the vector processor after the
routine call depends on the effect (if any) of the called
routine.
The /[NO]SAVE_VECTOR_STATE qualifiers have no effect on the
VAX general registers. The values of these registers are
always saved and restored when you execute a routine with
the CALL command.
/NOSAVE_VECTOR_STATE
See /SAVE_VECTOR_STATE.
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 a breakpoint.
Format:
CANCEL BREAK [/qualifier] [address-expression [,...]]
Additional information available:
DescriptionExamplesParametersQualifiers
Description
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.
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/VECTOR_INSTRUCTION
/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.
/VECTOR_INSTRUCTION
Note: This qualifier applies to vectorized programs.
Cancels the effect of a previous SET
BREAK/VECTOR_INSTRUCTION command. Do not specify an address
expression with /VECTOR_ INSTRUCTION.
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 a tracepoint.
Format:
CANCEL TRACE [/qualifier] [address-expression [,...]]
Additional information available:
DescriptionExamplesParametersQualifiers
Description
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.
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/VECTOR_INSTRUCTION
/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.
/VECTOR_INSTRUCTION
Note: This qualifier applies to vectorized programs.
Cancels the effect of a previous SET
TRACE/VECTOR_INSTRUCTION command. Do not specify an address
expression with /VECTOR_ INSTRUCTION.
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 a DISPLAY command. 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>
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 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 "Language_Support
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
Displays the current value of a program variable. More
generally, displays the value of the entity denoted by an
address expression.
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 [address-expression[:address-expression]
[,address-expression[:address-expression]...]]
Additional information available:
Aggregate ExamineComposite ExamineParametersQualifiersQualifiers
Aggregate Examine
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
Composite Examine
When using the EXAMINE command, you can specify various
forms of composite address expressions---expressions that
include byte offsets from a given address. For example, if
X is an integer variable, the following EXAMINE command
displays the value currently stored at the memory location
that is 6 bytes beyond the address of X:
DBG> EXAMINE X + 6
MOD3\X+6: 274903
You can examine composite address expressions of a complex
form. For example, the following command lines might be
appropriate for a vectorized program.
DBG> EXAMINE ARRX(1) + .%V9(0:VLR-1)
DBG> EXAMINE ARRZ(1) + .%V1(0:3) + .%V3(0:2)
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 necessarily 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/FMASK/G_FLOAT/H_FLOAT/HEXADECIMAL/INSTRUCTION
/LINE/LONGWORD/NOLINE/NOSYMBOL/OCTAL
/OCTAWORD/OPERANDS/PACKED:n/PSL/PSW
/QUADWORD/SOURCE/SYMBOL/TASK/TMASK/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
/FMASK
See /TMASK.
/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
Displays operand information associated with an examined
instruction (displays each operand's address and its
contents, using the operand's data type). The keywords
BRIEF and FULL vary the amount of information displayed
about any nonregister operands. The default is
/OPERANDS=BRIEF.
Use /OPERANDS only when examining the instruction at the
current PC value (for example, EXAMINE/OPERANDS .0\%PC).
Examining the operands of an instruction that is not at the
current PC value can give erroneous results, because the
state of the machine (the contents of the registers) is not
set up for that instruction.
In screen mode, operand information is directed at the
current output display.
When you examine the operands of a vector instruction, any
operand-element masking that might be associated with that
instruction is performed by default. The /TMASK and /FMASK
qualifiers enable you to specify some other mask. The
current value of the vector length register (VLR) limits the
highest element of a vector register that you can examine.
See also the SET MODE [NO]OPERANDS=keyword command. It
enables you to set a default level for the amount of operand
information displayed when examining instructions.
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
/TMASK
/TMASK[=(mask-address-expression)]
/FMASK[=(mask-address-expression)]
Note: These qualifiers apply to vectorized programs.
These qualifiers enable you to specify a mask in order to
display certain elements of a vector register (V0 to V15),
or of an array in memory, while not displaying other
elements.
For example, when you examine the operands of a vector
instruction (by using the /OPERANDS qualifier), these
qualifiers enable you to override any operand-element
masking that might be associated with that instruction.
The /TMASK qualifier applies the EXAMINE command only to the
elements of the register or array that correspond to the set
bits (bit value: 1) of the mask. The /FMASK qualifier
applies the EXAMINE command only to the elements that
correspond to the clear bits (bit value: 0) of the mask.
The current value of the vector length register (VLR) limits
the highest register element that you can examine but not
the highest array element.
By default, if you do not specify a mask address expression
with /TMASK or /FMASK, the vector mask register (VMR) is
used. That is, the EXAMINE command is applied only to the
elements of the vector register or array that correspond to
the set bits (in the case of /TMASK) or clear bits (in the
case of /FMASK) of VMR.
If you specify a mask address expression with /TMASK or
/FMASK, the value at that address is used as the mask,
subject to the following conventions:
o You must use parentheses around the address expression.
o The number of mask elements limits the number of
register or array elements that you can examine.
o If the mask address expression denotes a Boolean array,
its values are used as the mask in the same basic way
that VMR is used in the default case.
o If the mask address expression denotes a non-Boolean
array, the least significant bit value of each array
element is used as the mask for the corresponding
element of the register or target array.
o If the mask address expression denotes a Boolean scalar
type, its value is used as the mask for the first
element of the register or target array. No other
elements are examined.
o If the mask address expression denotes any other type,
its least significant bit value is used as the mask for
the first element of the register or target array. No
other elements are examined.
o For a multi-element mask, the lowest specified element
of the mask is applied to the lowest specified element
of the register or target array.
/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 command.
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_Mode").
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 Language_Support *" for
information about the syntax of each language.
debug-cmd-list
A single debugger command or a sequence of debugger commands
separated by semicolons.
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.
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.
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).
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_KEYATSIGNBREAKDEFINEEDITOREVENT_FACILITY
IMAGEKEYLANGUAGELOGMARGINSMAX_SOURCE_FILES
MODEMODULEOUTPUTPROCESSPROMPTRADIXSCOPE
SEARCHSOURCESTEPTASKTERMINALTRACETYPE
VECTOR_MODEWATCHWINDOW
Parameters
keyword
Keyword can be ABORT_KEY, ATSIGN, BREAK, DEFINE, 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[;...])]
Additional information available:
DescriptionExamplesParametersQualifiers
Description
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.
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,
/VECTOR_INSTRUCTION.
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/INTO/JSB/LINE/MODIFY/NOJSB
/NOSHARE/NOSILENT/NOSOURCE/NOSYSTEM/OVER
/RETURN/SHARE/SILENT/SOURCE/SYSTEM/TEMPORARY
/TERMINATING/VECTOR_INSTRUCTION
/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. Do not specify an address
expression with /BRANCH. See also /INTO, /OVER.
/CALL
Causes the debugger to break on every call instruction
encountered during execution, including the RET instruction.
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[=(opcode[,...])]
If you do not specify an opcode, causes the debugger to
break on every instruction encountered during program
execution. If you specify one or more opcodes, causes the
debugger to break on every instruction whose opcode is in
the list.
Do not specify an address expression with this qualifier.
If you specify a vector instruction, do not include an
instruction qualifier (/U, /V, /M, /0, or /1) with the
instruction mnemonic. See also /INTO and /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 expression 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.
/VECTOR_INSTRUCTION
Note: This qualifier applies to vectorized programs.
Causes the debugger to break on every vector instruction
encountered during program execution. Do not specify an
address expression with /VECTOR_INSTRUCTION. See also /INTO
and /OVER.
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.
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 Language_Support" 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. Type "Help Screen_Mode" 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 are 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
OVERRETURNSHARESILENTSOURCESYSTEMVECTOR_INSTRUCTION
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. If you specify a vector instruction, do not include
an instruction qualifier (/U, /V, /M, /0, or /1) with the
instruction mnemonic.
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.
VECTOR_INSTRUCTION
(Applies to vectorized programs). Subsequent STEP
INSTRUCTION commands are treated as STEP/VECTOR_INSTRUCTION
(step to the next vector instruction).
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[;...]]
Additional information available:
DescriptionExamplesParametersQualifiers
Description
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.
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,
/VECTOR_INSTRUCTION.
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/INTO/JSB/LINE/MODIFY/NOJSB
/NOSHARE/NOSILENT/NOSOURCE/NOSYSTEM/OVER
/RETURN/SHARE/SILENT/SOURCE/SYSTEM/TEMPORARY
/TERMINATING/VECTOR_INSTRUCTION
/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. 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 RET
instruction. 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[=(opcode[,...])]
If you do not specify an opcode, causes the debugger to
trace every instruction encountered during program
execution. If you specify one or more opcodes, causes the
debugger to trace every instruction whose opcode is in the
list.
Do not specify an address expression with this qualifier.
If you specify a vector instruction, do not include an
instruction qualifier (/U, /V, /M, /0, or /1) with the
instruction mnemonic. See also /INTO and /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.
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 expression 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.
/VECTOR_INSTRUCTION
Note: This qualifier applies to vectorized programs.
Causes the debugger to trace every vector instruction
encountered during program execution. Do not specify an
address expression with /VECTOR_INSTRUCTION. See also /INTO
and /OVER.
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.
VECTOR_MODE
Note: This command applies to vectorized programs.
Enables or disables a debugger vector mode option. Vector
mode options control the way in which the debugger interacts
with the vector processor. See the parameter descriptions
for details about the SET VECTOR_MODE command.
Format:
SET VECTOR_MODE vector-mode-option
Additional information available:
Parameters
vector-mode-option
Specifies the vector mode option. Valid keywords are as follows:
SYNCHRONIZED Specifies that the debugger force automatic
synchronization between the scalar and vector
processors whenever a vector instruction is
executed. Specifically, the debugger issues a SYNC
instruction after every vector instruction and, in
addition, an MSYNC instruction after any vector
instruction that accesses memory. This forces the
completion of all activities associated with the
vector instruction that is being synchronized:
o Any exception that was caused by a vector
instruction is delivered before the next scalar
instruction is executed. Note that forcing the
delivery of a pending exception triggers an
exception breakpoint or tracepoint (if one was
set) or invokes an exception handler (if one is
available at that location in the program).
o Any read or write operation between vector
registers and either the general registers
or memory is completed before the next scalar
instruction is executed.
Note that the command SET VECTOR_MODE SYNCHRONIZED
does not issue an immediate SYNC or MSYNC
instruction at the time it is issued. Use the
command SYNCHRONIZE VECTOR_MODE to force immediate
synchronization.
NOSYNCHRONIZED Specifies that the debugger not force
synchronization between the scalar and vector
processors except for internal debugger purposes.
As a result, any synchronization is controlled
entirely by the program, and the program runs
as if it were not under debugger control.
NOSYNCHRONIZED is the default vector mode.
Examples
1. DBG> SET VECTOR_MODE SYNCHRONIZED
This command causes the debugger to force synchronization
between the scalar and vector processors after each vector
instruction is executed.
2. DBG> SHOW VECTOR_MODE
Vector mode is nonsynchronized
DBG> SET VECTOR_MODE SYNCHRONIZED [1]
DBG> SHOW VECTOR_MODE
Vector mode is synchronized
DBG> STEP [2]
stepped to .MAIN.\SUB\%LINE 99
99: VVDIVD V1,V0,V2
DBG> STEP [3]
%SYSTEM-F-VARITH, vector arithmetic fault, summary=00000002,
mask=00000004, PC=000002E1, PSL=03C00010
break on unhandled exception preceding .MAIN.\SUB\%LINE 100
100: CLRL R0
DBG>
The comments that follow refer to the callouts in the
preceding example.
1. The command SET VECTOR_MODE SYNCHRONIZED causes the
debugger to force automatic synchronization between the
scalar and vector processors whenever a vector
instruction is executed.
2. This STEP command suspends program execution on line 99,
just before a VVDIVD instruction is executed. Assume
that, in this example, the instruction will trigger a
floating- point divide-by-zero exception.
3. This STEP command executes the VVDIVD instruction, which
triggers the exception. Note that the vector exception
is delivered immediately because the debugger is being
operated in synchronized vector mode.
WATCH
Establishes a watchpoint at the location denoted by an
address expression.
Format:
SET WATCH [/qualifiers]
address-expression [,...]
[ WHEN (conditional-expression)]
[ DO (command[;...])]
Additional information available:
DescriptionExamplesGlobal Section WatchpointsParametersStatic Nonstatic Watchpoints
Shareable Image WatchpointsQualifiers
Description
When 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.
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.
Shareable Image Watchpoints
When setting a watchpoint in an installed writeable shareble
image, use the command SET WATCH/NOSTATIC.
The reason you must set a nonstatic watchpoint is as
follows. Variables declared in such shareable images are
typically static variables. By default, the debugger
watches a static variable by write-protecting the page
containing that variable. However, the debugger cannot
write-protect a page in an installed writeable shareable
image. Therefore, the debugger must use the slower method
of detecting changes, as for nonstatic variables---that is,
by checking the value at the watched location after each
instruction has been executed.
Note that if any other process modifies the watched
location's value, the debugger may report that your program
modified the watched location.
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 a DISPLAY command 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
TYPEVECTOR_MODEWATCHWINDOW
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
Language_Support" 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.
VECTOR_MODE
Note: This command applies to vectorized programs.
Identifies the current vector mode (synchronized or
nonsynchronized). The current vector mode is the mode
established with the SET VECTOR_MODE command. If no SET
VECTOR_MODE command was entered, the vector mode is, by
default, nonsynchronized.
Format:
SHOW VECTOR_MODE
Additional information available:
Example
DBG> SHOW VECTOR_MODE
Vector mode is nonsynchronized
DBG> SET VECTOR_MODE SYNCHRONIZED
DBG> SHOW VECTOR_MODE
Vector mode is synchronized
DBG>
The SHOW VECTOR_MODE command indicates the effect of the SET
VECTOR_MODE command.
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.
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]
Additional information available:
DescriptionExamplesMultiprocess ProgramsParametersQualifiers
Description
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.
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,
/VECTOR_INSTRUCTION.
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/VECTOR_INSTRUCTION
/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)
If you do not specify an opcode, executes the program to the
next instruction. STEP/INSTRUCTION has the same effect as
SET BREAK /TEMPORARY/INSTRUCTION;GO.
If you specify one or more opcodes, 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.
If you specify a vector instruction, do not include an
instruction qualifier (/U, /V, /M, /0, or /1) with the
instruction mnemonic.
/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.
/VECTOR_INSTRUCTION
Note: This qualifier applies to vectorized programs.
Executes the program to the next vector instruction.
STEP/VECTOR_ INSTRUCTION has the same effect as SET
BREAK/TEMPORARY/VECTOR_ INSTRUCTION;GO.
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.
SYNCHRONIZE
Additional information available:
VECTOR_MODE
Note: This command applies to vectorized programs.
Forces immediate synchronization between the scalar and
vector processors.
Format:
SYNCHRONIZE VECTOR_MODE
Additional information available:
Description
The command SYNCHRONIZE VECTOR_MODE forces immediate
synchronization between the scalar and vector processors by
issuing a SYNC and an MSYNC instruction. The effect is as
follows:
o Any exception that was caused by a vector instruction
and was still pending delivery is immediately delivered.
Note that forcing the delivery of a pending exception
triggers an exception breakpoint or tracepoint (if one
was set) or invokes an exception handler (if one is
available at that location in the program).
o Any read or write operation between vector registers and
either the general registers or memory is completed
immediately-that is, any vector memory instruction that
was still being executed completes execution.
Entering the SYNCHRONIZE VECTOR_MODE command is equivalent
to issuing SYNC and MSYNC instructions at the location in
the program at which execution is suspended.
By default, the debugger does not force synchronization
between the scalar and vector processors during program
execution (SET VECTOR_MODE NOSYNCHRONIZED). Use the command
SET VECTOR_MODE SYNCHRONIZED to force such synchronization.
Examples
1. DBG> SYNCHRONIZE VECTOR_MODE
%DEBUG-I-SYNCREPCOM, Synchronize reporting complete
DBG>
The SYNCHRONIZE VECTOR_MODE command forces immediate
synchronization between the scalar and vector processors.
In this example, the diagnostic message indicates that the
synchronization operation has completed and that all pending
vector exceptions have been delivered and reported.
2. DBG> STEP [1]
stepped to .MAIN.\SUB\%LINE 99
99: VVDIVD V1,V0,V2
DBG> STEP [2]
stepped to .MAIN.\SUB\%LINE 100
100: CLRL R0
DBG> EXAMINE/FLOAT %V2 [3]
0\%V2
[0]: 13.53400
[1]: Reserved operand, encoded as floating divide by zero
[2]: 247.2450
.
.
.
DBG> SYNCHRONIZE VECTOR_MODE [4]
%SYSTEM-F-VARITH, vector arithmetic fault, summary=00000002,
mask=00000004, PC=000002E1, PSL=03C00010
break on unhandled exception preceding .MAIN.\SUB\%LINE 100
100: CLRL R0
DBG>
The comments that follow refer to the callouts in the
preceding example.
1. This STEP command suspends program execution on line 99,
just before a VVDIVD instruction is executed. Assume
that, in this example, the instruction will trigger a
floating- point divide-by-zero exception.
2. This STEP command executes the VVDIVD instruction.
Note, however, that the exception is not delivered at
this point in the execution of the program.
3. The EXAMINE/FLOAT command displays a decoded exception
message in element 1 of the destination register, V2.
This confirms that a floating-point divide-by-zero
exception was triggered and is pending delivery.
4. The SYNCHRONIZE VECTOR_MODE command forces the immediate
delivery of the pending vector exception.
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.