DEBUG — VMS FORTRAN_5.2
Additional information available:
ATTACHCALLCANCELCONNECTCTRL-CCTRL-YCTRL-Z
DECLAREDEFINEDELETEDEPOSITDISABLEDISPLAYDO
EDITENABLEEVALUATEEXAMINEEXITEXITLOOPEXPAND
EXTRACTFORGOHELPIFMOVEQUIT
REPEATSAVESCROLLSEARCHSELECTSETSHOW
SPAWNSS$_DEBUGSTEPSYMBOLIZETYPE
WHILE
@file-specAddress-exprDebugging ConfigurationsKeypadLanguagesLexicals
Logical NamesMessagesMultiprocessNew FeaturesPathnamesRelease Notes
Screen Features
@file-spec
Execute debugger commands from the specified file. If you have
entered a "SET OUTPUT VERIFY", all commands read from a command
procedure are echoed on the terminal.
Parameters may be passed in to a command procedure. Parameters
can be address expressions, language expressions, or strings.
(Corresponding to the three kinds of DEFINE symbols.) Inside the
command procedure, the parameters get bound to names via the
DECLARE command.
Format:
@file-spec [ parameter [,parameter...]]
Additional information available:
Examples
The following example invokes a "SETUP" command file that
establishes a particular set of defaults. The commands in the
command file are echoed because of the "SET OUT VERIFY".
DBG> SET OUT VERIFY
DBG> @SETUP.COM
!entering command file SETUP.COM
! SET SOURCE [],SRC$
! SET MODE SCREEN
! SET STEP SILENT
! SET RADIX HEX
!exiting command file SETUP.COM
Parameters
file-specification
Specifies the command procedure to be executed. If the
file-specification does not include a file type, the default file
type .COM is used. A logical name may be given. The default
file specification can be modified by using the SET ATSIGN
command. (See the help on SET ATSIGN).
parameter
This can be an address or value expression in the current
language, or a quoted string. It is bound to a name within the
command procedure by using the DECLARE command. (See the help on
DECLARE).
For example:
DBG> @DUMP X
!entering command procedure DUMP.COM
! DECLARE P1:ADDRESS
! EXAMINE P1
X: 23
!exiting command procedure DUMP.COM
Address-expr
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
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
On Digital VT-series terminals and MicroVAX workstations, you can
use the numeric keypad to enter debugger commands provided you
are in "keypad mode". Keypad mode is enabled by default, but can
be disabled and enabled by the commands SET MODE NOKEYPAD and SET
MODE KEYPAD, respectively. In keypad mode, keypad keys are bound
to commonly used debugger commands such as STEP, GO and EXAMINE.
Most keys are bound to screen mode commands, to help you
manipulate the predefined screen displays efficiently. Some keys
are "terminated": the corresponding command is executed
immediately. Others are not: you can enter additional
parameters to the command before terminating it with a carriage
return or the ENTER key. Also, some keys echo on the terminal
while others do not, depending on the key. You can define your
own keypad definitions with the DEFINE/KEY command.
Additional information available:
DEFAULTGOLDBLUEMOVEEXPANDCONTRACTMOVE_GOLD
EXPAND_GOLDCONTRACT_GOLDMOVE_BLUEEXPAND_BLUE
CONTRACT_BLUESUMMARY
DEFAULT
Keypad definitions when you do +--------+--------+--------+--------+
not use a color key. | | Help | Set | |
| GOLD | Keypad | Mode | BLUE |
For more keypad help, enter HELP | |Default | Screen | |
KEYPAD GOLD, HELP KEYPAD BLUE +--------+--------+--------+--------+
or HELP KEYPAD STATE_KEYS. | Src LH1| | | Disp |
|Inst RH1| Scroll | Disp | next |
Control-W does a Display/Refresh | Out S45| Up | next | S12345 |
to refresh screen in screen mode. +--------+--------+--------+--------+
| | Exam | | |
| Scroll | Source | Scroll | Go |
| Left | .0\%PC | Right | |
+--------+--------+--------+--------+
| | | Select | |
| Exam | Scroll | Scroll | E |
| | Down | next | N |
+--------+--------+--------+ T |
| | | E |
| Step | Reset | R |
| | | |
+-----------------+--------+--------+
GOLD
Keypad definitions when you +--------+--------+--------+--------+
press the GOLD key first. | | Help |Set Mode| |
| GOLD | Keypad | No | BLUE |
Reset cancels the GOLD key. | | Gold | Screen | |
+--------+--------+--------+--------+
For more keypad help, enter HELP |Inst LH1| | Set | |
KEYPAD BLUE, HELP KEYPAD DEFAULT | Reg RH1| Scroll | Process| |
or HELP KEYPAD STATE_KEYS. | Out S45| Top | next | |
+--------+--------+--------+--------+
Control-W does a Display/Refresh | Scroll | | Scroll | Select |
to refresh screen in screen mode. | Left | Show | Right | Source |
| 255 | Calls | 255 | next |
+--------+--------+--------+--------+
| Exam | | Select | |
| prev | Scroll | Output | E |
| | Bottom | next | N |
+--------+--------+--------+ T |
| | | E |
| Step/Into | Reset | R |
| | | |
+-----------------+--------+--------+
BLUE
Keypad definitions when you +--------+--------+--------+--------+
press the BLUE key first. | | Help | | |
| GOLD | Keypad | Disp | BLUE |
"..." means that you must enter | | Blue | Gener | |
more input after pressing key. +--------+--------+--------+--------+
|2 SRC Qn| Scroll | 2 SRC | Disp |
Reset cancels the BLUE key. | 2 INST | Up | at | Src H1 |
| at RQn | ... | Q1,Q2 | Out S45|
For more keypad help, enter HELP +--------+--------+--------+--------+
KEYPAD GOLD, HELP KEYPAD DEFAULT | Scroll | Show | Scroll | Select |
or HELP KEYPAD STATE_KEYS. | Left | Calls | Right | Inst |
| ... | 3 | ... | next |
Control-W does a Display/Refresh +--------+--------+--------+--------+
to refresh screen in screen mode. |3 SRC Sn| Scroll | 3 SRC | |
| 3 INST | Down | at | E |
| at RSn | ... |S1,S2,S3| N |
+--------+--------+--------+ T |
| | | E |
| Step/Over | Reset | R |
| | | |
+-----------------+--------+--------+
MOVE
Keypad definitions in the MOVE +--------+--------+--------+--------+
state when you do not use a color | | Help | Set | |
key. | GOLD | Keypad | Mode | BLUE |
| | Move | Screen | |
For more keypad help, enter HELP +--------+--------+--------+--------+
KEYPAD GOLD, HELP KEYPAD BLUE | Src LH1| | | Disp |
or HELP KEYPAD STATE_KEYS. |Inst RH1| Move | Disp | next |
| Out S45| Up | next | S12345 |
Control-W does a Display/Refresh +--------+--------+--------+--------+
to refresh screen in screen mode. | | Exam | | |
| Move | Source | Move | Go |
| Left | .0\%PC | Right | |
+--------+--------+--------+--------+
| | | Select | |
| Exam | Move | Scroll | E |
| | Down | next | N |
+--------+--------+--------+ T |
| | | E |
| Step | Reset | R |
| | | |
+-----------------+--------+--------+
EXPAND
Keypad definitions in the EXPAND +--------+--------+--------+--------+
state when you do not use a color | | Help | Set | |
key. | GOLD | Keypad | Mode | BLUE |
| | Expand | Screen | |
For more keypad help, enter HELP +--------+--------+--------+--------+
KEYPAD GOLD, HELP KEYPAD BLUE | Src LH1| | | Disp |
or HELP KEYPAD STATE_KEYS. |Inst RH1| Expand | Disp | next |
| Out S45| Up | next | S12345 |
Control-W does a Display/Refresh +--------+--------+--------+--------+
to refresh screen in screen mode. | | Exam | | |
| Expand | Source | Expand | Go |
| Left | .0\%PC | Right | |
+--------+--------+--------+--------+
| | | Select | |
| Exam | Expand | Scroll | E |
| | Down | next | N |
+--------+--------+--------+ T |
| | | E |
| Step | Reset | R |
| | | |
+-----------------+--------+--------+
CONTRACT
Keypad definitions in the CONTRACT +--------+--------+--------+--------+
state when you do not use a color | | Help | Set | |
key. | GOLD | Keypad | Mode | BLUE |
| |Contract| Screen | |
For more keypad help, enter HELP +--------+--------+--------+--------+
KEYPAD GOLD, HELP KEYPAD BLUE | Src LH1| Expand | | Disp |
or HELP KEYPAD STATE_KEYS. |Inst RH1| Up= | Disp | next |
| Out S45| -1 | next | S12345 |
Control-W does a Display/Refresh +--------+--------+--------+--------+
to refresh screen in screen mode. | Expand | Exam | Expand | |
| Left= | Source | Right= | Go |
| -1 | .0\%PC | -1 | |
+--------+--------+--------+--------+
| | Expand | Select | |
| Exam | Down= | Scroll | E |
| | -1 | next | N |
+--------+--------+--------+ T |
| | | E |
| Step | Reset | R |
| | | |
+-----------------+--------+--------+
MOVE_GOLD
Keypad definitions in the MOVE +--------+--------+--------+--------+
state when you press the GOLD key | | Help |Set Mode| |
first. | GOLD | Keypad | No | BLUE |
| |MoveGold| Screen | |
Reset cancels the GOLD key. +--------+--------+--------+--------+
|Inst LH1| Move | Set | |
For more keypad help, enter HELP | Reg RH1| Up= | Process| |
KEYPAD BLUE, HELP KEYPAD DEFAULT | Out S45| 999 | next | |
or HELP KEYPAD STATE_KEYS. +--------+--------+--------+--------+
| Move | | Move | Select |
Control-W does a Display/Refresh | Left= | Show | Right= | Source |
to refresh screen in screen mode. | 999 | Calls | 999 | next |
+--------+--------+--------+--------+
| Exam | Move | Select | |
| prev | Down= | Output | E |
| | 999 | next | N |
+--------+--------+--------+ T |
| | | E |
| Step/Into | Reset | R |
| | | |
+-----------------+--------+--------+
EXPAND_GOLD
Keypad definitions in the EXPAND +--------+--------+--------+--------+
state when you press the GOLD key | | Help |Set Mode| |
first. | GOLD | Keypad | No | BLUE |
| |ExpaGold| Screen | |
Reset cancels the GOLD key. +--------+--------+--------+--------+
|Inst LH1| Expand | Set | |
For more keypad help, enter HELP | Reg RH1| Up= | Process| |
KEYPAD BLUE, HELP KEYPAD DEFAULT | Out S45| 999 | next | |
or HELP KEYPAD STATE_KEYS. +--------+--------+--------+--------+
| Expand | | Expand | Select |
Control-W does a Display/Refresh | Left= | Show | Right= | Source |
to refresh screen in screen mode. | 999 | Calls | 999 | next |
+--------+--------+--------+--------+
| Exam | Expand | Select | |
| prev | Down= | Output | E |
| | 999 | next | N |
+--------+--------+--------+ T |
| | | E |
| Step/Into | Reset | R |
| | | |
+-----------------+--------+--------+
CONTRACT_GOLD
Keypad definitions in the CONTRACT +--------+--------+--------+--------+
state when you press the GOLD key | | Help |Set Mode| |
first. | GOLD | Keypad | No | BLUE |
| |CntrGold| Screen | |
Reset cancels the GOLD key. +--------+--------+--------+--------+
|Inst LH1| Expand | Set | |
For more keypad help, enter HELP | Reg RH1| Up= | Process| |
KEYPAD BLUE, HELP KEYPAD DEFAULT | Out S45| -999 | next | |
or HELP KEYPAD STATE_KEYS. +--------+--------+--------+--------+
| Expand | | Expand | Select |
Control-W does a Display/Refresh | Left= | Show | Right= | Source |
to refresh screen in screen mode. | -999 | Calls | -999 | next |
+--------+--------+--------+--------+
| Exam | Expand | Select | |
| prev | Down= | Output | E |
| | -999 | next | N |
+--------+--------+--------+ T |
| | | E |
| Step/Into | Reset | R |
| | | |
+-----------------+--------+--------+
MOVE_BLUE
Keypad definitions in the MOVE +--------+--------+--------+--------+
state when you press the BLUE key | | Help | | |
first. | GOLD | Keypad | Disp | BLUE |
| |MoveBlue| Gener | |
"..." means that you must enter +--------+--------+--------+--------+
more input after pressing key. |2 SRC Qn| | 2 SRC | Disp |
| 2 INST | Move | at | Src H1 |
Reset cancels the BLUE key. | at RQn | Up=5 | Q1,Q2 | Out S45|
+--------+--------+--------+--------+
For more keypad help, enter HELP | | Show | | Select |
KEYPAD GOLD, HELP KEYPAD DEFAULT | Move | Calls | Move | Inst |
or HELP KEYPAD STATE_KEYS. | Left=10| 3 |Right=10| next |
+--------+--------+--------+--------+
Control-W does a Display/Refresh |3 SRC Sn| | 3 SRC | |
to refresh screen in screen mode. | 3 INST | Move | at | E |
| at RSn | Down=5 |S1,S2,S3| N |
+--------+--------+--------+ T |
| | | E |
| Step/Over | Reset | R |
| | | |
+-----------------+--------+--------+
EXPAND_BLUE
Keypad definitions in the EXPAND +--------+--------+--------+--------+
state when you press the BLUE key | | Help | | |
first. | GOLD | Keypad | Disp | BLUE |
| |ExpaBlue| Gener | |
"..." means that you must enter +--------+--------+--------+--------+
more input after pressing key. |2 SRC Qn| | 2 SRC | Disp |
| 2 INST | Expand | at | Src H1 |
Reset cancels the BLUE key. | at RQn | Up=5 | Q1,Q2 | Out S45|
+--------+--------+--------+--------+
For more keypad help, enter HELP | | Show | | Select |
KEYPAD GOLD, HELP KEYPAD DEFAULT | Expand | Calls | Expand | Inst |
or HELP KEYPAD STATE_KEYS. | Left=10| 3 |Right=10| next |
+--------+--------+--------+--------+
Control-W does a Display/Refresh |3 SRC Sn| | 3 SRC | |
to refresh screen in screen mode. | 3 INST | Expand | at | E |
| at RSn | Down=5 |S1,S2,S3| N |
+--------+--------+--------+ T |
| | | E |
| Step/Over | Reset | R |
| | | |
+-----------------+--------+--------+
CONTRACT_BLUE
Keypad definitions in the CONTRACT +--------+--------+--------+--------+
state when you press the BLUE key | | Help | | |
first. | GOLD | Keypad | Disp | BLUE |
| |CntrBlue| Gener | |
"..." means that you must enter +--------+--------+--------+--------+
more input after pressing key. |2 SRC Qn| Expand | 2 SRC | Disp |
| 2 INST | Up= | at | Src H1 |
Reset cancels the BLUE key. | at RQn | -5 | Q1,Q2 | Out S45|
+--------+--------+--------+--------+
For more keypad help, enter HELP | Expand | Show | Expand | Select |
KEYPAD GOLD, HELP KEYPAD DEFAULT | Left= | Calls | Right= | Inst |
or HELP KEYPAD STATE_KEYS. | -10 | 3 | -10 | next |
+--------+--------+--------+--------+
Control-W does a Display/Refresh |3 SRC Sn| Expand | 3 SRC | |
to refresh screen in screen mode. | 3 INST | Down= | at | E |
| at RSn | -5 |S1,S2,S3| N |
+--------+--------+--------+ T |
| | | E |
| Step/Over | Reset | R |
| | | |
+-----------------+--------+--------+
State keys
The four scrolling keys (KP8, KP2, KP4, and KP6) can also be used
to expand, contract, and move displays. Just as they can perform
a SCROLL /UP, /DOWN, /LEFT, or /RIGHT, they can now perform a
MOVE, etc. in those directions as well. The GOLD key can be
used to cause the operation to advance more than one line or
column. The commands are directed at the current scrolling
display. The key KP3 can be used to select the current scrolling
display from the display circular list.
Four keys on the LK201 keyboard are used to facilitate this.
They place the numeric keypad in one of the following four
states: DEFAULT, MOVE, EXPAND, CONTRACT. This changes the
definition of the keys KP8, KP2, KP4, and KP6. The meaning of
all other keys remains unchanged.
For example, in the MOVE state (F18), pressing the key KP2 causes
the default scrolling display to move down by one character
position. Pressing GOLD KP2 causes the display to move down by a
larger increment. The keypad remains in the MOVE state until
another state, such as the DEFAULT state (F17), is selected.
This restores the definition of the SCROLL operation.
If you do not have an LK201 keyboard with the F17-F20 keys on it,
you may get the same effect by typing the corresponding command:
F17 F18 F19 F20
SET KEY/STATE=DEFAULT or +--------+--------+--------+--------+
SET KEY/STATE=MOVE | | | | |
SET KEY/STATE=EXPAND | DEFAULT| MOVE | EXPAND |CONTRACT|
SET KEY/STATE=CONTRACT | | | | |
+--------+--------+--------+--------+
SUMMARY
Summary of debugger key definitions. +--------+--------+--------+--------+
| | | | |
For more keypad help, enter HELP | GOLD | Help | Screen | BLUE |
KEYPAD DEFAULT, HELP KEYPAD GOLD, | | | Mode | |
HELP KEYPAD BLUE, or HELP KEYPAD +--------+--------+--------+--------+
STATE_KEYS. | Select | | | Disp |
| Screen | Up | Disp | next |
Control-W does a Display/Refresh | Layout | | next | at FS |
to refresh screen in screen mode. +--------+--------+--------+--------+
| | | | |
| Left | Where | Right | Go |
| | am I? | | |
+--------+--------+--------+--------+
| | | | |
| Exam | Down | Select | E |
| | | next | N |
+--------+--------+--------+ T |
| | | E |
| Step | Reset | R |
| | | |
+-----------------+--------+--------+
Languages
This section gives help on each of the languages supported by the
debugger. The help information includes tables saying which
language operators and data types are supported by the debugger
in language expressions (for example, in the EVALUATE command).
Additional information available:
ADABASICBLISSCCCOBOLDIBOLFORTRAN
MACROPASCALPLIRPGSCANUNKNOWN
ADA
The debugger completely supports the ADA language. It knows
about ADA names, operators, and data types when evaluating
expressions in an EXAMINE or EVALUATE command. It knows about
ADA packages, with clauses, and use clauses, and follows ADA
scoping rules when looking up symbols. There are a large number
of special-purpose commands to support debugging of ADA
multitasking programs and ADA exception events.
Additional information available:
Data TypesEventsExceptionsMultitaskingOperatorsNamesOverloading
PackagesSubunitsTick Operators
Data Types
Supported ADA Data Types
Integer
Float
Fixed
Enumeration
Arrays
Records
Pointers
Tasks
Events
The debugger allows you to set breakpoints and tracepoints (known
generically as "eventpoints") on certain types of events
occurring during the execution of your program which are defined
and detected by the Ada RTL. These events would otherwise be
very difficult (or impossible) for you to set a breakpoint on.
They fall into two broad categories: exception events and
tasking events. Exception events allow you to break or trace on
any exception that is about to be handled by an Ada exception
handler. They are applicable to any Ada program. Tasking events
deal specifically with multitasking programs. They allow you to
break or trace on task scheduling, termination, and other state
transitions.
Additional information available:
CommandsEvent parametersExamples
Commands
To tell debugger to use the Ada RTL as the event detection
facility for succeeding commands, type the command "SET
EVENT_FACILITY ADA"
To see what the run time event facility is and what the defined
events are, type the command "SHOW EVENT_FACILITY".
To set an eventpoint for the Ada RTL to detect, use the commands
"SET BREAK/EVENT=keyword" or "SET TRACE/EVENT=keyword".
To display the eventpoints you have set, use the commands "SHOW
BREAK" or "SHOW TRACE".
To remove the eventpoints use the commands "CANCEL
BREAK/EVENT=keyword" or "CANCEL TRACE/EVENT=keyword"
Event parameters
Generally, the SET BREAK/EVENT and SET TRACE/EVENT commands can
take parameters which may be either address expressions or
language expressions. For Ada, the allowed parameters are task
names. Parameters are optional; omitting them implies a
"wildcard" as a parameter.
Examples
Initialize the debugger for Ada events:
DBG> SET EVENT_FACILITY ADA
Display the defined event names:
DBG> SHOW EVENT_FACILITY
event facility is ADA
Ada event names and definitions:
...
Set a breakpoint that is triggered whenever any exception is
handled by an Ada exception handler:
DBG> SET BREAK/EVENT=HANDLED
DBG> GO
...
break on Ada event HANDLED in %TASK 1
task %TASK 1 is about to handle an exception
the Ada exception handler is at: SCREEN_IO.%LINE 36
%ADA, Exception was copied at a "raise" or "accept".
Error PC=0000F60B
-ADA, Exception BAD_INPUT
-ADA, Exception raised prior to PC=00000670
Set two tracepoints that are triggered when either task GAMMA or
%TASK 1 respectively, make a transition to the RUN state. When
the event is triggered, display information about all the tasks
in the program:
DBG> SET TRACE/EVENT=RUN GAMMA, %TASK 1 DO (SHOW TASK/ALL)
DBG> GO
trace on ADA event RUN in %TASK 1
task %TASK 1 is about to run
task id pri hold state substate task object
* %TASK 1 7 RUN 81600
%TASK 2 7 READY SAMPLE.ALPHA
%TASK 3 7 READY SAMPLE.BETA
%TASK 4 7 READY SAMPLE.GAMMA
%TASK 5 7 READY SAMPLE.DELTA
trace on ADA event RUN in %TASK 4
task %TASK 4 is about to run
task id pri hold state substate task object
%TASK 1 7 SUSP Dependents 81600
%TASK 2 7 READY SAMPLE.ALPHA
%TASK 3 7 READY SAMPLE.BETA
* %TASK 4 7 RUN SAMPLE.GAMMA
%TASK 5 7 READY SAMPLE.DELTA
Set a breakpoint that is triggered whenever any task enters the
TERMINATED state. When the event is triggered, display
information about all the tasks in the program:
DBG> SET BREAK/EVENT=TERMINATED DO (SHOW TASK/ALL)
DBG> GO
break on ADA event TERMINATED in %TASK 5
task %TASK 5 is terminating normally.
task id pri hold state substate task object
%TASK 1 7 READY 81600
%TASK 2 7 READY SAMPLE.ALPHA
%TASK 3 7 READY SAMPLE.BETA
%TASK 4 7 READY SAMPLE.GAMMA
* %TASK 5 7 RUN Terminated SAMPLE.DELTA
DBG> GO
break on ADA event TERMINATED in %TASK 4
task %TASK 4 is terminating normally.
task id pri hold state substate task object
%TASK 1 7 READY 81600
%TASK 2 7 READY SAMPLE.ALPHA
%TASK 3 7 READY SAMPLE.BETA
* %TASK 4 7 RUN Terminated SAMPLE.GAMMA
%TASK 5 7 TERM Terminated SAMPLE.DELTA
Exceptions
The debugger provides built-in lexical functions to provide
information about the current exception. See the HELP text on
"Lexical %ADAEXC" for Ada specific exceptions and "Lexical %EXC"
for non-Ada-specific exceptions.
Also see "Languages ADA Events" for information on Ada-specific
exception events and "SET BREAK/EXCEPTION" for non-Ada-specific
exceptions events.
Multitasking
The debugger has a large number of commands to help you debug ADA
multitasking programs:
SHOW TASK -- lets you observe the state of the multitasking
system.
SET TASK -- lets you alter the state of the multitasking system.
SET BREAK/EVENT and SET TRACE/EVENT -- lets you set breakpoints
on tasking events of interest to you.
The HELP text for these commands provides detailed information.
Also see the support for tasking events described under "Language
Ada EVENTS".
Operators
Supported ADA Operators in Expressions
Kind Symbol Function
------ ------ --------
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix MOD Modulus
Infix REM Remainder
Infix ** Exponentiation
Prefix ABS Absolute value
Infix & Concatenation
Infix = Equal to
Infix /= Not equal to
Infix > Greater than
Infix >= Greater than or equal to
Infix < Less than
Infix <= Less than or equal to
Prefix NOT Logical NOT
Infix AND Logical AND
Infix OR Logical OR
Infix XOR Logical Exclusive OR
Names
Supported Constructs for ADA names
Symbol Construct
------ ---------
( ) Subscripting
. Record component selection
.ALL Pointer dereferencing
Overloading
If a function F is overloaded, then the debugger invents names of
the form F__1, F__2, and so on, to refer to the individual
instances of the overloaded function. You can find out about
these names as follows:
DBG> SET BREAK F
%DEBUG-W-NOUNIQUE, F is not unique due to overloading
DBG> SHOW SYMBOL F
Overloaded function F
Overloaded instance F__1
Overloaded instance F__2
DBG> SET BREAK F__1
The "SEARCH" command and the "EXAMINE/SOURCE" command may also be
useful in locating the source associated with the definitions of
F.
Packages
The debugger knows about ADA packages, and follows ADA scoping
rules (that is, takes into account WITH and USE clauses) when
looking up symbols.
Library packages are treated as modules that can be set and
cancelled individually. If the library package has a spec and a
body then each has its own module. If the package name is "P",
then the module for the package body has the name "P", while the
module with the package spec gets the name "P_". Set the module
"P_" to make visible the names declared in the spec. Set the
module "P" to make visible the names local to the body.
The debugger sometimes sets package spec modules for you, in
order to be able to correctly follow ADA's scoping rules during
symbol lookup. See the help on "SET MODULE/RELATED", "SHOW
MODULE/RELATED" for details.
Example:
package P is
...
end P;
package body P is
...
end P;
with P;
procedure M is
...
end M;
DBG> SHOW MODULE
module name symbols
M no
P no
P_ no
DBG> SET MODULE M
module name symbols
M yes
P no
P_ yes
Subunits
The debugger knows about ADA subunits. A subunit is treated as a
debugger module. If S is a subunit of M, then the module
containing S has the invented name M__S. It has a special
relationship with the parent module M: if you set the subunit
module M__S, then the parent module M is also set by the
debugger. This is done in order to make visible symbols that are
up-level referenced.
Example:
procedure M is
...
procedure S is separate;
...
end M;
separate(M);
procedure S is
begin
...
end;
DBG> SHOW MODULE
module name symbols
M no
M__S no
DBG> SET MODULE S
DBG> SHOW MODULE
module name symbols
M yes
M__S no
Tick Operators
Supported ADA "Tick Operators"
'CONSTRAINED
'FIRST
'LAST
'LENGTH
'POS
'PRED
'SIZE
'SUCC
'VAL
Example:
DBG> EVAL DAY'SUCC(MONDAY)
TUESDAY
BASIC
Debugger Support for Language BASIC
Additional information available:
OperatorsExpressionsData TypesNotes
Operators
Supported BASIC Operators in Language Expressions
Kind Symbol Function
------ ------ --------
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition, String concatenation
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix ** Exponentiation
Infix ^ Exponentiation
Infix = Equal to
Infix <> Not equal to
Infix >< Not equal to
Infix > Greater than
Infix >= Greater than or equal to
Infix => Greater than or equal to
Infix < Less than
Infix >= Less than or equal to
Infix => Less than or equal to
Prefix NOT Bit-wise NOT
Infix AND Bit-wise AND
Infix OR Bit-wise OR
Infix XOR Bit-wise exclusive OR
Infix IMP Bit-wise implication
Infix EQV Bit-wise equivalence
Expressions
Supported Constructs in Language and Address Expressions for BASIC
Symbol Construct
------ ---------
( ) Subscripting
:: Record component selection
Data Types
Supported BASIC Data Types
BYTE HFLOAT
WORD DECIMAL
LONG STRING
SINGLE RFA
DOUBLE Arrays
GFLOAT Records
Notes
Expressions that overflow in the BASIC language do not necessarily overflow when evaluated by the debugger. The debugger tries to compute a numerically correct result, even when the BASIC rules call for overflows. This difference is particularly likely to affect DECIMAL computations. BASIC constants of the forms [radix]"numeric-string"[type] (such as "12.34"GFLOAT) or n% (such as 25% for integer 25) are not supported in debugger expressions.
BLISS
Debugger Support for Language BLISS
Additional information available:
OperatorsExpressionsData Types
Operators
Supported BLISS Operators in Language Expressions
Kind Symbol Function
------ ------ --------
Prefix . Indirection
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix MOD Remainder
Infix ^ Left shift
Infix EQL Equal to
Infix EQLU Equal to
Infix EQLA Equal to
Infix NEQ Not equal to
Infix NEQU Not equal to
Infix NEQA Not equal to
Infix GTR Greater than
Infix GTRU Greater than unsigned
Infix GTRA Greater than unsigned
Infix GEQ Greater than or equal to
Infix GEQU Greater than or equal to unsigned
Infix GEQA Greater than or equal to unsigned
Infix LSS Less than
Infix LSSU Less than unsigned
Infix LSSA Less than unsigned
Infix LEQ Less than or equal to
Infix LEQU Less than or equal to unsigned
Infix LEQA Less than or equal to unsigned
Prefix NOT Bit-wise NOT
Infix AND Bit-wise AND
Infix OR Bit-wise OR
Infix XOR Bit-wise exclusive OR
Infix EQV Bit-wise equivalence
Expressions
Supported Constructs in Language and Address Expressions for BLISS
Symbol Construct
------ ---------
[ ] Subscripting
[fldname] Field selection
<p,s,e> Bit field selection
Data Types
Supported BLISS Data Types
BYTE BITVECTOR
WORD BLOCK
LONG BLOCKVECTOR
BYTE UNSIGNED REF VECTOR
WORD UNSIGNED REF BITVECTOR
LONG UNSIGNED REF BLOCK
VECTOR REF BLOCKVECTOR
CC
Debugger Support for Language C
Additional information available:
OperatorsExpressionsData TypesNotes
Operators
Supported C Operators in Language Expressions
Kind Symbol Function
------ ------ --------
Prefix * Indirection
Prefix & Address of
Prefix SIZEOF Size of
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix % Remainder
Infix << Left shift
Infix >> Right shift
Infix == Equal to
Infix != Not equal to
Infix > Greater than
Infix >= Greater than or equal to
Infix < Less than
Infix <= Less than or equal to
Prefix ~ Bit-wise NOT
Infix & Bit-wise AND
Infix | Bit-wise OR
Infix ^ Bit-wise exclusive OR
Prefix ! Logical NOT
Infix && Logical AND
Infix || Logical OR
Expressions
Supported Constructs in Language and Address Expressions for C
Symbol Construct
------ ---------
[ ] Subscripting
. Structure component selection
-> Pointer dereferencing
Data Types
Supported C Data Types
INT DOUBLE
SHORT INT ENUM
UNSIGNED INT STRUCT
UNSIGNED SHORT INT UNION
CHAR Pointers
UNSIGNED CHAR Arrays
FLOAT
Notes
Symbol names are case-sensitive for language C, meaning that upper-case and lower-case letters are treated as different characters. Since the exclamation point (!) is an operator in C, it cannot be used as the comment delimiter. When the language is set to C, the debugger instead accepts /* as the comment delimiter. The comment continues to the end of the current line. (A matching */ is neither needed nor recognized.) To permit debugger log files to be used as debugger input, the debugger still recognizes ! as a comment delimiter if it is the first non-blank character on a line. The debugger accepts the prefix asterisk (*) as an indirection operator in both C language expressions and debugger address expressions. In address expressions, prefix "*" is synonymous to prefix "." or "@" when the language is set to C. The debugger does not support any of the assignment operators in C (or any other language) in order to prevent unintended modifications to the program being debugged. Hence such operators as =, +=, -=, ++, and -- are not recognized. If you wish to alter the contents of a memory location, you must do so with an explicit DEPOSIT command.
COBOL
Debugger Support for Language COBOL
Additional information available:
OperatorsExpressionsData TypesNotes
Operators
Supported COBOL Operators in Language Expressions
Kind Symbol Function
------ ------ --------
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix ** Exponentiation
Infix = Equal to
Infix NOT = Not equal to
Infix > Greater than
Infix NOT < Greater than or equal to
Infix < Less than
Infix NOT > Less than or equal to
Infix NOT Logical NOT
Infix AND Logical AND
Infix OR Logical OR
Expressions
Supported Constructs in Language and Address Expressions for COBOL
Symbol Construct
------ ---------
( ) Subscripting
OF Record component selection
IN Record component selection
Data Types
Supported COBOL Data Types
COMP Records
COMP-1 Numeric Unsigned
COMP-2 Leading Separate Sign
COMP-3 Leading Overpunched Sign
INDEX Trailing Separate Sign
Alphanumeric Trailing Overpunched Sign
Notes
The debugger can show source text included in a program with the COPY or COPY REPLACING verb. However, when COPY REPLACING is used, the debugger always shows the original source text as it appeared before text replacement. In other words, the original source file is shown instead of the modified source text generated by the COPY REPLACING verb. The debugger cannot show the original source lines associated with the code for a REPORT section. You can see the DATA SECTION source lines associated with a REPORT, but no source lines are associated with the compiled code that generates the report. VAX COBOL may use quadword, longword, or word to represent a COMP data type.
DIBOL
Debugger Support for Language DIBOL
Additional information available:
OperatorsExpressionsData Types
Operators
Supported DIBOL Operators in Language Expressions
Kind Symbol Function
------ ------ --------
Prefix # Round
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix // Division with fractional result
Infix .EQ. Equal to
Infix .NE. Not equal to
Infix .GT. Greater than
Infix .GE. Greater than or equal to
Infix .LT. Less than
Infix .LE. Less than or equal to
Prefix .NOT. Logical NOT
Infix .AND. Logical AND
Infix .OR. Logical OR
Infix .XOR. Exclusive OR
Expressions
Supported Constructs in Language and Address Expressions for DIBOL
Symbol Construct
------ ---------
( ) Substring
[ ] Subscripting
. Record component selection
Data Types
Supported DIBOL Data Types
Byte integer (I1)
Word integer (I2)
Long integer (I4)
Packed decimal (Pn)
Implied packed decimal (Pn.m)
Zoned decimal (Dn)
Implied zoned decimal (Dn.m)
Ascii (An)
Arrays
Records
FORTRAN
Debugger Support for Language FORTRAN
Additional information available:
OperatorsExpressionsPredefined SymbolsData TypesNotes
Operators
Supported FORTRAN Operators in Language Expressions
Kind Symbol Function
------ ------ --------
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix ** Exponentiation
Infix // Concatenation
Infix .EQ. Equal to
Infix .NE. Not equal to
Infix .GT. Greater than
Infix .GE. Greater than or equal to
Infix .LT. Less than
Infix .LE. Less than or equal to
Prefix .NOT. Logical NOT
Infix .AND. Logical AND
Infix .OR. Logical OR
Infix .XOR. Exclusive OR
Infix .EQV. Equivalence
Infix .NEQV. Exclusive OR
Expressions
Supported Constructs in Language and Address Expressions for FORTRAN
Symbol Construct
------ ---------
( ) Subscripting
. Record component selection
Predefined Symbols
Supported FORTRAN Predefined Symbols
Symbol Meaning
------ -------
.TRUE. Logical True
.FALSE. Logical False
Data Types
Supported FORTRAN Data Types
LOGICAL*1 REAL*16
LOGICAL*2 COMPLEX*8
LOGICAL*4 COMPLEX*16
INTEGER*2 CHARACTER
INTEGER*4 Arrays
REAL*4 Records
REAL*8
Notes
Even though the VAX type codes for unsigned integers (BU, WU, LU) are used internally to describe the LOGICAL data types, the debugger (like the compiler) treats LOGICAL variables and values as being signed when used in language expressions. The debugger prints the numeric values of LOGICAL variables or expressions instead of TRUE or FALSE. Normally, only the low-order bit of a LOGICAL variable or value is significant (0 is FALSE and 1 is TRUE). However, VAX FORTRAN does allow all bits in a LOGICAL value to be manipulated and LOGICAL values can be used in integer expressions. For this reason, it is at times necessary to see the entire integer value of a LOGICAL variable or expression, and that is what the debugger shows. COMPLEX constants such as (1.0,2.0) are not supported in debugger expressions. Floating point numbers of type REAL*8 and COMPLEX*16 may be represented by D_Floating or G_Floating depending on compiler switches.
MACRO
Debugger Support for Language MACRO
Additional information available:
OperatorsExpressionsData Types
Operators
Supported Operators in Language Expressions
Language MACRO does not have expressions in the same sense as
high-level languages. Only assembly-time expressions and only a
limited set of operators are accepted. To permit the MACRO programmer
to use expressions at debug-time as freely as in other languages, the
debugger accepts a number of operators in MACRO language expressions
that are not found in MACRO itself. In particular, the debugger
accepts a complete set of comparison and boolean operators modeled
after BLISS. It also accepts the indirection operator and the normal
arithmetic operators.
Kind Symbol Function
------ ------ --------
Prefix @ Indirection
Prefix . Indirection
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix MOD Remainder
Infix @ Left shift
Infix EQL Equal to
Infix EQLU Equal to
Infix NEQ Not equal to
Infix NEQU Not equal to
Infix GTR Greater than
Infix GTRU Greater than unsigned
Infix GEQ Greater than or equal to
Infix GEQU Greater than or equal to unsigned
Infix LSS Less than
Infix LSSU Less than unsigned
Infix LEQ Less than or equal to
Infix LEQU Less than or equal to unsigned
Prefix NOT Bit-wise NOT
Infix AND Bit-wise AND
Infix OR Bit-wise OR
Infix XOR Bit-wise exclusive OR
Infix EQV Bit-wise equivalence
Expressions
Supported Constructs in Language and Address Expressions for MACRO
Symbol Construct
------ ---------
<p,s,e> Bitfield selection as in BLISS
[ ] Subscripting
The DST information generated by the MACRO assembler treats a label
that is followed by an assembler directive for storage allocation as
an array variable whose name is the label. This enables you to use
the array syntax of a high-level language when examining or
manipulating such data.
In the following example of MACRO source code, the label LAB4
designates hexadecimal data stored in four words:
LAB4: .WORD ^X3F,5[2],^X3C
The debugger treats LAB4 as an array variable. For example, the next
command displays the value stored in each element (word):
DBG> EXAMINE LAB4
.MAIN.\MAIN\LAB4
[0]: 003F
[1]: 0005
[2]: 0005
[3]: 003C
DBG>
The next command displays the value stored in the fourth word (the
first word is indexed as element "0"):
DBG> EXAMINE LAB4[3]
.MAIN.\MAIN\LAB4[3]: 03C
DBG>
Data Types
Supported MACRO Data Types
Byte Unsigned (BU)
Word Unsigned (WU)
Longword Unsigned (LU)
Byte Integer (B)
Word Integer (W)
Longword Integer (L)
PASCAL
Debugger Support for Language PASCAL
Additional information available:
OperatorsExpressionsPredefined SymbolsData TypesNotes
Operators
Supported PASCAL Operators in Language Expressions
Kind Symbol Function
------ ------ --------
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition, concatenation
Infix - Subtraction
Infix * Multiplication
Infix / Real division
Infix DIV Integer division
Infix MOD Modulus
Infix REM Remainder
Infix ** Exponentiation
Infix IN Set membership
Infix = Equal to
Infix <> Not equal to
Infix > Greater than
Infix >= Greater than or equal to
Infix < Less than
Infix <= Less than or equal to
Prefix NOT Logical NOT
Infix AND Logical AND
Infix OR Logical OR
Expressions
Supported Constructs in Language and Address Expressions for PASCAL
Symbol Construct
------ ---------
[ ] Subscripting
. Record component selection
^ Pointer dereferencing
Predefined Symbols
Supported PASCAL Predefined Symbols and Functions
Symbol Meaning
------ -------
TRUE Boolean True
FALSE Boolean False
NIL Nil pointer
Data Types
Supported PASCAL Data Types
INTEGER CHAR Subranges
UNSIGNED VARYING Typed
SINGLE SET Arrays
DOUBLE FILE Records
QUADRUPLE Enumerations Variant
BOOLEAN
Notes
The debugger accepts PASCAL set constants such as [1,2,5,8..10] or [RED, BLUE] in PASCAL language expressions. VAX PASCAL may use longword, word, or byte to represent INTEGER or UNSIGNED data types. DOUBLE precision floating point numbers may be represented by D_Floating or G_Floating depending on compiler switches.
PLI
Debugger Support for Language PL/I
Additional information available:
OperatorsExpressionsData TypesNotes
Operators
Supported PL/I Operators in Language Expressions
Kind Symbol Function
------ ------ --------
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix ** Exponentiation
Infix || Concatenation
Infix = Equal to
Infix ^= Not equal to
Infix > Greater than
Infix >= Greater than or equal to
Infix ^< Greater than or equal to
Infix < Less than
Infix <= Less than or equal to
Infix ^> Less than or equal to
Prefix ^ Bit-wise NOT
Infix & Bit-wise AND
Infix | Bit-wise OR
Expressions
Supported Constructs in Language and Address Expressions for PL/I
Symbol Construct
------ ---------
( ) Subscripting
. Structure component selection
-> Pointer dereferencing
Data Types
Supported PL/I Data Types
FIXED BINARY CHARACTER VARYING
FIXED DECIMAL FILE
FLOAT BINARY Labels
FLOAT DECIMAL Pointers
BIT Arrays
CHARACTER Structures
Notes
The debugger treats all numeric constants of the form n or n.n in PL/I language expressions as packed decimal constants, not integer or floating-point constants, in order to conform to PL/I language rules. The internal representation of 10 is therefore 0C01 hexadecimal, not 0A hexadecimal. You can enter floating-point constants using the syntax nEn or n.nEn. There is no PL/I syntax for entering constants whose internal representation is Longword Integer. This limitation is not normally significant when debugging since the debugger supports the PL/I type conversion rules. However, it is possible to enter integer constants by using the debugger's %HEX, %OCT, and %BIN operators. VAX PL/I may use F_Floating, D_Floating, G_Floating, or H_Floating to represent FLOAT BINARY or FLOAT DECIMAL data types depending on compiler switches.
RPG
Debugger Support for Language RPG
Additional information available:
OperatorsExpressionsData TypesNotes
Operators
Supported RPG Operators in Language Expressions
Kind Symbol Function
------ ------ --------
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix = Equal to
Infix NOT = Not equal to
Infix > Greater than
Infix NOT < Greater than or equal to
Infix < Less than
Infix NOT > Less than or equal to
Prefix NOT Logical NOT
Infix AND Logical AND
Infix OR Logical OR
Expressions
Supported Constructs in Language and Address Expressions for RPG
Symbol Construct
------ ---------
( ) Subscripting
Data Types
Supported RPG Data Types
Longword
Word
Packed Decimal
Character
Overpunched Decimal
Arrays
Tables
Notes
The debugger supports access to all RPG indicators and labels used in the current program. You can thus examine labels such as *DETL and indicators such as *INLR and *IN01 through *IN99.
SCAN
Debugger Support for Language SCAN
Additional information available:
EventsOperatorsExpressionsData Types
Events
The debugger allows you to set breakpoints and tracepoints (known
generically as "eventpoints") on certain types of events
occurring during the execution of your program which are defined
and detected by the SCAN RTL.
SCAN defines several events. By setting breaks or traces on
these events, you can observe the picture matching process. To
see what the defined events are for SCAN, type the command "SHOW
EVENTS".
To set an eventpoint for the SCAN RTL to detect, use the commands
"SET BREAK/EVENT=keyword" or "SET TRACE/EVENT=keyword".
To display the eventpoints you have set, use the commands "SHOW
BREAK" or "SHOW TRACE".
To remove the eventpoints use the commands "CANCEL
BREAK/EVENT=keyword" or "CANCEL TRACE/EVENT=keyword"
Where "keyword" is one of the defined events listed by the "SHOW
EVENTS" command. SCAN events may be abbreviated to 3 or more
characters.
Additional information available:
Examples
Set two tracepoints that are triggered when a SCAN Trigger or Syntax
Macro is activated. Set a break point that is triggered whenever a
SCAN token is built.
DBG>SET TRACE/EVENT=TRIGGER
DBG>SET TRACE/EVENT=SYNTAX
DBG>SET BREAK/EVENT=TOKEN
The following example illustrates the output from the program
execution after setting the above eventpoints.
DBG>Go
trace on event TRIGGER_MACRO
Trigger Macro EXPRESSION_TEST\PRINT_STMT Activated
break on event TOKEN
Token built: PRINT Triggerable Length:5 Line:1 Column:1
Token text: 'print'
DBG>Go
trace on event SYNTAX_MACRO
Syntax Macro EXPRESSION_TEST\EXP Activated
Operators
Supported Operators in Language Expressions for SCAN
Kind Symbol Function
------ ------ --------
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix & Concatenation
Infix = Equals
Infix <> Not equals
Infix > Greater than
Infix >= Greater than or equal to
Infix < Less than
Infix <= Less than or equal to
Prefix NOT Complement
Infix AND Intersection
Infix OR Union
Infix XOR Exclusive OR
Expressions
Supported Constructs in Language and Address Expressions for SCAN
Symbol Construct
------ ---------
( ) Subscripting
. Record component selection
-> Pointer dereferencing
Data Types
Supported SCAN Data Types
BOOLEAN
INTEGER
POINTER
STRING
TREE
TREEPTR
RECORD
OVERLAY
There is no specific support for the following datatypes: FILE,
TOKEN, GROUP, SET. Examining a FILL variable displays the
contents of the specified variable displayed as a string by
default, and so may have little meaning. If the characteristics
of the fill are known, then the appropriate qualifier (/HEX...)
applied to the command produces a more meaningful display.
Examining SCAN TREE and TREEPTR variables:
DBG>EXAMINE tree_variable( [ subscript ],...)
- To dump an entire SCAN tree or subtree
DBG>EXAMINE treeptr_variable
- To dump the contents of a SCAN treeptr
DBG>EXAMINE treeptr_variable->
- To dump an entire SCAN subtree
DEPOSIT is not supported for SCAN TREE variables at this time.
You may set breakpoints on any SCAN label, line number, MACRO, or
PROCEDURE.
UNKNOWN
Debugger Support for Language UNKNOWN
Additional information available:
OperatorsExpressionsData TypesNotes
Operators
Supported Operators in Language Expressions for UNKNOWN
Kind Symbol Function
------ ------ --------
Prefix + Unary plus
Prefix - Unary minus (negation)
Infix + Addition
Infix - Subtraction
Infix * Multiplication
Infix / Division
Infix ** Exponentiation
Infix & Concatenation
Infix // Concatenation
Infix = Equal to
Infix <> Not equal to
Infix /= Not equal to
Infix > Greater than
Infix >= Greater than or equal to
Infix < Less than
Infix <= Less than or equal to
Infix EQL Equal to
Infix NEQ Not equal to
Infix GTR Greater than
Infix GEQ Greater than or equal to
Infix LSS Less than
Infix LEQ Less than or equal to
Prefix NOT Logical NOT
Infix AND Logical AND
Infix OR Logical OR
Infix XOR Exclusive OR
Infix EQV Equivalence
Expressions
Supported Constructs in Language and Address Expressions for UNKNOWN
Symbol Construct
------ ---------
[ ] Subscripting
( ) Subscripting
. Record component selection
^ Pointer dereferencing
Data Types
Supported UNKNOWN Data Types When the language is set to UNKNOWN, the debugger understands all data types accepted by other languages except a few very language-specific types, such a picture types and file types. In UNKNOWN language expressions, the debugger accepts most scalar VAX Standard data types.
Notes
For language UNKNOWN, the debugger accepts the dot-notation for record component selection. If C is a component of a record B which in turn is a component of a record A, C can be referenced as "A.B.C". Subscripts can be attached to any array components; if B is an array, for instance, C may be referenced as "A.B[2,3].C". For language UNKNOWN, the debugger accepts both round and square subscript parentheses. Hence A[2,3] and A(2,3) are equivalent.
Lexicals
The debugger lexical functions provide control over the scanning
of language expressions and offer additional capability in
specifying entities in your program. They are logically grouped
here according to their purpose.
%R0 through %R11, %AP (R12), %FP (R13), %SP (R14), %PC (R15), and
%PSL -- used to specify the VAX registers.
%LANGUAGE -- used to specify the current language.
%NAME -- used to construct identifiers.
%PARCNT -- used in command procedures to count parameters passed.
%BIN, %DEC, %HEX, and %OCT, -- used to control radix.
%CURLOC, %NEXTLOC, %PREVLOC, %CURVAL -- used to specify
consecutive program locations and the current value of an entity.
%LABEL and %LINE -- used to specify numeric labels and line
numbers.
%PAGE and %WIDTH -- used to specify the screen height and width.
%CURDISP, %CURSCROLL, %NEXTDISP, %NEXTINST, %NEXTOUTPUT,
%NEXTSCROLL, and %NEXTSOURCE -- used to specify screen-mode
displays.
%SOURCE_SCOPE -- used to specify the first scope down the call
stack for which source lines are available for display in screen
mode.
%ADAEXC_NAME, %EXC_FACILITY, %EXC_NAME, %EXC_NUM, and
%EXC_SEVERITY -- used to provide information about the current
exception.
%PROCESS_NAME, %PROCESS_PID, %PROCESS_NUMBER, %NEXT_PROCESS,
%PREVIOUS_PROCESS, and %VISIBLE_PROCESS -- used to specify
processes in multiprocess programs.
%ACTIVE_TASK, %CALLER_TASK, %NEXT_TASK, %TASK, and %VISIBLE_TASK
-- used to specify tasks in ADA tasking programs.
Additional information available:
%AP%FP%SP%PC%LANGUAGE%NAME
%PARCNT%BIN%DEC%HEX%OCT%CURLOC%NEXTLOC
%PREVLOC%CURVAL%LABEL%LINE%PAGE%WIDTH%CURDISP
%CURSCROLL%NEXTDISP%NEXTINST%NEXTOUTPUT
%NEXTSCROLL%NEXTSOURCE%SOURCE_SCOPE%PROCESS_NAME
%PROCESS_PID%PROCESS_NUMBER%NEXT_PROCESS%PREVIOUS_PROCESS
%VISIBLE_PROCESS%ADAEXC_NAME%EXC_FACILITY%EXC_NAME
%EXC_NUM%EXC_SEVERITY%ACTIVE_TASK%CALLER_TASK
%NEXT_TASK%TASK%VISIBLE_TASK
%Rn
%R0 through %R11 specify the VAX general purpose registers R0
through R11. For example:
DBG> DEPOSIT %R1 = 23
%AP
%AP specifies the VAX "argument pointer" register (R12).
%FP
%FP specifies the VAX "frame pointer" register (R13).
%SP
%SP specifies the VAX "stack pointer" register (R14).
%PC
%PC specifies the VAX "program counter" register (R15). The PC
contains the address of the next instruction to be executed by
the processor. For example:
DBG> EXAMINE %PC ! Display the value contained in the PC
MOD3\%PC: 1554 ! (the address of the next instruction to execute)
DBG> EXAMINE .%PC !Display the value at the address contained in the PC
MOD3\%LINE 12: MOVL B^12(R11),R1 !(the next instruction to execute)
%LANGUAGE
%LANGUAGE specifies the current language. The current language
is the language last established with the SET LANGUAGE command.
If no SET LANGUAGE command was entered, the current language is,
by default, the language of the module containing the main
program (image transfer address). For example:
DBG> EVALUATE %LANGUAGE
'FORTRAN'
DBG> SET LANGUAGE ADA
DBG> EVALUATE %LANGUAGE
"ADA"
%NAME
%NAME allows identifiers to be constructed which are not
ordinarily legal in the current language.
Format:
%NAME id-char-string
%NAME 'any-char-string'
Examples:
EX %NAME 12 ! Allows examination of variable with name '12'
EX %NAME 'P.AAA' ! Allows examination of generated label P.AAA
%PARCNT
The %PARCNT symbol specifies the number of actual parameters to
the current command procedure. For example, suppose the command
file ABC is invoked with the command @ABC 111,222,333. Inside
ABC, %PARCNT then has the value 3 because there are three
parameters on this particular call to ABC. %PARCNT is used in
command procedures that can take a variable number of actual
parameters. %PARCNT can only be used inside command files; it is
not defined when commands are entered from the terminal.
Sample Format:
EVAL %PARCNT
FOR I = 1 TO %PARCNT DO (DECLARE X:VALUE; EVAL X)
%BIN
Specifies that the following numeric literal (or all numeric
literals in the following parenthesized expression) be
interpreted in binary radix.
Sample Format:
DBG> EVALUATE/DEC %BIN 10
2
DBG> EVALUATE/DEC %BIN (10 + 10)
4
%DEC
Specifies that the following numeric literal (or all numeric
literals in the following parenthesized expression) be
interpreted in decimal radix.
Sample Format:
DBG> EVALUATE/HEX %DEC 10
0A
DBG> EVALUATE/HEX %DEC (10 + 10)
14
%HEX
Specifies that the following numeric literal (or all numeric
literals in the following parenthesized expression) be
interpreted in hexadecimal radix.
Sample Format:
DBG> EVALUATE/DEC %HEX 10
16
DBG> EVALUATE/DEC %HEX (10 + 10)
32
%OCT
Specifies that the following numeric literal (or all numeric
literals in the following parenthesized expression) be
interpreted in octal radix.
Sample Format:
DBG> EVALUATE/DEC %OCT 10
8
DBG> EVALUATE/DEC %OCT (10 + 10)
16
%CURLOC
Specifies the current logical entity -- that is, the program
location last referenced by an EXAMINE or DEPOSIT command. The
period character "." can also be used for this purpose.
Sample Format:
DBG> EXAMINE RADIUS
CIRCLE\RADIUS: 0.0000000E+00
DBG> DEPOSIT %CURLOC = 1 ! Set RADIUS to 1
DBG> DEPOSIT . = 2 ! Set RADIUS to 2
%NEXTLOC
Specifies the logical successor of the current entity -- that is,
the program location that logically follows the location last
referenced by an EXAMINE or DEPOSIT command. Note that the
EXAMINE command without a parameter is equivalent to EXAMINE
%NEXTLOC.
Sample Format:
DBG> EXAMINE PRIMES(4)
SIEVE\PRIMES(4): 7
DBG> EXAMINE %NEXTLOC
SIEVE\PRIMES(5): 11
DBG> EXAMINE ! Equivalent to EXAMINE %NEXTLOC
SIEVE\PRIMES(6): 13
%PREVLOC
Specifies the logical predecessor of the current entity -- That
is, the program location that logically precedes the location
last referenced by an EXAMINE or DEPOSIT command. The circumflex
character "^" can also be used for this purpose.
Sample Format:
DBG> EXAMINE PRIMES(6)
SIEVE\PRIMES(6): 13
DBG> EXAMINE %PREVLOC
SIEVE\PRIMES(5): 11
DBG> EXAMINE ^
SIEVE\PRIMES(4): 7
%CURVAL
Specifies the value last displayed by an EVALUATE or EXAMINE
command, or deposited by a DEPOSIT command. The backslash
character "\" can also be used for this purpose.
Sample Format:
DBG> EXAMINE RADIUS
CIRCLE\RADIUS: 0.0000000E+00
DBG> EVALUATE %CURVAL
0.0000000E+00
%LABEL
"%LABEL n" is the debugger syntax for referring to label n in
your program. This is intended for languages like FORTRAN which
have numeric program labels. You can qualify the label with a
pathname specifying the containing module. For example:
SET BREAK MODULENAME\%LABEL 10
The "old" syntax of "%LABEL MODULENAME\10" is no longer accepted.
%LINE
"%LINE n" is the debugger syntax for referring to line n in your
program. You can qualify the line number with a pathname
specifying the containing module. For example:
SET BREAK MODULENAME\%LINE 10
The "old" syntax of "%LINE MODULENAME\10" is no longer accepted.
%PAGE
Specifies the current height of the screen, in lines, as used by
the debbuger. For example, the following command defines a
screen mode window named MIDDLE that occupies a region around the
middle of the screen:
DBG> SET WINDOW MIDDLE AT (%PAGE/4,%PAGE/2,%WIDTH/4,%WIDTH/2)
%WIDTH
Specifies the current width of the screen, in columns, as used by
the debugger. For example, the following command defines a
screen mode window named MIDDLE that occupies a region around the
middle of the screen:
DBG> SET WINDOW MIDDLE AT (%PAGE/4,%PAGE/2,%WIDTH/4,%WIDTH/2)
%CURDISP
Specifies the current display (screen mode). This is the display
most recently referenced with a DISPLAY or SET DISPLAY command--
the least occluded display. For example:
DBG> SELECT/SCROLL %CURDISP
%CURSCROLL
Specifies the current (screen mode) scrolling display. This is
the default display for the SCROLL, MOVE, and EXPAND commands, as
well as for the associated keypad keys (2, 4, 6, and 8). For
example:
DBG> EXPAND/DOWN:5 %CURSCROLL
%NEXTDISP
Specifies the next display after the current display in the
screen-mode display list. The next display is the display that
follows the topmost display. Because the display list is
circular, this is the display at the bottom of the
pasteboard--the most occluded display. For example:
DBG> DISPLAY/POP %NEXTDISP
%NEXTINST
Specifies the next instruction display after the current
instruction display in the screen-mode display list. The current
instruction display is the display that receives the output from
EXAMINE/INSTRUCTION commands. For example:
DBG> DISPLAY/REMOVE %NEXTINST
%NEXTOUTPUT
Specifies the next output display after the current output
display in the screen-mode display list. An output display
receives debugger output that is not already directed to another
display. For example:
DBG> EXTRACT %NEXTOUTPUT OUT4.TXT
%NEXTSCROLL
Specifies the next display after the current scrolling display in
the screen-mode display list. For example:
DBG> SELECT/SCROLL %NEXTSCROLL
%NEXTSOURCE
Specifies the next source display after the current source
display in the screen-mode display list. The current source
display is the display which receives the output from TYPE and
EXAMINE/SOURCE commands. For example:
DBG> SELECT/SOURCE %NEXTSOURCE
%SOURCE_SCOPE
Specifies the first scope down the call stack for which source
lines are available for display in screen mode. This symbol is
used in the definition of the predefined screen-mode source
display SRC:
DBG> SET DISPLAY SRC AT H1 SOURCE (EXAMINE/SOURCE .%SOURCE_SCOPE\%PC)
%PROCESS_NAME
Note: Applies to a multiprocess debugging configuration (when
DBG$PROCESS has the value MULTIPROCESS).
When specifying a VMS process name in a debugger command string,
you can optionally precede the name with the symbol
%PROCESS_NAME. For example:
DBG_2> EXIT %PROCESS_NAME JONES_4
Type HELP Multiprocess Specifying_Processes for more information.
%PROCESS_PID
Note: Applies to a multiprocess debugging configuration (when
DBG$PROCESS has the value MULTIPROCESS).
When specifying a VMS process identification number (PID) in a
debugger command string, you must precede the PID with the symbol
%PROCESS_PID. For example:
DBG_2> CONNECT %PROCESS_PID 258001B6
Type HELP Multiprocess Specifying_Processes for more information.
%PROCESS_NUMBER
Note: Applies to a multiprocess debugging configuration (when
DBG$PROCESS has the value MULTIPROCESS).
When specifying a debugger-assigned process number in a debugger
command string, you must precede the number with the symbol
%PROCESS_NUMBER (or the abbreviation %PROC). For example:
DBG_2> SHOW PROCESS %PROC 3
Type HELP Multiprocess Specifying_Processes for more information.
%NEXT_PROCESS
Note: Applies to a multiprocess debugging configuration (when
DBG$PROCESS has the value MULTIPROCESS).
%NEXT_PROCESS specifies the next process in the debugger's
process list after the visible process. For example:
DBG_3> SET PROCESS/HOLD %NEXT_PROCESS
Type HELP Multiprocess Specifying_Processes for more information.
%PREVIOUS_PROCESS
Note: Applies to a multiprocess debugging configuration (when
DBG$PROCESS has the value MULTIPROCESS).
%PREVIOUS_PROCESS specifies the previous process in the
debugger's process list before the visible process. For example:
DBG_3> SHOW PROCESS/FULL %PREVIOUS_PROCESS
Type HELP Multiprocess Specifying_Processes for more information.
%VISIBLE_PROCESS
Note: Applies to a multiprocess debugging configuration (when
DBG$PROCESS has the value MULTIPROCESS). Type HELP Multiprocess
Specifying_Processes for more information.
%VISIBLE_PROCESS specifies the visible process. This is the
process whose stack, register set, and images are the current
context for looking up symbols, register values, routine calls,
breakpoints, and so on. For example:
DBG_2> DO/PROCESS=(%VISIBLE_PROCESS,%NEXT_PROCESS) (EXAMINE X)
Type HELP Multiprocess Specifying_Processes for more information.
%ADAEXC_NAME
"%ADAEXC_NAME is a special form of %EXC_NAME for ADA programs.
In ADA, an exception can be raised with syntax such as "raise
XXX;". In this case, the exception name in the VMS sense is just
"EXCEPTION", and that is what %EXC_NAME returns. The ADA
exception name ("XXX") is returned by %ADAEXC_NAME.
Example:
DBG> SET BREAK/EXCEPTION WHEN (%ADAEXC_NAME = "XXX")
%EXC_FACILITY
"%EXC_FACILITY" gives you the facility of the current exception.
This provides a way of qualifying exception breaks.
Example:
DBG> EVAL %EXC_FACILITY
"SYSTEM"
DBG> SET BREAK/EXC WHEN (%EXC_FAC = "SYSTEM")
%EXC_NAME
"%EXC_NAME" gives you the name of the current exception. This
provides a way of qualifying exception breaks.
Example:
DBG> EVAL %EXC_NAME
"FLTDIV_F"
DBG> SET BREAK/EXC WHEN (%EXC_NAME = "FLTDIV_F")
%EXC_NUM
"%EXC_NUM" gives you the current exception number. This provides
a way of qualifying exception breaks.
Example:
DBG> EVAL %EXC_NUM
12
DBG> EVAL/COND %EXC_NUM
%SYSTEM-F-ACCVIO, access violation at PC !XL, virtual address !XL
DBG> SET BREAK/EXC WHEN (%EXC_NUM = 12)
%EXC_SEVERITY
"%EXC_SEVERITY" gives you the severity code of the current
exception. This provides a way of qualifying exception breaks.
Example:
DBG> EVAL %EXC_SEVERITY
"F"
DBG> SET BREAK/EXC WHEN (%EXC_SEV = "F")
%ACTIVE_TASK
Note: Applies only to ADA tasking programs.
"%ACTIVE_TASK" gives you the currently active task (the one that
was running when the debugger last took control). See the
command "SET TASK/ACTIVE".
Example:
DBG> EVALUATE %ACTIVE_TASK
%TASK 2
%CALLER_TASK
Note: Applies only to ADA tasking programs.
"%CALLER_TASK" gives you the task which is the entry caller of
the active task during a task rendezvous.
If the active task (%ACTIVE_TASK) is not currently executing an
accept statement (that is, a rendezvous is not in progress),
%CALLER_TASK returns %TASK 0.
Example:
The following command sets a breakpoint within an accept
statement. The breakpoint is triggered only when %TASK 3 is the
task making the entry call of the rendezvous.
DBG> TYPE 51:53
module SAMPLE
51: accept RENDEZVOUS do
52: PUT_LINE("Beginning the rendezvous");
53: end RENDEZVOUS;
DBG> SET BREAK %LINE 52 WHEN (%CALLER_TASK = %TASK 3)
%NEXT_TASK
Note: Applies only to ADA tasking programs.
"%NEXT_TASK" gives you the "next" task after the one that is
currently visible (%VISIBLE_TASK). "Next" in this context is
just an internal ordering that cycles through all the tasks.
This lets you set up command procedures that cycle through all
tasks.
Example:
DBG> WHILE %NEXT NEQ %ACTIVE DO -
(SET TASK %NEXT; SHOW CALLS)
%TASK
Note: Applies only to ADA tasking programs.
"%TASK n" (where "n" is a positive decimal integer) is the
debugger syntax for referring to an ADA task by its task ID. The
task ID is a unique number that is associated with a task at the
time the task is created. The task number "n" can be obtained
using the "SHOW TASK/ALL" command or by examining ADA task
objects.
Example:
DBG> EXAMINE T1
T1: %TASK 2
DBG> SET TASK %TASK 2
%VISIBLE_TASK
Note: Applies only to ADA tasking programs.
"%VISIBLE_TASK" gives you the task that the debugger is using to
do symbol lookups. It is the default task assumed by debugging
commands when you do not (or cannot) specify a task. For
example, the debugger command EXAMINE %R0 displays register 0 of
the visible task.
This is normally the same as %ACTIVE_TASK but can be changed
using the SET TASK command.
Example:
DBG> SET TASK %TASK 2
DBG> EVALUATE %VISIBLE
%TASK 2
Logical Names
Additional information available:
DBG$INITDBG$INPUTDBG$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
The value of the logical name DBG$INPUT determines the debugger
input device. By default, this is SYS$INPUT.
DBG$OUTPUT
The value of the logical name DBG$OUTPUT determines the debugger
output device. By default, this is SYS$OUTPUT.
DBG$PROCESS
The value of the logical name DBG$PROCESS determines the
debugging configuration as follows:
DBG$PROCESS: Configuration:
Undefined or DEFAULT Default
MULTIPROCESS Multiprocess
Use the default configuration to debug programs that normally run
(without the debugger) in only one process. Use the multiprocess
configuration to debug programs that normally run in more than
one process.
When defining DBG$PROCESS for a multiprocess configuration, make
the definition job wide. This ensures that any processes that
are in the same job tree as the program being debugged (for
example, processes spawned by the program) can be controlled from
the same debugging session.
Type HELP Debugging_Configurations and HELP Multiprocess for more
information
Additional information available:
Examples
1 $ DEFINE/JOB DBG$PROCESS MULTIPROCESS
$ RUN PROG1
...
DBG_1>
In this example, the DEFINE/JOB command establishes the
multiprocess debugging configuration. This is demonstrated by
the process-specific prompt suffix, "_1", which is displayed
initially when the debugger is invoked with the RUN command. The
prompt suffix indicates that execution is suspended in process 1,
the first process that was brought under debugger control.
Process 1 is currently the visible process -- the context for
executing process-specific commands like STEP, EXAMINE, and so
on.
2 $ DEFINE DBG$PROCESS DEFAULT
$ RUN PROG1
...
DBG>
In this example, the DEFINE command establishes the default
debugging configuration. This is demonstrated by the DBG>
prompt, which is displayed when the debugger is invoked with the
RUN command.
Messages
This section contains information on the messages you may see.
Format:
MESSAGE keyword
where "keyword" is the abbreviation (IDENT) of the message. For
example, if you received the message
%DEBUG-I-INITIAL, language is BASIC, module set to TEST
and wanted to know more about it, you could enter the command
DBG> HELP MESSAGE INITIAL
and you would see information about the INITIAL message.
Additional information available:
ABORTEDABSDATSYNACCADDCOMACTIVATING
ADDRANCOVADDRESSMODEADDRREGALLOBNDSAMBFIELD
AMBIGQUALAMPERSANDASTWASDISABLEDASTWASENABLED
ATTACHEDATTREQREFBADDESCRBADDISCVALBADDST
BADEVNPARBADEXHBADFRAMEBADHANDLEBADOPCODE
BADPARAMBADSCOPEBADSIGARGBADSTACKBADSTARTPC
BADSTATUSBADTAGVALBADTARGETBADUSREVNT
BADWATCHBASVARNOTSETBITRANGEBUFFEROVF
BWLGISMUSCANTACCESSMAINCANTCREATEMAINCANTGETFID
CANTINTPROCANTOPNIMGCIREXLSTCMDNOTONE
CMDSYNERRCMPNOTFNDCONFLICTCONFROMEXC
CONSTRCOMPCPOSTDECRCPOSTINCRCPREDECR
CPREINCRCRMPSCFAILCVTNEGUNSDBGERRDBGSTOPPED
DECLARERRDECOVFDECROPRANDDEFKEYDEFKEYERR
DELBREAKDELKEYDELKEYERRDELTIMTOODELTRACE
DESCNOTSETDISABLEASTDISNOTSELDISPEXISTS
DISPRLENSIZDIVBYZERODSTERRGDSTNESDEP
DYNIMGSETDYNMODSETEDITDISVEREDITERROR
EDITFILEEDITNOFILEEDITREVVERENABLEAST
ENTRYMASKENUMRANGEERRACTIMGERRASSIGN
ERRCLSFILEERRCRELNMERRDEASSIGNERRFAO
ERRGETDVIERRGETEFERRINSDECERRINVEDIT
ERRORERRORLIMITERROR_BLOCKERRQIOWERRSMG
ERRSYSSERVERRUSREVNTEXARANGEEXCBREREP
EXCDURCALEXITARGEXITERREXITSTATUSEXPMEMPOOL
FILEUNALFLTOVFGETJPIHEIGHTDIFFIDENTLONG
IFIXUNDIFLTUNDIINTOVFILLADDCONILLASTERILLDEFNAM
ILLENUMVALILLEVNSTRILLFILPTRILLFLOATILLLENGTHILLOFFSET
ILLPACSIZILLPATH1ILLPATH2ILLPATHELEMILLPOSFLDILLQUALIF
ILLRANGEILLSETCONILLSIGEXTILLSIZFLDILLSUBLENILLSUBSTRILLTYPE
INCDSTNESINCOMPOPRINCOMPPTRINCOMQUAL
INCOMTARGETINCOMVERSIONINDBASEQLINITIAL
INPREADERRINSVIRMEMINTERRINTERRUPTED
INTMEMERRINTOVFINUMTRUNCINVADDRTKN
INVARGLISINVARRDIMINVARRDSCINVAVSCODE
INVCHARINVCHRCONINVDESCINVDIGBININVDIGDECINVDIGHEX
INVDIGOCTINVDIRNAMINVDMTPTRINVDSPSIZ
INVDSTRECINVDSTTYPCODEINVEXPRINVFIXDSTINVFLDREF
INVGSTRECINVGSTTYPINVINDIRECTINVLANGCODE
INVLENGTHINVMARINVNOSPECTKNINVNUMBER
INVNUMSRCINVNUMSTRINVOPADDRINVOPSYM
INVPAGEINVPRCSYNINVPRIORINVRANSPECINVSELDIS
INVSRCLININVTIMSLIINVTSCODEINVVALTKNINVWIDTH
INVWINPARIRFAOVFISTRTRUITMNOTAVAITMTRUNC
IVALOUTBNDSIVPRCLOGKERFUNCNYILASTCHANCE
LINEINFOLONGSTRINGLOOPINCRLOOPVARLOWBNDOPT
MATQUOMISMAXSTRLENMISCLOSUBMISINVNUM
MISINVOPERMISMODBEGMISMODENDMISOPEMIS
MODUSCOPEMPARENREQMPCOMMANDNAMSTRMIS
NAMTOOLONGNEEDMORENEEDPARENNOACCESSR
NOACCESSWNOADDRREGNOALTERSPNOATTACH
NOBREAGGRNOBREAKATNOBREAKSNOCALLSNOCANMAIN
NOCLINOCONNECTNOCURLOCNODELIMTRNODEPDEBUG
NODIRLISMNODIRLISTNOELABBODYNOELABSPECNOEND
NOEPTSPECNOEVALEXPRNOEVENTFACNOEXCBRE
NOEXHNDNOFIELDNOFREENOGLOBALSNOINPAVAIL
NOINSTRANNOKEYDEFNOKEYPADNOLASTVALNOLINXXX
NOLISTNOLOCALSNOMARKCHNGNOMATCHNOMORENONEXPR
NONEXPRCNONUMSCOPENONXTLINNOOCCLDISPNOOUTAVAIL
NOPACKMEMBODYNOPACKMEMSPECNOPREDNOPROMPT
NORECSYMNORMALNORSTBLDNOSAVPROGNOSCOPENOSCRDEV
NOSCRMODENOSCROLLNOSCROLLDISPNOSETTERM
NOSPAWNNOSPAWNINOSRCHSTRNOSRCLINNOSTEPGONOSUCC
NOSUCHBPTNOSUCHDISPNOSUCHELPNOSUCHIMG
NOSUCHMODUNOSUCHPACKNOSUCHSCOPENOSUCHTASK
NOSUCHTPTNOSUCHWINDNOSUCHWPTNOSYMBOL
NOSYMBOLRNOTADAPROGNOTALIGNEDNOTARRAY
NOTASTRUCTNOTATMAINNOTCURPCNOTDEFINE
NOTIMPLANNOTINLOOPNOTINSTNOTORIGSRC
NOTPTRNOTRACESNOTRAZERONOTRECORDNOTREE
NOTTASKVALNOTUNQOVRNOTUPDATENOTYPEINFO
NOUNIQUENOUNIVERSALSNOUSREVNTNOVALATPC
NOVALTYPNOVALUENOWATCHESNOWATTARNOWATVARIA
NOWATVARSTGNOWBPTNOWILDNOWILDFILNOWOPCONOWPROT
NULLPTRNUMCONLONGNUMTRUNCOBJECTINV
OBJPTRINVOBJTYPMISOBSOLETE_1OPCDEC
OPNOTALLOWOPSYNTAXOUTPUTLOSTPACSIZREQPARENREQ
PARSTKOVRPATHNOTACPPATHTLONGPATHTOOLONG
PCNOTALLPLICVTERRPREDEPTNOTPROFRANOT
PROMPTCLENPROMPTOCCLPROMPTRLENPROVRFLOW
PXCNQUALREQQUOSTRLONGREADERRREFUSEDREGREQ
RENAMENOTRESUMERRRETURNEDRNDFCTROUTROPRANDF
RPCDBBDTRPCERRRPCINVDSCRPCOVFRPCUNFRPCUNKARG
RSTERRSCALEADDSCALESUBSCRTOBIGSCRTOSMALLSETKEY
SETKEYERRSETMODUSETSCOMODSFCNTNEGSHOKEYERR
SHRPRCSIDEFFECTSIGVECTRUNCSIZEATOMICSIZETRUNC
SOURCESCOPESPAWNEDSRCLINNOTSS_INTSTEPINTO
STGTRUNCSTRNGPADSTRTOOLONGSTRUCSIZESUBOUTBND
SUBSCRNGSUBSTRINGSUBUNITCANSUBUNITNOTCANSUBUNITNOTSET
SUBUNITSETSUPERDEBUGSYMNOTACTSYMNOTFND
SYNERREXPRSYNERRLABELSYNERRLINESYNTAX
TASKERRORTASKNOTABORTTASKNOTACTTASKNULL
TERMINATINGTERMTKNREQTIMESLICETOOFEWSUB
TOOMANDIMTOOMANERRTOOMANINVTOOMANPARM
TOOMANSUBTRYINGONEPRCUNACREDBGOUNACVT
UNALIGNEDUNALLOCATEDUNAOPEDBGIUNAOPESCR
UNAOPNHLPUNAOPNINIUNAOPNSRCUNAREASRC
UNASAVVALUNASETIMGUNASETTASUNASWISTA
UNBPARENUNDEXPNUNDKEYUNIMPLENTUNMTCHPARN
UPBNDOPTUSREVNTERRVALNOTADDRVARNESDEP
VERIFYICFVERSIONNUMWATCHSIZEWATNOWCAN
WATNOWWATWATVARGSGONEWATVARGSOVRWATVARNOWGBL
WATVARPROTWATVARPTRWATVARREMAPWATVARSCP
WIDTHDIFFWITHCANWITHNOTCANWITHNOTSET
WITHSETWORKSTACMDWPTTRACEWRITE_FAILED
WRITE_INTO_KERNELWRITE_INTO_KERNEL_STACKZERLENDST
ZEROINCR
Parameters
keyword
Specifies the message to be displayed.
ABORTED
Message: command aborted by user request Severity: Warning
ABSDATSYN
Message: absolute date-time syntax error Severity: Warning
ACCADDCOM
Message: access violation in address computation for address_value
Severity: Warning 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 The process process-specification has just
activated, and is now connected to the main debugger. Any SET
BREAK/ACTIVATING or SET TRACE/ACTIVATING events will now take
effect.
ADDRANCOV
Message: address range covers more than one module address_value is
in path_name address_value is in path_name
Severity: Warning The address range specified in a DEBUG command
EXAMINE/SOURCE 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: Informational
ADDRREG
Message: & not allowed on register variables: operand bound to
register_name
Severity: Warning
ALLOBNDS
Message: must allocate at least 1000 bytes Severity: Warning
AMBFIELD
Message: field_name is an ambiguous field name Severity: Warning
AMBIGQUAL
Message: qualifier qualifier_name is ambiguous Severity: Warning
AMPERSAND
Message: operand of ampersand must be lvalue Severity: Warning
ASTWASDISABLED
Message: ASTs were disabled, are still disabled Severity: Informational
ASTWASENABLED
Message: ASTs were enabled, are still enabled Severity: Informational
ATTACHED
Message: terminal now attached to process process_name Severity: Informational
ATTREQREF
Message: attach request refused
Severity: Error The specified process could not be attached to.
Either it was not detached or it did not belong to the caller's
job.
User Action: Ensure that the specified process is detached and
belongs to the caller's job.
BADDESCR
Message: descriptor for 'symbol_name' is bad or is not set up yet Severity: Warning
BADDISCVAL
Message: incorrect value of tag_value in discriminant field
tag_name.
Severity: Informational
BADDST
Message: bad Debug Symbol Table (compiler error) Severity: Error
BADEVNPAR
Message: parameter does not have permitted data type for this event Severity: Error
BADEXH
Message: the user-mode exit handler list is corrupt
Severity: Error While walking the list of user-mode exit handlers,
DEBUG 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 DEBUG 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 DEBUG
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
User Action: You should never see this message. Submit a Software
Performance Report (SPR)
BADOPCODE
Message: opcode opcode_name is unknown
Severity: Error The opcode opcode_name specified in the deposit
command is unknown to the debugger. If the opcode is a valid VAX
MACRO opcode, then it will have a synonymous opcode. These
opcodes, such as MOVAF and MOVAL, generate the same instruction.
The debugger recognizes only one of them.
User Action: Specify a valid opcode or specify an opcode synonym
that the debugger accepts.
BADPARAM
Message: bad parameter value Severity: Error 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 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 DEBUG 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 DEBUG 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 While displaying part of the call stack, DEBUG 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 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 DEBUG 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 VAX
DEBUG, then submit a Software Performance Report.
BADTAGVAL
Message: incorrect value of tag_value in tag field tag_name. Severity: Informational
BADTARGET
Message: target location protected, cannot perform deposit
Severity: Warning The target address of the DEPOSIT command cannot
be made writeable. The DEPOSIT command cannot be performed.
User Action: None.
BADUSREVNT
Message: bad user-specified event table or event entry in user RTL Severity: Error
BADWATCH
Message: cannot watch protect address address_value
Severity: Error A SET WATCH command specified a protected address.
Note that you cannot place a watchpoint on a dynamically
allocated variable because these variables are stored on the
stack.
User Action: Do not use watchpoint on this address.
BASVARNOTSET
Message: base variable not set up yet Severity: Warning
BITRANGE
Message: bit range out of limits
Severity: Error 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 This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
BWLGISMUS
Message: B, W, L, G, I, or S must precede For operand number
operand_number
Severity: Error
CANTACCESSMAIN
Message: cannot access the main debugger
Severity: Fatal The kernel debugger (DEBUG.EXE) cannot access the
main debugger (DEBUGSHR.EXE). 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 VAX DEBUG subprocess
Severity: Fatal An error occurred while trying to create a
subprocess to run the main debugger image SYS$SHARE:DEBUGSHR.EXE.
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 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 Vax DEBUG could not interrupt the specified
process because it was deleted. This message usually indicates
that the specified process terminated abnormally -- either via
the DCL STOP command or via a call to $DELPRC.
CANTOPNIMG
Message: cannot open image image_name (File:
device_name:(file_id,file_id,file_id))
Severity: Informational
CIREXLST
Message: command aborted after number_of_handlers exit handlers
displayed circular exit handler list suspected
Severity: Error After displaying information about 100 exit
handlers, VAX DEBUG 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.
CMDNOTONE
Message: The !AC command is not allowed in the one process debugger
Severity: Error The specified command may not be used with the
single process debugger.
CMDSYNERR
Message: command syntax error at or near 'DEBUG_command_segment' Severity: Warning
CMPNOTFND
Message: specified component not found in this type Severity: Warning
CONFLICT
Message: illegal combination of command elements - check
documentation
Severity: Warning Command line elements conflict in their
operations. The command will not be performed.
User Action: Do not specify conflicting command line elements.
CONFROMEXC
Message: warning: you are continuing from a severe error Severity: Informational
CONSTRCOMP
Message: illegal deposit to a constrained record component Severity: Error
CPOSTDECR
Message: side effect on post-decrement operation not performed Severity: Informational
CPOSTINCR
Message: side effect on post-increment operation not performed Severity: Informational
CPREDECR
Message: side effect on pre-decrement operation not performed Severity: Informational
CPREINCR
Message: side effect on pre-increment operation not performed Severity: Informational
CRMPSCFAIL
Message: failed to map-in DEBUG Symbol Table (DST) Severity: Informational
CVTNEGUNS
Message: cannot convert negative value to unsigned value at or near
opcode_name
Severity: Warning
DBGERR
Message: internal DEBUG coding error.
Severity: Error 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 VAX Debug process from a previous debugging session has
been terminated
Severity: Warning 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 VAX DEBUG process will
exit when a debugging session ends via the EXIT or QUIT commands.
If the previous debugging session was terminated with an EXIT or
QUIT command and this error is reproducable, then submit a
Software Performance Report (SPR)
DECLARERR
Message: too many declarations, parameter_name ignored Severity: Warning
DECOVF
Message: decimal overflow at or near opcode_name Severity: Error
DECROPRAND
Message: illegal packed or decimal string value (Reserved Operand
fault occurred during conversion)
Severity: Error
DEFKEY
Message: state_name key key_name has been defined Severity: Informational
DEFKEYERR
Message: error in processing DEFINE/KEY command: Severity: Warning
DELBREAK
Message: deleting breakpoint at address_value Severity: Informational
DELKEY
Message: state_name key key_name has been deleted Severity: Informational
DELKEYERR
Message: error in processing DELETE/KEY command: Severity: Warning
DELTIMTOO
Message: delta time too large Severity: Error
DELTRACE
Message: deleting tracepoint at address_value Severity: Informational
DESCNOTSET
Message: descriptor not set up yet Severity: Warning
DISABLEAST
Message: ASTs were enabled, are now disabled Severity: Informational
DISNOTSEL
Message: display not selected because removed from screen Severity: Error
DISPEXISTS
Message: display_name display already exists; cannot be set until
canceled
Severity: Error
DISPRLENSIZ
Message: length of display_name display cannot exceed maximum size
increase /SIZE or specify fewer lines
Severity: Error
DIVBYZERO
Message: attempted to divide by zero Severity: Error
DSTERRG
Message: error in DST (compiler error). GOTO DST has been ignored Severity: Informational
DSTNESDEP
Message: DST nesting depth too deep in module path_name
Severity: Error Debug 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.
DYNIMGSET
Message: setting image image_name Severity: Informational
DYNMODSET
Message: setting module path_name Severity: Informational
EDITDISVER
Message: the original version is file_specification Severity: Informational
EDITERROR
Message: error while trying to EDIT Severity: Informational
EDITFILE
Message: editing file file_specification Severity: Informational
EDITNOFILE
Message: no source file to use for editing Severity: Informational
EDITREVVER
Message: editing a revised version of the original source file Severity: Informational
ENABLEAST
Message: ASTs were disabled, are now enabled Severity: Informational
ENTRYMASK
Message: entry mask has non-zero value in bits 12:13 Severity: Informational
ENUMRANGE
Message: enumeration value out of range Severity: Informational
ERRACTIMG
Message: unable to activate image
Severity: Informational 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 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 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 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 DEBUG 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 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 DEBUG 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 DEBUG 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
ERRINVEDIT
Message: error invoking editor
Severity: Informational 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 VAX DEBUG error detected
Severity: Error 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 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 The debugger signalled an error handle. This should
never happen.
User Action: Submit a Software Performance Report (SPR)
ERRQIOW
Message: error from $QIOW
Severity: Informational 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 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 DEBUG system service call
Severity: Informational A bad status was returned from a call to a
system service. This message is to be in the context of the
$DBG_INFO macro which will list the particular system service.
User Action: Submit a Software Performance Report (SPR).
ERRUSREVNT
Message: error in user-specified event Severity: Error
EXARANGE
Message: invalid range of addresses Severity: Error
EXCBREREP
Message: exception breakpoint replaced
Severity: Informational A SET BREAK/EXCEPTION was done when
exception breaks were already in effect. The old exception break
was replaced with the new one.
EXCDURCAL
Message: error occurred while executing routine called from
exception break
Severity: Error While executing a routine called from an exception
break using the CALL command, an exception occurred. Any
exceptions from routines called from an exception break cause
this message to be displayed followed by the text of the
exception. Execution of the called routine is then terminated.
User Action: Either correct the CALL command if it was in error, or
correct the routine that caused the exception. To use the
debugger to help find the cause of the exception, try calling the
routine while not at an exception break.
EXITARG
Message: exitloop argument num_levels is too large Severity: Warning
EXITERR
Message: an error occurred while trying to exit the program
Severity: Error 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 VAX DEBUG, then submit a Software Performance
Report.
EXITSTATUS
Message: is 'status_value'
Severity: Informational The program has exited with the status
status_value. See the <vms_sysrout_r> for more information about
the VAX/VMS exit status codes.
User Action: None.
EXPMEMPOOL
Message: expanding debugger memory pool
Severity: Informational The DEBUG kernel maintains a memory pool
from which it allocates data structures to keep track of
breakpoints, tracepoints, watchpoints, and so on. The initial
size of the memory pool is 256 pages. The memory pool is
expanded automatically when needed, and this informational is
signaled when memory pool expansion occurs. If you have set a
large number of breakpoints, tracepoints, or watchpoints, this
message is to be expected.
User Action: If this message appears for no evident reason (i.e.,
you have not set a large number of breakpoints, tracepoints, or
watchpoints), there may be something wrong with the debugger. In
this case, submit an SPR.
FILEUNAL
Message: file not available Severity: Warning
FLTOVF
Message: floating overflow at or near opcode_name Severity: Error
GETJPI
Message: GETJPI system service failed, unable to attach Severity: Error
HEIGHTDIFF
Message: desired height of specified_height is not allowed, height
is set to actual_height
Severity: Informational
IDENTLONG
Message: identifier too long, please shorten Severity: Error
IFIXUND
Message: precision lost during fixed point operation Severity: Informational
IFLTUND
Message: floating underflow at or near opcode_name Severity: Informational
IINTOVF
Message: integer overflow at or near opcode_name Severity: Informational
ILLADDCON
Message: illegal constant constant_name in address expression Severity: Warning
ILLASTER
Message: subscript range ('*') not permitted here (must be at lowest
level of data structure)
Severity: Warning
ILLDEFNAM
Message: illegal name for DEFINE: defined_name Severity: Warning
ILLENUMVAL
Message: enumeration value out of legal range Severity: Warning
ILLEVNSTR
Message: Attempt to pass an illegal event structure, name =
structure-name
Severity: Fatal This message indicates an internal debugger error.
User Action: Submit an SPR.
ILLFILPTR
Message: file variable points to invalid file descriptor Severity: Warning
ILLFLOAT
Message: float_value is an illegal floating point value Severity: Warning
ILLLENGTH
Message: illegal length field length_value in structure reference Severity: Warning
ILLOFFSET
Message: bit or byte offset value larger than 64K not supported,
value given is offset_value
Severity: Warning
ILLPACSIZ
Message: illegal packed size size_value; must be 0..31 Severity: Warning
ILLPATH1
Message: illegal use of %SOURCE_SCOPE (must not be combined with
invocation numbers)
Severity: Warning
ILLPATH2
Message: illegal use of %SOURCE_SCOPE (must appear at the start of
the pathname)
Severity: Warning
ILLPATHELEM
Message: illegal pathname element at path_name Severity: Error
ILLPOSFLD
Message: position field value position_value is too large Severity: Warning
ILLQUALIF
Message: illegal or unsupported qualifier on SPAWN command Severity: Warning
ILLRANGE
Message: subscript range not permitted here (must be at lowest level
of data structure)
Severity: Warning
ILLSETCON
Message: illegal set constant in expression Severity: Warning
ILLSIGEXT
Message: illegal sign extension field value extension_value
Severity: Warning An illegal value has been entered for the sign
extension field in a field reference.
User Action: Re-enter the command using a valid sign extension field
value.
ILLSIZFLD
Message: illegal size field size_value; must be 0..32 Severity: Warning
ILLSUBLEN
Message: substring length larger than 32K not supported Severity: Warning
ILLSUBSTR
Message: can only apply substring operation to string data types Severity: Warning
ILLTYPE
Message: illegal type of operand(s)
Severity: Warning The type of the operand is illegal for the
operator specified.
User Action: Change the operand.
INCDSTNES
Message: incorrect DST nesting in module path_name, compiler error
Severity: Error Incorrect Debug Symbol Table nesting occurred, such
as improper routine or data record nesting in the specified
module. This message normally indicates a compiler error.
User Action: Submit a Software Performance Report.
INCOMPOPR
Message: operand number operand_number incomplete Severity: Error
INCOMPPTR
Message: pointers of different size, cannot perform subtraction Severity: Warning
INCOMQUAL
Message: qualifier qualifier_name is not compatible with
qualifier_name(s)
Severity: Warning 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 A kernel debugger attempted to connect to a main
debugger with which it is not compatible.
User Action: Make sure that the logical names DEBUG and DEBUGSHR 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 A kernel debugger attempted to connect to a main
debugger with which it is not compatible.
User Action: Make sure that the logical names DEBUG and DEBUGSHR 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
INITIAL
Message: language is language_name, module set to path_name
Severity: Informational This message is displayed when the debugger
is invoked by the image activator. The language is set to
language_name, and the module to path_name. Module path_name is
the first module specified in the LINK command, and language
language_name is the language used in that module.
User Action: None.
INPREADERR
Message: error reading input line: Severity: Warning
INSVIRMEM
Message: insufficient virtual memory for DEBUG memory pool Severity: Informational
INTERR
Message: internal DEBUG error in DEBUG_routine_name
Severity: Error 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 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 The debugger's internal memory area has been
corrupted or is inconsistent. This can be caused by an internal
DEBUG error or by random stores by the user program.
User Action: Correct the user program or submit a Software
Performance Report.
INTOVF
Message: integer overflow at or near opcode_name Severity: Error
INUMTRUNC
Message: number truncated at or near opcode_name Severity: Informational
INVADDRTKN
Message: - invalid token for address calculation
Severity: Informational This message appears as additional
information with the INVDSTREC error message. The address
specification contains an invalid token for calculating an
address. This is a compiler error.
INVARGLIS
Message: invalid argument list for 'DEBUG_command_segment' Severity: Warning
INVARRDIM
Message: array dimension is out of range Severity: Warning
INVARRDSC
Message: invalid array descriptor
Severity: Error An array descriptor in the image does not have the
correct format. This can be caused by a reference to a VAX BASIC
array when the first line of the program has not been executed.
The array is not set up correctly until the BASIC program
initialization is done. This message can also be caused by a \
user program or DEPOSIT commands altering a compiler generated
array descriptor.
User Action: If the reference is to a VAX BASIC array, enter a STEP
or GO command to ensure that the BASIC program initialization is
done and then repeat the reference. Otherwise, if an array
descriptor has not been altered, submit a Software Performance
Report.
INVAVSCODE
Message: - address or value token code avs_code is invalid, ignoring
Severity: Informational This message appears as additional
information with the INVDSTREC error message. The address or
value specification contains an invalid token code. This is a
compiler error.
INVCHAR
Message: invalid character Severity: Error
INVCHRCON
Message: invalid character constant in expression Severity: Error
INVDESC
Message: invalid string descriptor Severity: Error This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
INVDIGBIN
Message: invalid digit in binary number: number_value Severity: Error
INVDIGDEC
Message: invalid digit in decimal number: number_value Severity: Error
INVDIGHEX
Message: invalid digit in hexadecimal number: number_value Severity: Error
INVDIGOCT
Message: invalid digit in octal number: number_value Severity: Error
INVDIRNAM
Message: invalid directory name: file_specification
Severity: Error The directory name 'file_specification' given in a
DEBUG 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 DEBUG error Severity: Informational
INVDSPSIZ
Message: invalid display size: display_size Severity: Error
INVDSTREC
Message: invalid DST record Severity: Error
INVDSTTYPCODE
Message: - DST type code type_code is invalid
Severity: Informational This message appears as additional
information with the INVDSTREC error message. The DST contains
an invalid DST type code. This is a compiler error.
INVEXPR
Message: invalid expression for operand number operand_number Severity: Error
INVFIXDST
Message: invalid DST fixup records in image image_name, symbol
references to shareable images may be erroneous
Severity: Informational While attempting to read the DEBUG Symbol
Table (DST) in the specified image, DEBUG found errors in the DST
address fixup records. These records are used to adjust for the
base addresses of shareable images. This means that any symbols
in this image which point to addresses in other (shareable)
images will most likely be incorrect. Symbols which refer to
addresses in this image will be correct unless this is also a
shareable image.
User Action: Relink the image and, if the error is reproducible,
submit a Software Performance Report explaining how the image
file was created.
INVFLDREF
Message: invalid field reference; too many or few parameters Severity: Warning
INVGSTREC
Message: invalid GST record Severity: Error
INVGSTTYP
Message: invalid GST record; GST is partially built Severity: Informational
INVINDIRECT
Message: - indirect offset offset is invalid
Severity: Informational This message appears as additional
information with the INVDSTREC error message. The DST contains
an indirect specification which does not point to an existing
DST. This is a compiler error.
INVLANGCODE
Message: - language code lang_code is invalid, language code UNKNOWN
being substituted
Severity: Informational This message appears as additional
information with the INVDSTREC error message. The DST contains
an invalid language code. The UNKNOWN language code will be
used. This is a compiler error.
INVLENGTH
Message: - invalid DST record length of bad_length, should be
good_length
Severity: Informational This message appears as additional
information with the INVDSTREC error message. The length
specified in the DST record was incorrect. This is a compiler
error.
INVMAR
Message: right margin must be greater than left
Severity: Warning You specified a right margin that was less than
the left margin in the DEBUG command SET MARGIN. The right
margin must be greater than the left margin.
User Action: Re-enter the command specifying a valid margin range.
INVNOSPECTKN
Message: - invalid token for no address or value spec
Severity: Informational This message appears as additional
information with the INVDSTREC error message. The "no address"
or "no value" specification contains an invalid token. Only the
terminate token is valid after this type of token. This is a
compiler error.
INVNUMBER
Message: invalid numeric string 'number_value' Severity: Error
INVNUMSRC
Message: invalid number of source files
Severity: Warning An invalid number of source files was specified on
the DEBUG command SET MAX_SOURCE_FILES. The maximum number of
source files that DEBUG will keep open simultaneously must be in
the range of 1 through 20.
User Action: Re-enter the command specifying a valid number within
the range.
INVNUMSTR
Message: invalid numeric string at or near 'number_value' Severity: Error
INVOPADDR
Message: invalid operator 'operator_symbol' in address expression Severity: Error
INVOPSYM
Message: invalid operator symbol 'operator_symbol' in expression Severity: Error
INVPAGE
Message: invalid screen height, value must be between minimum_height
and maximum_height
Severity: Error
INVPRCSYN
Message: process specification syntax error
Severity: Error The specified process specification is syntactically
invalid
User Action: Re-enter the command specifying a correct process
specification
INVPRIOR
Message: invalid task priority value specified Severity: Error
INVRANSPEC
Message: invalid range specification in array subscript Severity: Warning
INVSELDIS
Message: invalid selection of display_name display; wrong display
kind
Severity: Error
INVSRCLIN
Message: invalid source line range
Severity: Warning An invalid source line range was entered in the
DEBUG command TYPE. The first line number of the range must be
non-negative and less than or equal to the second number in the
range.
User Action: Re-enter the command specifying a valid line number
range.
INVTIMSLI
Message: time slice was not set, parameter is out of range of Ada
type DURATION
Severity: Error
INVTSCODE
Message: - type spec type code ts_code is invalid, ignoring
Severity: Informational This message appears as additional
information with the INVDSTREC error message. The type
specification contains an invalid type code. This is a compiler
error.
INVVALTKN
Message: - invalid token for value calculation
Severity: Informational This message appears as additional
information with the INVDSTREC error message. The value
specification contains an invalid token for calculating a value.
This is a compiler error.
INVWIDTH
Message: invalid screen width, value must be between minimum_width
and maximum_width
Severity: Error
INVWINPAR
Message: invalid window parameter: number_value Severity: Error
IRFAOVF
Message: record file address overflow at or near opcode_name Severity: Informational
ISTRTRU
Message: string truncated at or near opcode_name Severity: Informational
ITMNOTAVA
Message: item not available
Severity: Warning The requested information is not available from
the user program.
ITMTRUNC
Message: item truncated - buffer of insufficient size Severity: Warning The user should never see this error. User Action: Submit a Software Performance Report (SPR)
IVALOUTBNDS
Message: value assigned is out of bounds at or near opcode_name Severity: Informational
IVPRCLOG
Message: logical name DBG$PROCESS must be either MULTIPROCESS or
DEFAULT
Severity: Fatal 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 This message indicates an internal debugger error.
User Action: Submit a Software Performance Report.
LASTCHANCE
Message: stack exception handlers lost, re-initializing stack
Severity: Error 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: Informational 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>'
LONGSTRING
Message: strings longer than 2**16 characters not supported Severity: Warning
LOOPINCR
Message: loop increment cannot be zero Severity: Warning
LOOPVAR
Message: loop var loop_variable has been redefined; exiting for loop Severity: Informational
LOWBNDOPT
Message: lower bound of subrange was optimized away Severity: Informational
MATQUOMIS
Message: matching quote is missing
Severity: Warning The matching quote at the end of a quoted string
is missing.
User Action: Correct the error and re-enter the command.
MAXSTRLEN
Message: maximum allowed length is string_length in an
EXAMINE/ASCII:n command
Severity: Warning
MISCLOSUB
Message: missing closing subscript parenthesis Severity: Warning
MISINVNUM
Message: misplaced invocation number in path_name
Severity: Warning The invocation number was not placed after the
innermost (rightmost) routine name in the specified pathname.
User Action: Correct the pathname and re-enter the command.
MISINVOPER
Message: missing or invalid operator at 'operator_symbol' Severity: Error
MISMODBEG
Message: missing Module-Begin record in DST (compiler error)
Severity: Informational An expected Module-Begin record was not
found in the Debug 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 An expected Module-End record was not found
in the Debug Symbol Table. This indicates a probable error in
the compiler output.
User Action: Submit a Software Performance Report.
MISOPEMIS
Message: misplaced operator or missing operand at 'operator_symbol' Severity: Error
MODUSCOPE
Message: a module name was expected; path_name not valid Severity: Warning
MPARENREQ
Message: parenthesis required around process list in debug_command
Severity: Warning Parentheses must be placed around the process list
for DEBUG 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 DEBUG was unable to execute the specified command
since it is only valid when DEBUG's multiprocess support is
enabled.
User Action: Restart the debugging session with multiprocess support
enabled. Multiprocess support is enabled by defining the logical
name DBG$PROCESS as follows: ($ DEFINE/JOB DBG$PROCESS
MULTIPROCESS)
NAMSTRMIS
Message: name string missing or invalid in %NAME construct Severity: Error
NAMTOOLONG
Message: name is too long: 'symbol_name' Severity: Error
NEEDMORE
Message: unexpected end of command line
Severity: Warning The command entered was not complete. A required
part of the command was omitted.
User Action: Re-enter the complete command.
NEEDPAREN
Message: parenthesis required in THEN, ELSE, and DO clauses Severity: Informational
NOACCESSR
Message: no read access to virtual address address_value Severity: Error
NOACCESSW
Message: no write access to virtual address address_value
Severity: Error A DEPOSIT, SET BREAK, or SET TRACE command specified
the address address_value. The debugger does not have write
access to that page. The debugger requires write access in order
to be able to set up breakpoints and tracepoints.
User Action: None. You cannot do the requested operation without
proper access.
NOADDRREG
Message: register register_name does not have an address use
@register_name to obtain the contents of register register_name
Severity: Warning
NOALTERSP
Message: deposit into register 14 (stack pointer) not allowed Severity: Informational
NOATTACH
Message: attach command failed Severity: Error
NOBREAGGR
Message: breakpoints or tracepoints on registers, records or arrays
are not allowed
Severity: Error
NOBREAKAT
Message: cannot set breakpoint or tracepoint at address
address_value
Severity: Warning
NOBREAKS
Message: no breakpoints are set
Severity: Informational The SHOW BREAK command was entered and no
breakpoints were set.
User Action: None.
NOCALLS
Message: no active call frames Severity: Error
NOCANMAIN
Message: cannot cancel main image Severity: Warning
NOCLI
Message: no CLI present to perform function
Severity: Error 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 DEBUG 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
Severity: Warning '.' is not currently defined.
User Action: Do not reference '.' until an EXAMINE or
EVALUATE/ADDRESS command has been performed.
NODELIMTR
Message: missing or invalid instruction operand delimiter
Severity: Error A DEPOSIT command specified an invalid instruction
operand format.
User Action: Re-enter the command with valid operands.
NODEPDEBUG
Message: DEPOSIT into DEBUG's address space is not allowed Severity: Warning
NODIRLISM
Message: no source directory list in effect for path_name
Severity: Warning The DEBUG 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 The DEBUG 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 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 Eventpoints were not given with a SHOW or CANCEL
command.
User Action: Try the command again, specifying eventpoints to
operate on.
NOEVALEXPR
Message: unable to evaluate expression for following reason Severity: Informational
NOEVENTFAC
Message: /EVENT qualifier not allowed: first type 'SET EVENT
facility' to specify an event facility
Severity: Error
NOEXCBRE
Message: no exception breaks were set
Severity: Informational A CANCEL BREAK/EXCEPTION command was entered
when exception breaks were not in effect. The CANCEL
BREAK/EXCEPTION command had no effect.
NOEXHND
Message: no exit handlers are declared Severity: Informational
NOFIELD
Message: 'field_name' is not a field in this record
Severity: Warning An attempt was made to reference a field that is
not defined in the record.
User Action: Check the field specified to ensure that it is defined
in the record.
NOFREE
Message: no free storage available Severity: Error
NOGLOBALS
Message: some or all global symbols not accessible
Severity: Informational 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: DBG$INPUT AND SYS$INPUT are not available
Severity: Fatal DEBUG was unable to open both DBG$INPUT and
SYS$INPUT.
User Action: Check that DBG$INPUT and SYS$INPUT point at valid
objects.
NOINSTRAN
Message: cannot translate opcode at location address_value
Severity: Error The address specified in the EXAMINE command is not
the beginning of a valid VAX instruction. This can be caused by
specifying an address that is in the middle of an instruction or
by an address that is in a data area.
User Action: Specify an address that contains a valid instruction.
NOKEYDEF
Message: cannot do keypad input, mode is set to NOKEYPAD Severity: Warning
NOKEYPAD
Message: unable to set up keypad definitions Severity: Informational
NOLASTVAL
Message: last value is not defined
Severity: 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 The line number range CZ:yyy specified on the
DEBUG 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 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 All the modules in the image were compiled
or assembled without traceback information. There is no local
symbol information in the image.
User Action: Recompile or reassemble the modules using the /DEBUG
qualifier and then relink them.
NOMARKCHNG
Message: [NO]MARK_CHANGE qualifier not applicable to display_name
display
Severity: Informational
NOMATCH
Message: no matches Severity: Warning
NOMORE
Message: wildcard request complete
Severity: Warning
User Action: This is a VAX DEBUG internal error code. If VAX DEBUG
reports this error, then submit a Software Performance Report.
NONEXPR
Message: nonexistent process
Severity: Error 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 The process-specification was not valid or the
specified process did not exist.
User Action: Verify that the process specification is correct and
that the process still exists and then re-enter the command.
NONUMSCOPE
Message: scope does not exist or is not in set module: scope_number Severity: Informational
NONXTLIN
Message: next line for source display not defined
Severity: Warning The DEBUG command TYPE or SEARCH was entered
without specifying a line number (for example, the next line
after the last source line printed should be used). But no next
source line is currently defined.
User Action: Re-enter the command explicitly specifying the desired
line number.
NOOCCLDISP
Message: display_name display may not be occluded Severity: Informational
NOOUTAVAIL
Message: DBG$OUTPUT AND SYS$OUTPUT are not available
Severity: Fatal DEBUG was unable to open both DBG$OUTPUT and
SYS$OUTPUT.
User Action: Check that DBG$OUTPUT and SYS$OUTPUT point at valid
objects.
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 The logical predecessor of the identifier or
instruction referenced is not defined.
User Action: None. This message is informational.
NOPROMPT
Message: cannot delete, remove, unselect, or change kind of the
display_name display
Severity: Informational
NORECSYM
Message: recursive symbol_type symbol definition encountered at or
near 'DEBUG_command_segment'
Severity: Error 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 DEBUG status Severity: Success
NORSTBLD
Message: cannot build symbol table
Severity: Error The debugger is unable to build a symbol table
because of errors in the format of the image file.
User Action: Relink the image and, if the error is reproducible,
submit a Software Performance Report explaining how the image
file was created.
NOSAVPROG
Message: cannot save a program I/O display Severity: Informational
NOSCOPE
Message: no scope exists to look up line line_number
Severity: Error 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.
NOSCRDEV
Message: screen mode is not supported on this device screen mode
output is being lost
Severity: Informational
NOSCRMODE
Message: screen mode is not supported on this terminal screen mode
is not set
Severity: Warning
NOSCROLL
Message: no scrolling display selected or missing display name Severity: Error
NOSCROLLDISP
Message: display_name display may not be scrolled Severity: Informational
NOSETTERM
Message: the SET TERMINAL command is not supported on this terminal Severity: Warning
NOSPAWN
Message: spawn command failed Severity: Error
NOSPAWNI
Message: spawn command failed Severity: Informational
NOSRCHSTR
Message: search string not set
Severity: Warning No current search string is defined for the DEBUG
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 No source line corresponds to the address
address_value specified on the DEBUG command EXAMINE/SOURCE.
User Action: None. This message is informational.
NOSTEPGO
Message: no STEP, GO, SET PROCESS/VISIBLE or CALL commands allowed
in screen displays
Severity: Error
NOSUCC
Message: logical successor not defined
Severity: Warning 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 The CANCEL BREAK command specified an
address that is not the address of a breakpoint.
User Action: Use the SHOW BREAK command to find the location of the
current breakpoints, and then cancel any of these breakpoints
that you want to cancel.
NOSUCHDISP
Message: no such display defined: display_name Severity: Error
NOSUCHELP
Message: no such help topic or invalid HELP command Severity: Warning
NOSUCHIMG
Message: image image_name not found Severity: Error
NOSUCHMODU
Message: module path_name is not in module chain
Severity: Error The module path_name, specified in the SET MODULE
command, does not exist in the image. This message can be caused
when: (1) a module name has been entered incorrectly or (2) a
module is compiled with the /NOTRACE switch.
User Action: Specify a module that is in the image.
NOSUCHPACK
Message: library package path_name is not in the symbol table Severity: Warning
NOSUCHSCOPE
Message: scope does not exist or is not in set module: scope_name Severity: Warning
NOSUCHTASK
Message: no such task exists or no task satisfies criteria Severity: Error
NOSUCHTPT
Message: no such tracepoint
Severity: Informational The CANCEL TRACE command specified an
address that was not the address of a tracepoint.
User Action: Use the SHOW TRACE command to display the current
tracepoints and then cancel any that you want to cancel.
NOSUCHWIND
Message: no such window defined: display_name Severity: Error
NOSUCHWPT
Message: no such watchpoint
Severity: Informational The CANCEL WATCH command specified an
address that was not the address of a watchpoint.
User Action: Use the SHOW WATCH command to display the current
watchpoints and then cancel any that you want to cancel.
NOSYMBOL
Message: symbol 'symbol_name' is not in the symbol table Severity: Error
NOSYMBOLR
Message: no symbol 'symbol_name' was declared in routine path_name Severity: Warning
NOTADAPROG
Message: program is not an ADA program; command ignored Severity: Error
NOTALIGNED
Message: - unaligned_string should be longword aligned
Severity: Informational This message appears as additional
information with the INVDSTREC error message. The DST field was
not longword aligned. This is a compiler error.
NOTARRAY
Message: type of variable is not array
Severity: Warning 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 A VAX BLISS-32 structure reference specified a
symbol symbol_name that was not declared a structure.
User Action: Re-enter the command with a valid symbol reference.
NOTATMAIN
Message: type GO to get to start of main program Severity: Informational
NOTCURPC
Message: target of EXAMINE/OPERANDS is not the current PC results
may be unexpected
Severity: Informational The operands being examined will probably
give incorrect results, because the context for the instruction
is probably not set up properly. Specifically, the values of
registers used in address computations depend on the previous
series of instructions being executed, which was not done in this
case.
User Action: Only use EXAMINE/OPERANDS with .0\%PC
NOTDEFINE
Message: defined_symbol was not defined Severity: Informational
NOTIMPLAN
Message: expression_type is not implemented at command level
Severity: Error 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
NOTINST
Message: examined address is not the start of an instruction Severity: Informational
NOTORIGSRC
Message: original version of source file not found file used is
file_specification
Severity: Informational 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 DEBUG command SET SOURCE to indicate the location
of the source to DEBUG.
NOTPTR
Message: variable must be of pointer or file type Severity: Warning 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 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 DEBUG was unable to find a trailing zero for the
specified ASCIZ string.
User Action: The ASCIZ string is missing a trailing zero, or the
object examined is not an ASCIZ string.
NOTRECORD
Message: variable is not record; cannot select component
component_name
Severity: Warning
NOTREE
Message: SCAN tree or subtree not found SCAN error message Severity: Warning
NOTTASKVAL
Message: expression does not specify a task value Severity: Error
NOTUNQOVR
Message: symbol 'symbol_name' is overloaded use SHOW SYMBOL to find
the unique symbol names
Severity: Error
NOTUPDATE
Message: instruction screen display not updated Severity: Informational
NOTYPEINFO
Message: symbol type information not available please SET the module
that describes this type
Severity: Warning
NOUNIQUE
Message: symbol 'symbol_name' is not unique
Severity: Error The symbol specified was not in a default scope or
was defined in more than one scope.
User Action: Specify the scope of the symbol in a pathname or change
the default scope.
NOUNIVERSALS
Message: shareable image contains no universal symbols Severity: Informational
NOUSREVNT
Message: no user-specified events are allowed; none are declared Severity: Error
NOVALATPC
Message: entity 'symbol_name' does not have a value at the current
PC (was optimized away)
Severity: Warning 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 The command specified a reference that has no
value.
User Action: Change the reference.
NOWATCHES
Message: no watchpoints are set Severity: Informational No watchpoints are set. User Action: None. This message is informational.
NOWATTAR
Message: cannot watch-protect target
Severity: Error You are attempting to set a /STATIC watchpoint on a
location that is either a register, is not in your program, or is
on the stack (P1 space). These kinds of locations cannot be
watchpointed with the /STATIC qualifier.
User Action: Either use the /NOSTATIC qualifier, or do not
watch-point this location.
NOWATVARIA
Message: cannot set watchpoints on variant records Severity: Warning
NOWATVARSTG
Message: watchpoints not allowed after SET TYPE ASCIC, ASCIW, or
ASCIZ
Severity: Warning
NOWBPT
Message: cannot insert breakpoint
Severity: Informational This message indicates an internal debugger
error.
User Action: Submit a Software Performance Report.
NOWILD
Message: no wildcard permitted Severity: Error Wildcards are not permitted in this context User Action: Re-enter the command without using wildcards
NOWILDFIL
Message: file name, type, and version cannot be wildcarded Severity: Error
NOWOPCO
Message: cannot replace breakpoint with opcode Severity: Fatal This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
NOWPROT
Message: cannot set protection Severity: Fatal This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
NULLPTR
Message: cannot dereference null pointer Severity: Warning
NUMCONLONG
Message: numeric constant too long, please shorten Severity: Error
NUMTRUNC
Message: number truncated Severity: Informational
OBJECTINV
Message: requested object is invalid Severity: Fatal 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 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 This message indicates an internal debugger error. User Action: Submit an SPR.
OBSOLETE_1
Message: this message is available for reuse Severity: Warning
OPCDEC
Message: no support for G/H instructions at or near opcode_name Severity: Warning
OPNOTALLOW
Message: operator 'operator_symbol' not allowed on given data types Severity: Error
OPSYNTAX
Message: instruction operand syntax error for operand number
operand_number
Severity: Error
OUTPUTLOST
Message: output being lost, both NOTERMINAL and NOLOG are in effect
Severity: Informational The SET OUTPUT command has set the output
conditions to NOTERMINAL and NOLOG; consequently, the output is
not displayed on the terminal or written to a log file. The
output normally displayed by the debugger will not be available.
User Action: Use the SET OUTPUT command to send output to the
terminal or to a log file.
PACSIZREQ
Message: packed size required Severity: Warning
PARENREQ
Message: parenthesis required in 'DEBUG_command_segment /TYPE=(X)'
Severity: Warning The DEBUG_command_segment is either SET TYPE,
DEPOSIT, or EXAMINE.
PARSTKOVR
Message: parse stack overflow, simplify expression
Severity: Warning The expression was too complex for the debugger to
evaluate.
User Action: Simplify the expression.
PATHNOTACP
Message: pathname qualifiers (path_name) not allowed in SHOW SYMBOL
data name
Severity: Warning
PATHTLONG
Message: too many qualifiers on name Severity: Error
PATHTOOLONG
Message: pathname too long at path_name Severity: Error
PCNOTALL
Message: PC not allowed in context for operand number operand_number Severity: Error
PLICVTERR
Message: PLI conversion error at or near opcode_name Severity: Error
PREDEPTNOT
Message: predefined eventpoint(s) not canceled
Severity: Informational 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 You attempted to look at a variable in a routine
invocation that does not exist.
User Action: Specify a routine or routine invocation that is
currently active.
PROMPTCLEN
Message: display_name display width not changed, must be full width
of screen
Severity: Informational
PROMPTOCCL
Message: display_name display now occludes some or all of
display_name display's text
Severity: Informational
PROMPTRLEN
Message: display_name display length not changed, must be at least 2
lines long
Severity: Informational
PROVRFLOW
Message: too many levels of @ procedure nesting Severity: Warning
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 Direction ( UP, DOWN, LEFT, RIGHT ) information is
missing from the command.
User Action: Provide a direction with the command and try again.
QUOSTRLONG
Message: quoted string too long, please shorten Severity: Error
READERR
Message: DEBUG input read error, force to exit Severity: Warning
REFUSED
Message: attach request refused
Severity: Error 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.
REGREQ
Message: register required in context for operand number
operand_number
Severity: Error
RENAMENOT
Message: Unable to look up 'symbol_name', object being renamed not
found in symbol table
Severity: Warning
RESUMERR
Message: an error occurred while trying to resume execution of the
program
Severity: Error 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 VAX DEBUG, then submit a Software Performance
Report.
RETURNED
Message: control returned to process process_name Severity: Informational
RNDFCTROUT
Message: round factor out of range Severity: Warning
ROPRANDF
Message: reserved operand fault at or near opcode_name Severity: Error
RPCDBBDT
Message: Bad DTYPE for RPC Data Blocking. Severity: Error 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 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 This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
RPCOVF
Message: RPC packet overflow Severity: Error This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
RPCUNF
Message: undefined RPC function encountered Severity: Error This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
RPCUNKARG
Message: undefined RPC argument encountered Severity: Error This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
RSTERR
Message: error in symbol table
Severity: Error There is a format error in the symbol table.
User Action: If the format error is not caused by a user program
error or a DEPOSIT command, submit a Software Performance Report.
SCALEADD
Message: pointer addition: scale factor of scale_factor applied to
right/left argument
Severity: Informational
SCALESUB
Message: pointer subtraction: scale factor of scale_factor applied
to right/left
Severity: Informational
SCRTOBIG
Message: screen too big for Screen Mode width must be less than
maximum_width, height less than maximum_height
Severity: Error
SCRTOSMALL
Message: screen too small for Screen Mode width must be at least
minimum_width, height must be at least minimum_height
Severity: Error
SETKEY
Message: keypad state has been set to state_name Severity: Informational
SETKEYERR
Message: error in processing SET KEY command: Severity: Warning
SETMODU
Message: set module command has completed Severity: Informational
SETSCOMOD
Message: syntax error at 'DEBUG_command_segment', SET SCOPE/MODULE
expected
Severity: Error
SFCNTNEG
Message: shift count is negative Severity: Warning
SHOKEYERR
Message: error in processing SHOW KEY command: Severity: Warning
SHRPRC
Message: VAX DEBUG will share user process
Severity: Informational An error occured while trying to create a
subprocess to run the main debugger image. This message
indicates that DEBUG is reverting back to the old behavior of
running in the user process.
User Action: Correct the problem specified in the messages preceding
this message. If the problem cannot be solved, submit a Software
Performance Report (SPR).
SIDEFFECT
Message: operators with side effects not supported (++, --) Severity: Warning
SIGVECTRUNC
Message: signal vector was truncated
Severity: Warning The signal vector on this stack frame was too big
to fit into the DEBUG buffer.
User Action: Submit an SPR. This message is handled internally, and
should never be signaled to the user.
SIZEATOMIC
Message: only atomic data types are supported with 'SIZE Severity: Warning
SIZETRUNC
Message: size field truncated to 32 bits
Severity: Informational The size of the entry in a VAX BLISS-32
field specification was larger then 32. The debugger set the
entry size to 32 and executed the command.
User Action: None. This message is informational.
SOURCESCOPE
Message: Source lines not available for .0
%PC Displaying source in a caller of the current routine
Severity: Informational
SPAWNED
Message: subprocess spawned Severity: Informational
SRCLINNOT
Message: source lines not available for module path_name
Severity: Warning The source lines from module CZ cannot be
displayed or searched because there is no source line information
in the Debug Symbol Table (DST) 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 DEBUG for modules written in that language.
SS_INT
Message: system service intercepted Severity: Informational
STEPINTO
Message: cannot step over PC = address_value
Severity: Informational The debugger was unable to step over the
routine and executed a step into the routine instead.
User Action: None. This message is informational.
STGTRUNC
Message: string truncated Severity: Informational
STRNGPAD
Message: string operand lengths don't match, shorter padded with
blanks on the right
Severity: Informational The operands of a string comparison ( 'ABC'
< 'AB' ) did not have the same length. The shorter one is blank
extended on the right.
User Action: Use strings of the same length.
STRTOOLONG
Message: strings longer than 255 characters not supported Severity: Warning
STRUCSIZE
Message: structure size declared as num_units allocation units,
num_units was given
Severity: Informational The VAX BLISS-32 structure size was declared
to be num_units units but was referenced with num_units units.
User Action: None. This message is informational.
SUBOUTBND
Message: subscript subscript_number is out of bounds value is
subscript_value, bounds are low_bound..high_bound
Severity: Informational An attempt to subscript out of the bounds of
an array was made.
User Action: Change the value of the subscript.
SUBSCRNG
Message: subscript out of range, low/high bound for dimension
subscript_number is subscript_bound
Severity: Informational
SUBSTRING
Message: invalid substring (start: low_bound, end: high_bound),
object has length string_size
Severity: Warning The substring specification (start: low_bound,
end: high_bound ) is not within the bounds defined for the data
type.
User Action: Specify a substring specification within the bounds
defined for the data type.
SUBUNITCAN
Message: num_subunits subunit modules also canceled Severity: Informational
SUBUNITNOTCAN
Message: num_subunits subunit modules not canceled Severity: Informational
SUBUNITNOTSET
Message: parent module not set SET MODULE path_name will set parent
module
Severity: Informational
SUBUNITSET
Message: containing module also set Severity: Informational
SUPERDEBUG
Message: SUPERDEBUG not available Severity: Error
SYMNOTACT
Message: non-static variable 'symbol_name' is not active
Severity: Warning The symbol symbol_name is not defined in an active
call frame.
User Action: Check the symbol specified; if correct, ensure that you
have defined the scope correctly.
SYMNOTFND
Message: no symbols matching defined_symbol are defined Severity: Informational
SYNERREXPR
Message: syntax error in expression at or near
'DEBUG_command_segment'
Severity: Error
SYNERRLABEL
Message: syntax error in %LABEL construct, see HELP %LABEL Severity: Error
SYNERRLINE
Message: syntax error in %LINE construct, see HELP %LINE Severity: Error
SYNTAX
Message: command syntax error at or near 'DEBUG_command_segment'
Severity: Error The debugger encountered a command syntax error near
the element DEBUG_command_segment.
User Action: Re-enter the command.
TASKERROR
Message: error error_code from ADA multitasking Severity: Error
TASKNOTABORT
Message: task not aborted; ADA multitasking is executing critical
section
Severity: Error
TASKNOTACT
Message: task cannot be made the active task; task is not ready or
running
Severity: Error
TASKNULL
Message: task is null; cannot set attributes of null task Severity: Error
TERMINATING
Message: process-specification is terminating
Severity: Informational The process process-specification has just
finished execution. All exit handlers in your program have run.
Any SET BREAK/TERMINATING or SET TRACE/TERMINATING events will
now take effect.
TERMTKNREQ
Message: - terminate token is required
Severity: Informational This message appears as additional
information with the INVDSTREC error message. The address or
value specification was not terminated by a terminate token.
This is a compiler error.
TIMESLICE
Message: time slice interval has been slowed to 10.0 seconds Severity: Informational
TOOFEWSUB
Message: too few subscripts, array has num_dimensions dimensions Severity: Warning
TOOMANDIM
Message: too many dimensions in array Severity: Warning
TOOMANERR
Message: too many errors, some errors not reported
Severity: Informational Too many MISMODBEG or certain other errors
occurred. Other similar errors are not reported.
User Action: None. This message is informational.
TOOMANINV
Message: too many invocation numbers in symbol pathname Severity: Error
TOOMANPARM
Message: too many parameters on command Severity: Error
TOOMANSUB
Message: too many subscripts, array has num_dimensions dimensions Severity: Warning
TRYINGONEPRC
Message: attempting to activate main debugger in this process
Severity: Informational Since an error occurred while trying to
create a subprocess to run the main debugger image DEBUGSHR.EXE,
the kernel debugger will attempt to activate the main debugger
image in this process.
UNACREDBGO
Message: unable to create DBG$OUTPUT, SYS$OUTPUT used Severity: Informational
UNACVT
Message: unable to convert radixvalue to datatype_name Severity: Warning
UNALIGNED
Message: data is not aligned on a byte boundary Severity: Warning
UNALLOCATED
Message: entity 'symbol_name' was not allocated in memory (was
optimized away)
Severity: Warning
UNAOPEDBGI
Message: unable to open DBG$INPUT, SYS$INPUT used Severity: Informational
UNAOPESCR
Message: unable to open DBG$OUTPUT for screen output Severity: Informational
UNAOPNHLP
Message: unable to open help library file_specification
Severity: Warning The help library file_specification cannot be
opened to look for the help you requested. The accompanying VAX
RMS status message gives you more information about the reasons
for the library not being opened.
User Action: Examine the VAX RMS status message to determine the
reasons for the help library not being opened, and take the
appropriate action based on that information. Also, verify that
the logical name DBG$HELP is either not defined, or is defined to
indicate the proper file.
UNAOPNINI
Message: unable to open initialization file file_specification Severity: Informational
UNAOPNSRC
Message: unable to open source file file_specification
Severity: Warning Source lines from the file file_specification
cannot be displayed because DEBUG 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 Source lines from the file file_specification
cannot be displayed because DEBUG was unable to read the source
file (represented as file_specification). The accompanying VAX
RMS status message gives more information about the reasons for
the source file not being opened.
User Action: Examine the VAX RMS status message to determine the
reasons for the source file not being read, and take the
appropriate action based on that information.
UNASAVVAL
Message: unable to save value for defined_symbol, definition ignored Severity: Warning
UNASETIMG
Message: unable to set image image_name because it has no symbol
table
Severity: Informational
UNASETTAS
Message: unable to set visible task: registers not available Severity: Error
UNASWISTA
Message: Unable to create debugger stack, using program stack Severity: Informational
UNBPAREN
Message: unbalanced parentheses in expression Severity: Error
UNDEXPN
Message: undefined exponentiation at or near opcode_name Severity: Warning
UNDKEY
Message: state_name key key_name is undefined Severity: Informational
UNIMPLENT
Message: attempt to evaluate unimplemented type Severity: Warning
UNMTCHPARN
Message: unmatched left parenthesis found
Severity: Warning A left parenthesis (() was found, but the matching
right parenthesis ()) is missing.
User Action: Include the right parenthesis ()).
UPBNDOPT
Message: upper bound of subrange was optimized away Severity: Informational
USREVNTERR
Message: user-specified event error code error_code returned by user
RTL
Severity: Error
VALNOTADDR
Message: value of variable 'symbol_name' not usable as address
Severity: Warning The value of the specified variable is not usable
as an address. The address must be a longword.
User Action: Modify the address and retry the operation.
VARNESDEP
Message: variant nesting depth exceeds 20, cannot access record
component
Severity: Error
VERIFYICF
Message: opening/closing command procedure file_specification
Severity: Informational 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 This message is to inform you of the version
number(s) of the main and kernel debuggers. It will only appear
as part of another message, such as INCOMVERSION.
WATCHSIZE
Message: cannot WATCH variables longer than 512 bytes Severity: Error
WATNOWCAN
Message: watchpoint now cancelled
Severity: Informational This message is a sub-message to WATVARSCP,
WATVARPTR, and WATVARPROT. This message indicates that the
original watchpoint has been cancelled (is no longer active).
WATNOWWAT
Message: now watching variable name
Severity: Informational 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 DEBUG. If this message appears, the
watchpoint is still active under this new name.
WATVARGSGONE
Message: global section associated with watched variable variable
name has been unmapped
Severity: Informational The global-section which contained a
global-section watchpoint is no longer mapped by any process that
is under DEBUG control. This message is always followed by the
WATNOWCAN message, since DEBUG must delete the watchpoint.
WATVARGSOVR
Message: watched variable overlaps into a global section
Severity: Error 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 The program mapped a global-section over a
watched variable. This message indicates that DEBUG made the
watchpoint a global-section watchpoint. If the global-section is
mapped by more than one process that is under DEBUG control, the
watched variable will be watched in each process that is mapped
to the global section.
WATVARPROT
Message: watched variable variable name is no longer accessible
Severity: Informational Some action by the program has made the
target variable inaccessible to DEBUG. 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 DEBUG can not read it. This message is
always followed by the WATNOWCAN message, since DEBUG must delete
the watchpoint.
WATVARPTR
Message: watched variable variable name now points to a different
address
Severity: Informational Some pointer in the variable reference has
changed value. This message is accompanied by a further message
indicating whether DEBUG has cancelled the watchpoint or
re-defined the watchpoint to address the original data by a
different name.
WATVARREMAP
Message: watched variable variable name touches a page which has
been re-mapped by the user program
Severity: Informational Some action by the user program has made it
impossible for DEBUG to set the protection on part or all of the
variable. DEBUG will therefore not detect changes to the
variable. This message is always followed by the WATNOWCAN
message, since DEBUG must delete the watchpoint.
WATVARSCP
Message: watched variable variable name has gone out of scope
Severity: Informational 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 DEBUG has cancelled the
watchpoint (in the case that the variable is truly gone) or
re-defined the watchpoint to address the same data by a different
name.
WIDTHDIFF
Message: desired width of display_width is not allowed, width is set
to display_width
Severity: Informational
WITHCAN
Message: num_modules related modules also canceled Severity: Informational
WITHNOTCAN
Message: num_modules directly related modules not canceled Severity: Informational
WITHNOTSET
Message: num_modules directly related modules not set SET MODULE
path_name will set all related modules
Severity: Informational
WITHSET
Message: num_modules related modules also set Severity: Informational
WORKSTACMD
Message: the command DEBUG-command is only supported on workstations
Severity: Warning The debugger only supports the command
DEBUG-commandon Workstations.
User Action: None. This capability of the debugger does not exist
for your terminal or machine.
WPTTRACE
Message: non-static watchpoint, tracing every instruction
Severity: Informational 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 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 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 This message indicates an internal debugger error. User Action: Submit a Software Performance Report.
ZERLENDST
Message: zero length DST record has been ignored (compiler error) Severity: Informational
ZEROINCR
Message: increment for ranged examine is zero; exiting loop Severity: 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.0MP 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 placed 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 placed on hold and commands are
broadcast to all processes. Execution starts only in the visible
process (process 1, in this example):
DBG_1> SET PROCESS/HOLD/ALL
DBG_1> DO (EXAMINE X; STEP)
For %PROCESS_NUMBER 1
MAIN_PROG\X: 78
For %PROCESS_NUMBER 2
TEST\X: 29
stepped to MAIN_PROG\%LINE 26 in %PROCESS_NUMBER 1
26: K = K + 1
DBG_1>
SET_MODE_NOINTERRUPT
The command SET MODE NOINTERRUPT provides an alternative mode of
execution to the default mode (SET MODE INTERRUPT). SET MODE
NOINTERRUPT allows execution to continue without interruption in
other processes when it is suspended in some process. This is
especially useful if, for example, you want to broadcast a STEP
command to several processes with the DO command and complete
execution of the STEP in all these processes. For example:
DBG_1> SET MODE NOINTERRUPT
DBG_1> DO (STEP)
In this example, the DO command executes the STEP command in the
context of all processes currently under debugger control. The
visible process and any other unheld processes start execution.
Because the command SET MODE NOINTERRUPT was entered, the prompt
is displayed only after the STEP has completed (or execution has
been otherwise suspended at a breakpoint or watchpoint) in all
processes.
When SET MODE NOINTERRUPT is in effect, as long as execution
continues in one or more processes, the debugger does not prompt
for input. In such cases, use CTRL/C to interrupt all processes
and display the prompt.
Type HELP SET MODE NOINTERRUPT for more information.
Prompt Suffix
In a multiprocess configuration, "dynamic prompt setting" is
enabled by default. This means that the prompt has a
process-specific suffix that indicates the process number of the
visible process. The debugger assigns a process number
sequentially, starting with process 1, to each process that comes
under debugger control within a given debugging session.
Dynamic prompt setting, as well as the process-specific prompt
suffix are controlled by the command SET PROMPT/[NO]SUFFIX.
Unless dynamic prompt setting is disabled (SET PROMPT/NOSUFFIX),
the debugger prompt always identifies the visible process.
Screen Mode Features
Screen mode displays, whether predefined or user defined, are
associated with the visible process, by default. For example,
SRC shows the source code where execution is suspended in the
visible process, OUT shows the output of commands executed in the
context of the visible process, and so on.
By using the /PROCESS qualifier with the SET DISPLAY and DISPLAY
commands you can create process-specific displays or make
existing displays process specific, respectively. The contents
of a process-specific display are generated and modified in the
context of that process. You can make any display process
specific except for the PROMPT display. For example, the
following command creates the automatically updated source
display SRC_3, which shows the source code where execution is
suspended in process 3:
DBG_2> SET DISPLAY/PROCESS=(%PROC 3) SRC_3 AT RS23 -
SOURCE (EXAM/SOURCE .%SOURCE_SCOPE\%PC)
You assign attributes to process-specific displays as for
displays that are not. For example, the following command makes
display SRC_3 the current scrolling and source display -- that
is, the output of SCROLL, TYPE, and EXAMINE/SOURCE commands are
then directed at SRC_ 3:
DBG_2> SELECT/SCROLL/SOURCE SRC_3
If you enter a DISPLAY/PROCESS or SET DISPLAY/PROCESS command
without specifying a process, the specified display is then
specific to the process that was the visible process when you
entered the command. For example, the following command makes
OUT_X specific to process 2:
DBG_2> DISPLAY/PROCESS OUT_X
The /SUFFIX qualifier appends a process identifying suffix that
denotes the visible process to a display name. This qualifier
may be used directly after a display name in any command that
specifies a display (for example, SET DISPLAY, EXTRACT, SAVE).
It is especially useful within command procedures, in conjunction
with display definitions or with key definitions that are bound
to display definitions.
In a multiprocess configuration, the predefined tracepoint on
process activation automatically creates a new source display and
a new instruction display for each new process that comes under
debugger control. The displays have the names SRC_n and INST_n,
respectively, where n is the process number. These processes 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 released from debug-
ger control (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. This condition is
traced by default, as if you had entered the command SET
TRACE/TERMINATING.
When a process is in the terminated 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.
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 release selected processes from debugger control without
ending the debugging session, use the EXIT or QUIT commands,
specifying one or more processes to be released. For example,
the following command terminates the image running in process 2,
and releases the process from debugger control:
DBG_3> EXIT %PROC 2
DBG_3>
Subsequently, process 2 does not appear in a SHOW PROCESS
display. Type HELP EXIT and HELP QUIT for more information.
Visible Process
The visible process is the process that is the default context
for issuing process-specific commands. Process-specific commands
are those that start execution (STEP, GO, and so on) and those
used for looking up symbols, setting breakpoints, looking at the
call stack and registers, and so on. Commands that are not
process specific are those that do not depend on the mapping of
virtual memory but, rather, affect the entire debugging
environment -- for example, keypad mode and screen mode commands.
Unless dynamic prompt setting is disabled (SET PROMPT/NOSUFFIX),
the debugger prompt suffix always identifies the visible process
(for example, DBG_1>). The SET PROMPT command provides several
options for tailoring the prompt-string prefix and suffix to your
needs.
When you invoke the debugger, the visible process is the first
process that comes under debugger control, namely the process
running the main program. Within a given debugging session, the
debugger assigns a process number sequentially, starting with
process 1, to each process that comes under debugger control.
Additional information available:
Dynamic Process Setting
By default, "dynamic process setting" is enabled (SET
PROCESS/DYNAMIC). As a result, whenever the debugger interrupts
execution and displays its prompt, the process in which execution
is suspended becomes the visible process automatically. Dynamic
process setting occurs in the following situations: when a
breakpoint or watchpoint is triggered, at an exception condition,
on the completion of a STEP command, or when the last process
performs an image exit. Dynamic process setting is illustrated
in the following example, which also illustrates dynamic prompt
setting:
DBG_1> SHOW PROCESS/ALL
Number Name Hold State Current PC
* 1 JONES step MAIN_PROG\%LINE 22
2 JONES_1 interrupted TEST\%LINE 4
DBG_1> DO/PROCESS=(%PROC 2) (SET BREAK %LINE 11)
DBG_1> GO
break at TEST\%LINE 11 in %PROCESS_NUMBER 2
DBG_2> SHOW PROCESS/ALL
Number Name Hold State Current PC
1 JONES interrupted MAIN_PROG\%LINE 28
* 2 JONES_1 break TEST\%LINE 11
DBG_2>
In this example, initially process 1 is the visible process, as
indicated by the prompt suffix and the SHOW PROCESS display. The
DO command sets a breakpoint in the context of process 2.
Execution is resumed with the GO command and is suspended at the
breakpoint in process 2. Process 2 is now the visible process,
as indicated by the prompt suffix and the SHOW PROCESS display.
When dynamic process setting is disabled (SET PROCESS/NODYNAMIC),
the visible process remains unchanged until you specify another
process with the SET PROCESS/VISIBLE command.
If you have entered the command SET MODE NOINTERRUPT and then
started execution in several processes with the DO command, the
prompt is displayed only after execution has been suspended in
all processes. In this case, the visible process remains
unchanged, unless the last process performs an image exit (and
thereby becomes the visible process).
SET_PROCESS
Use the SET PROCESS command (with the default /VISIBLE qualifier)
to establish another process as the visible process. For
example, the following SET PROCESS command makes process 2 the
visible process:
DBG_1> SET PROCESS %PROC 2
DBG_2>
In this example, because dynamic prompt setting is enabled by
default, the SET PROCESS command has also caused the prompt
string suffix to change. It now indicates that process 2 is the
visible process. All process-specific commands are now executed
in the context of process 2.
New Features
Additional information available:
V4.2
This section points out which features and commands are new in
version 4.2 of the debugger. These are documented in detail
elsewhere in this help library:
Ada language support. See help on LANGUAGE ADA.
Aggregate watchpoints. See help on SET WATCH aggregate.
Dynamic module setting. See help on SET MODE DYNAMIC.
Enable and Disable AST. See help on ENABLE and DISABLE.
Exception lexicals. See help on "Lexical %EXC".
Exit handlers. See help on SHOW EXIT_HANDLERS.
Instruction display. See help on "Screen Instruction-display".
Large terminal support. See help on SET TERMINAL.
Noline mode. See help on SET MODE NOLINE.
Parameters to SHOW MODULE. See help on SHOW MODULE Parameters.
Scroll mode. See help on SET MODE SCROLL.
Setting the debugger prompt. See help on SET PROMPT.
%SOURCE_SCOPE. See help under "Screen Source-display".
V4.4
This section points out which features and commands are new in
version 4.4 of the debugger.
DIBOL language support. See help on "Language DIBOL".
DISPLAY/[NO]POP and DISPLAY/[NO]PUSH.
EXAMINE/TYPE
New screen windows. See help on "Screen_Features Windows".
Scan language support. See help on "Language SCAN".
Scope default of 0,1,2,3,...N. See help on "SET SCOPE Default".
SELECT/INPUT, SELECT/ERROR, SELECT/PROGRAM.
SET ATSIGN and SHOW ATSIGN.
SET EDITOR and SHOW EDITOR.
Shareable Image support. See the "Shareable_Image" subtopic.
SHOW STACK
SS$_DEBUG signal parameters. See help on "SS$_DEBUG".
STEP/[NO]JSB and STEP/[NO]SHARE.
There are also various new screen features that are discussed in
the subtopics:
Additional information available:
Display AttributesExtracting DisplaysKey DefinitionsMoving Displays
PROMPT DisplayResizing DisplaysVertically Divided Windows
Shareable ImagesWindow Definitions
Display Attributes
In addition to the attributes INSTRUCTION, OUTPUT, SCROLL, and
SOURCE, the debugger now provides the following attributes, which
are also selected with the SELECT command:
ERROR --- A display with the ERROR attribute displays
debugger diagnostic messages.
INPUT --- A display with the INPUT attribute echoes your
debugger input.
PROGRAM --- A display with the PROGRAM attribute displays
program output. Currently, only the new predefined PROMPT
display can have the PROGRAM attribute.
PROMPT --- A display with the PROMPT attribute is where the
debugger prompts for input. Currently, only the new
predefined PROMPT display can have the PROMPT attribute.
For example, the following command causes your input, debugger
output, and debugger diagnostic messages to be logged in the OUT
display in the proper sequence:
DBG> SELECT/INPUT/ERROR OUT
Type HELP Screen_Features Display_Attributes for information on
assigning display attributes.
Extracting Displays
You can now save screen displays into a file, or create a file
with all the debugger commands necessary to re-create the current
screen state at a later time. Type HELP EXTRACT for a
description of the EXTRACT command.
Key Definitions
The default definitions for keypad keys KP7 and MINUS have been
changed to accommodate changes in predefined display and window
definitions. The new definitions are as follows:
KP7 = DISPLAY SRC AT LH1, INST AT RH1, OUT AT S45,PROMPT AT S6
GOLD KP7 = DISPLAY INST AT LH1, REG AT RH1, OUT AT S45,PROMPT AT S6
BLUE KP7 = Not defined
MINUS = DISPLAY %NEXTDISP AT S12345
GOLD MINUS = Not defined
BLUE MINUS = DISPLAY SRC AT H1, OUT AT S45, PROMPT AT S6 (this is the default)
See the "Window_Definitions" sub-topic for more information on
the new windows.
Moving Displays
You can move a display vertically and/or horizontally across the
screen by means of the MOVE command. Type HELP MOVE for a
description of the MOVE command.
PROMPT Display
There is a new PROMPT predefined display where the debugger
prompts for input, forces program output, and (by default) prints
debugger diagnostic messages. By default, PROMPT occupies the
bottom sixth of the screen (the predefined window S6). On a
VT100 or VT200 series terminal, S6 includes lines 21 through 24.
The PROMPT display is of the new display kind "PROGRAM". PROMPT
is the only display of that kind (no other PROGRAM displays can
be created). Note that, compared to other displays, PROMPT has
several restrictions. To eliminate possible confusion when
manipulating that display:
o PROMPT can never be hidden by another display. It is always
on top of the display "pasteboard".
o PROMPT can be moved anywhere on the screen, expanded to fill
the full screen height, and shrunk down to two lines. But
PROMPT must always occupy the full width of the screen and,
therefore, can not be moved, expanded, or shrunk
horizontally.
Type HELP Screen_Features Display_Attributes for information on
assigning display attributes to various displays, including the
PROMPT display.
Resizing Displays
You can expand and contract displays by means of the EXPAND
command. Type HELP EXPAND for a description of the EXPAND
command.
Vertically Divided Windows
Previously, display windows had to occupy the full width of the
screen (columns 1-80). Now, windows can be defined to occupy any
rectangular region of the screen. Windows occupying the left or
right half of the screen (columns 1-40 and 42-80, respectively)
are predefined. With these predefined displays, column 41 is
reserved as a border.
To observe the effect, invoke the debugger, use the command SET
MODE SCREEN, then press keypad key 7 (KP7). That key definition
has been changed to show the SRC display in the top left half of
the screen (LH1), the INST display in the top right half (RH1),
the OUT display under these two, and the new PROMPT display under
OUT.
Shareable Images
With version 4.4 of the debugger, you can debug shareable images
in the same way as you debug your main image. That is, full
symbol table information is now available for shareable images.
To build a shareable image with symbol table, you would compile
your modules with the /DEBUG qualifier, and then link the image
with the /SHARE and /DEBUG qualifiers. For example:
$ LINK/SHARE/DEBUG FOO
Then, once you have run your main program with the debugger, you
can load the symbol table information for the shareable image FOO
using the command:
DBG> SET IMAGE FOO
See the individual help topics for information on the commands
"SET IMAGE", "CANCEL IMAGE", and "SHOW IMAGE".
Window Definitions
Previously, the bottom sixth of the screen (lines 21-24 on a
VT100 or VT200 series terminal) could not be used for defining
display windows. That area was reserved for the debugger prompt,
debugger diagnostic messages, and program output. Also, windows
had to occupy the full width of the screen.
Now, windows can be defined to occupy any rectangular region of
the screen. The SET WINDOW, SET DISPLAY, and DISPLAY commands
now accept horizontal (column) as well as vertical (line)
coordinates. The general form of a window specification is
illustrated for the SET WINDOW command:
SET WINDOW wname AT (start-line,line-count
[,start-column,column-count])
Type "HELP SET WINDOW", "HELP SET DISPLAY", and "HELP DISPLAY"
for more information.
Old and new default windows have been defined to cover the
greater usable screen height and to account for vertically
defined windows. For example, on a VT100 or VT200 series
terminal, FS (full screen) now covers lines 1-24, H1 lines 1-12,
H2 lines 13-24, and so on. A new symbol prefix, S, denotes a
multiple of one sixth of the screen. For example, S56 is the
bottom two sixths of the screen. And for each of the full-width
predefined windows (for example, FS, H2, T12, Q3, S45, and so on)
there is also a left-half and a right-half predefined window.
These window names have the prefix L and R, respectively.
Examples of predefined windows follow:
Window Location
Name (start-line,line-count,start-column,column-count)
FS (1,23,1,80)
LFS (1,23,1,40)
RH1 (1,11,42,39)
LH2 (13,11,1,40)
LT12 (1,15,1,40)
Q234 (7,17,1,80)
RS56 (17,7,42,39)
V4.6
This section points out which features and commands are new in
version 4.6 of the debugger.
ADA Predefined Breakpoints
Call from exception break.
Nonstatic watchpoints.
Step from exception break.
See the subtopics for details.
Additional information available:
ADA-Predefined-BreakpointsCall-Exception-BreakNonstatic-Watchpoints
Step-Exception-Break
ADA-Predefined-Breakpoints
If any portion of your program is written in the ADA programming
language, then two breakpoints are automatically established on
Debugger startup. These breakpoints are on ADA Events
"Dependents_Exception" and "Exceptions_Terminated". Whenever you
perform the "SHOW BREAK" command, these breakpoints are
displayed.
Call-Exception-Break
Prior to version 4.6, the debugger did not allow you to CALL from
an exception break. The CALL command is now allowed in this
situation. For example:
Earlier versions of DEBUG:
DBG> SET BREAK/EXC
DBG> GO
%SYSTEM-F-ACCVIO, access violation, ...
break on exception preceding BLIHANDLER\SUBR\%LINE 38
38: a = ..a;
DBG> CALL PRIME(7)
%DEBUG-W-STEFROEXC, call from exception break is not allowed
Version 4.6 of DEBUG:
DBG> SET BREAK/EXC
DBG> GO
%SYSTEM-F-ACCVIO, access violation, ...
break on exception preceding BLIHANDLER\SUBR\%LINE 38
38: a = ..a;
DBG> CALL PRIME(7)
value returned is 00000001
There are some restrictions associated with issuing a CALL from
an exception breakpoint: Breakpoints, tracepoints, and
watchpoints are not triggered within the CALLed routine.
(Normally, you could set a breakpoint within a routine, call it
with the CALL command, and break within the routine). But since
most people use CALL to call their own dumping or debugging
routines, they do not want to set breakpoints in the dumping
routine, and this restriction does not matter.
Nonstatic-Watchpoints
Starting with version 4.6, it is possible to set watchpoints on
variables which are on the stack or allocated to registers. To
implement these watchpoints the debugger must trace every
instruction. (Watchpoints of static variables are implemented by
write-protecting the page and catching the access violation).
Therefore, watches of stack or register variables are slower than
watches of static variables.
When you set a watchpoint, the debugger determines whether the
watched location is a stack location or register, and if so,
gives an informational that you are setting a stack or register
watchpoint. The information is also displayed on SHOW WATCH:
DBG> SET WATCH I
%DEBUG-I-WPTTRACE, non-static watchpoint, tracing every instruction
DBG> SHOW WATCH
watchpoint of EIGHTQUEENS\TRYCOL\I [tracing every instruction]
The watchpoint then operates like any other watchpoint, e.g:
DBG> GO
watch of EIGHTQUEENS\TRYCOL\I at EIGHTQUEENS\TRYCOL\%LINE 46
46: i := i + 1 ;
old value: 0
new value: 1
Since you are watching a variable local to a routine, the
watchpoint is automatically cancelled when you return from the
routine:
DBG> STEP/RETURN
stepped on return from routine EIGHTQUEENS\TRYCOL
59: end ; (* trycol *)
DBG> STEP
stepped to EIGHTQUEENS\%LINE 69
69: writeln ;
%DEBUG-I-WATCHVAR, watched variable TRYCOL\I has gone out of scope
%DEBUG-I-WATCHCAN, watchpoint now cancelled
For a recursive routine, it is possible to have separate
watchpoints for the same variable at different levels of
recursion. For example, in the above example, if TRYCOL was
recursive, you could have watchpoints of TRYCOL 0\I, TRYCOL 1\I,
and so on.
For more information see the help on SET WATCH, subtopics
/STATIC, /NOSTATIC, /INTO, and /OVER.
Step-Exception-Break
Prior to version 4.6, the debugger would not allow you to STEP
from an exception break. Now, the STEP command is allowed in
this situation, and the effect is that you step to the start of
whatever exception handler gets control. If you have not
declared any exception handlers, then the exception is just
resignalled, and you end up back at the debugger prompt (that is,
the STEP has no effect). Here is an example:
Earlier versions of DEBUG:
DBG> SET BREAK/EXC
DBG> GO
%SYSTEM-F-ACCVIO, access violation, ...
break on exception preceding BLIHANDLER\SUBR\%LINE 38
38: a = ..a;
DBG> STEP
%DEBUG-W-STEFROEXC, step from exception break is not allowed
Version 4.6:
DBG> SET BREAK/EXC
DBG> GO
%SYSTEM-F-ACCVIO, access violation...
break on exception preceding BLIHANDLER\SUBR\%LINE 38
38: a = ..a;
DBG> EX .FP ! Check for a handler
7FF00D68: 00000400
DBG> EX .. ! See what the handler is
BLIHANDLER\HANDLER1: entry mask ^M<R2,R3>
DBG> STEP ! STEP to the handler
stepped to routine BLIHANDLER\HANDLER1
V5.0
The new features and commands for V5.0 of the debugger are as
follows:
Dynamically reformatting register display
EXAMINE/OPERANDS (and SET MODE [NO]OPERANDS)
MACRO support enhancements
New predefined windows for screen mode
SET MODULE/CALLS
SET PROMPT/[NO]POP
SET MODE [NO]SEPARATE
SPAWN/INPUT and /OUTPUT
See the subtopics for details.
Additional information available:
Dynamic Register DisplayEXAMINE OPERANDS QualifierMACRO Support
Screen Mode WindowsSET MODULE CALLS QualifierSPAWN qualifiers
Dynamic Register Display
Register displays, such as the predefined display REG, are now
dynamic by default. This means that the window dimensions adjust
proportionally when you change the screen height or width with a
SET TERMINAL command.
Also, a register display now reformats the displayed information,
in the best way possible, to the window in which it has been
displayed. The default window for REG remains RH1. However, if
you were to display REG in window Q3, for example, the
information would reformat automatically to fit into the new
window.
Type HELP Screen_Features Register_Display for more information.
EXAMINE OPERANDS Qualifier
In order to aid in debugging MACRO code, a /OPERANDS qualifier
has been added to the EXAMINE command. If you examine an
instruction with the /OPERANDS qualifier, then the debugger
displays the addresses and contents of each of the instruction
operands. For example,
DBG> EXAM/OPER .PC
X\X$START+0C: MOVL B^04(R4),R7
B^04(R4) X\X$START\K (address 00001058) contains 00000016
R7 R7 contains 00000000
Type HELP EXAMINE/OPERANDS, SET MODE OPERANDS, and SET MODE
NOOPERANDS for more information.
MACRO Support
The following enhancements have been made to MACRO support, to
match the support available with other languages.
The debugger now displays MACRO source lines, whether you are
debugging in line mode or screen mode.
Therefore, when the language is set to MACRO, the default
behavior of the STEP command is now STEP/LINE (not
STEP/INSTRUCTION, the previous behavior).
When the language is set to MACRO, the debugger interprets an
address expression used in a language expression as the current
value stored at that address (not the address denoted by the
address expression, the previous behavior). This change affects
how language expressions are evaluated by the commands EVALUATE,
DEPOSIT, IF, FOR, REPEAT, and WHILE, and by WHEN clauses as used
with the commands SET BREAK, SET TRACE, and SET WATCH. For
example, the command DEPOSIT X = Y + 2 evaluates the sum of 2 and
the current value of Y and deposits the resulting value into X.
See also HELP LANGUAGE MACRO EXPRESSIONS for a description of
additional enhancements.
Screen Mode Windows
The predefined windows now include eighths of the screen height,
in addition to halves, thirds, quarters, and sixths, plus the
right and left halves. The letter "E" denotes an eighth. For
example, E2 denotes the top second eighth of the screen, and RE67
denotes the right sixth and seventh eighths of the screen.
SET MODULE CALLS Qualifier
SET MODULE/CALLS sets all the modules that currently have
routines on the call stack. These are the modules that are
listed when you enter a SHOW CALLS command. You would use the
/CALLS qualifier to set modules that might not have been
dynamically set by the debugger.
SET_MODE_SEPARATE
The SET MODE [NO]SEPARATE command applies only to VAXstations.
Before V5.0, if you invoked the debugger on a VAXstation, a
separate window was created for debugger input and output.
Starting with V5.0 you have control over this behavior. The
command SET MODE SEPARATE creates a separate window for debugger
input and output. The effect is as if you had defined DBG$INPUT
and DBG$OUTPUT to point to the newly created window. The command
SET MODE NOSEPARATE disables this behavior, so that debugger
input and output are displayed in the window where you invoked
the debugger.
Type HELP SET MODE SEPARATE and SET MODE NOSEPARATE for more
information. Also type HELP SET PROMPT/POP and SET PROMPT/NOPOP
(a related feature).
SET_PROMPT
The SET PROMPT command has a new qualifier "/[NO]POP". This
qualifier applies only to VAXstations.
Before V5.0, if you were running the debugger in an emulated
terminal window on a VAXstation, the window popped over other
windows and attached to the keyboard whenever the debugger
prompted for input.
Starting with V5.0 you have control over this behavior. The
command SET PROMPT/POP enables this behavior. The command SET
PROMPT/NOPOP (which is the default) disables this behavior, so
that the debugger window does not automatically pop over other
windows and does not attach to the keyboard when the debugger
prompts for input.
If you enter the SET PROMPT command without specifying a new
prompt string, the prompt string is unchanged. If you enter the
command without the /[NO]POP qualifier, the prompt behavior is
set to /NOPOP, which is the default.
Type HELP SET PROMPT/POP for more information. Also type HELP
SET MODE SEPARATE and SET MODE NOSEPARATE (a related feature).
SPAWN qualifiers
Two new qualifiers have been added to the SPAWN command.
The /INPUT qualifier specifies an input file containing one or
more DCL commands to be executed by the spawned subprocess.
The /OUTPUT qualifier causes the output from the SPAWN operation
be written to the specified file.
Type HELP SPAWN/INPUT and SPAWN/OUTPUT for more information.
V5.0MP
The new features for Version V5.0MP of the debugger are as
follows:
1. 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 normally (without the debugger) in only one
process (see the Default_Configuration subtopic). Use the
multiprocess configuration to debug programs that run
normally in more than one process (see the
Multiprocess_Configuration subtopic). The Compatibility
subtopic explains the use of commands and other features in
the default and multiprocess configurations.
2. You can now selectively display and cancel user-defined and
predefined breakpoints and tracepoints (see the Breakpoints
subtopic).
Type HELP Release_Notes V5.0MP 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 understood 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 normally 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, entirely 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. Release selected processes from debugger control (EXIT,
QUIT).
7. Abort the execution of a debugger command or interrupt
program execution without interrupting the debugging session
(CTRL/C, (SET, SHOW) ABORT_KEY).
8. 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).
9. Set and cancel breakpoints and tracepoints to trigger
automatically when processes come under debugger control (SET
(BREAK,TRACE) /ACTIVATING, CANCEL (BREAK,TRACE) /ACTIVATING.)
10. Set and cancel breakpoints and tracepoints to trigger
automatically when processes perform an image exit (SET
(BREAK,TRACE) /TERMINATING, CANCEL (BREAK,TRACE)
/TERMINATING).
11. 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.
12. Create process-specific screen-mode displays (SET
DISPLAY/PROCESS, DISPLAY/PROCESS, plus /SUFFIX qualifier for
display names). Several keypad key sequences are now
associated with process-specific displays. Type the
following command for information about new and changed key
definitions:
DBG> HELP Release_Notes V5.0MP Keypad
13. 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
associated with multiprocess debugging.
CONNECT
CTRL/C, CTRL/Y
(SET,SHOW) ABORT_KEY
DEFINE/PROCESS_GROUP
DISPLAY, SET DISPLAY
/[NO]PROCESS=
/SUFFIX=
DO
EXIT, QUIT
(SET,CANCEL) BREAK
/ACTIVATING
/TERMINATING
(SET,CANCEL) TRACE
/ACTIVATING
/TERMINATING
SET MODE [NO]INTERRUPT
SET PROCESS
SET PROMPT
/[NO]SUFFIX=keyword
SHOW PROCESS
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".
Release Notes
Additional information available:
V4.2
This section notes any incompatible changes that have been made
for version 4.2 of the debugger that you should be aware of.
New features in version 4.2 are listed seperately, under "HELP
New_features".
Additional information available:
Register WindowsMacro-defaultsBasic-defaults
Register Windows
In version 4.0 of the debugger, the register display occupied 5
lines of the screen. Special windows were invented to accomodate
a display of this size, and these were named R1, R2, R3, R12, and
R23.
For version 4.2 of the debugger, the register display has been
squeezed down to occupy just four lines. This was done by making
more efficient use of space and also by removing the translation
of R0 as an error message. (The translation of R0 can still be
obtained by doing EXAMINE/CONDITION R0).
Now that the register display occupies 4 lines, it fits in the
standard windows Q1, Q2, Q3, and Q4 (one quarter of the screen).
So the special purpose windows R1, R2, and R3 have been dropped.
If you refer to them in any command files, you should change your
command file to use one of the "Q" (quarter) displays instead.
Example:
old DBG$INIT file:
DISPLAY REG AT R1
DISPLAY OUT AT R23
new DBG$INIT file:
DISPLAY REG AT Q1
DISPLAY OUT AT Q234
Macro-defaults
In version 4.0, the screen default for MACRO was to display the
registers on the top of the screen, and the output display in the
rest of the screen. Because of the addition of the instruction
display in version 4.2, this default was changed to be the
assembly language instructions (INST display) in H1 and the
output display in H2. This make the MACRO default closer to the
rest of the languages.
If you want to display the registers for MACRO, you now need to
specify that in a DISPLAY command. For example, the following
puts the registers in the top quarter and the assembly
instructions in the second quarter:
DBG> DISPLAY REG AT Q1
DBG> DISPLAY INST AT Q2
Basic-defaults
In version 4.0, the screen-mode defaults for language BASIC were
the same as for language MACRO. This was because, at that time,
the BASIC compiler was not generating the symbol table records
needed to do source display.
With version 2.4 of BASIC, source display is available for that
language. So the screen mode default for BASIC has been changed
to be the source display in the top half of the screen, and the
output display in the bottom half of the screen (the same as for
the other high-level languages).
V4.4
This section notes any known bugs that could not be fixed in time
for the version 4.4 release. Also noted are any incompatible
changes that have been made for Version 4.4 of the debugger that
you should be aware of. New features are listed separately under
HELP New_Features.
Additional information available:
Key DefinitionsRegister DisplayScreen ManagementShareable Images
VAXstationsWindow Definitions
Key Definitions
The default definitions for keypad keys KP7 and MINUS have been
changed to accommodate changes in predefined display and window
definitions. The new definitions are as follows:
KP7 = DISPLAY SRC AT LH1, INST AT RH1, OUT AT S45,PROMPT AT S6
GOLD KP7 = DISPLAY INST AT H1, OUT AT S45, PROMPT AT S6
BLUE KP7 = Not defined
MINUS = DISPLAY %NEXTDISP AT S12345
GOLD MINUS = Not defined
BLUE MINUS = DISPLAY SRC AT H1, OUT AT S45, PROMPT AT S6
Type "HELP New_Features V4.4 Window_Definitions" for more
information on the new window definitions.
Register Display
The screen mode register display (REG) has been reformatted to
take advantage of the new window capabilities. REG is now a
square display that fits in one of the quarters of the screen
(for example, the top left-hand window LH1 or the top right-hand
window RH1). If your debugger initialization file had a command
like
DBG> DISPLAY REG AT Q3
then you may want to change it to something like
DBG> DISPLAY REG AT RH1
to accommodate the re-shaped register display.
Screen Management
In version 4.4 the debugger uses the SMG screen package to
implement its screen mode. If your program also calls SMG
routines, and you debug it with the debugger running on the same
terminal, then there probably will be interference between your
program and the debugger.
Our recommended solution is to debug the program using two
terminals. For a description of how to do this, see Chapter 8 of
the VMS Debugger Manual.
Shareable Images
Support for debugging shareable images is new in version 4.4 of
the debugger and is described under "New_Features". There is one
restriction you should be aware of when debugging shareable
images. The shareable image must have been linked with the
/DEBUG qualifier in order for shareable image debugging to work.
If the image was not linked with the /DEBUG qualifier, then the
debugger may allow you to SET IMAGE to that image but then it may
show you incorrect results.
In summary:
$ LINK/SHARE/DEBUG X can SET IMAGE, everything OK
$ LINK/SHARE X can SET IMAGE, get incorrect results
$ LINK/SHARE/NOTRACE X cannot SET IMAGE
VAXstations
In version 4.4, the debugger comes up in its own window when you
run it on the VAXstation.
There is a problem with control-Y handling when the debugger is
running in its own VAXstation window. The control-Y is ignored
when the keyboard is attached to the debugger window. To make
the control-Y take effect you must attach the keyboard to the
original window (by pointing at it with the mouse), and then type
the control-Y.
We expect to fix this problem in a future release.
Window Definitions
If you use predefined windows such as H2 in your initialization
file or in your own command or key definitions then you should be
aware of the following changes.
Changes to display window definitions and the addition of a
PROMPT predefined display have caused some incompatibilities with
earlier versions of the debugger.
Previously, the bottom sixth of the screen (lines 21-24) on a
VT100 or VT200 series terminal) could not be used for defining
display windows. That area was reserved for the debugger prompt,
debugger input, debugger diagnostic messages, and program output.
Now, display windows can occupy any part of the screen, and a new
predefined PROMPT display shows the debugger prompt, debugger
input, and program output.
The boundaries of the default windows have been redefined to
cover the greater usable screen height. For example, on a VT100
or VT200 series terminal, FS (full screen) now covers lines 1-24,
H1 lines 1-12, H2 lines 13-24, and so on. A new symbol prefix,
S, denotes a multiple of one sixth of the screen. For example,
S56 is the bottom two sixths of the screen. (There are other new
predefined windows that occupy only the left or right halves of
the screen. Type "HELP New_Features V4.4
Vertically_Divided_Windows".)
The PROMPT display occupies S6 by default, but can be moved
elsewhere, like any display. Note that, to avoid confusion, the
PROMPT display is always on top of the display "pasteboard" and
therefore hides the part of any display that overlaps the PROMPT
window.
By default, the OUT display is now at S45 (not, as previously, at
H2), so it is not hidden by the PROMPT display. And the keypad
keys that manipulate display windows have been redefined so that
no display is positioned behind S6 (Type "HELP Release_Notes V4.4
Key_Definitions"). If your debugger initialization file contains
DISPLAY or SET DISPLAY commands to locate displays near the
bottom of the screen (for example, at H2, T3, or Q34) you may
want to modify these window definitions so the displays are not
hidden.
Type "HELP New_Features V4.4 Window_Definitions" for more
information on the new window definitions.
V4.6
This section notes any known bugs that could not be fixed in time
for the version 4.6 release. Also noted are any incompatible
changes that have been made for Version 4.6 of the debugger that
you should be aware of. New features are listed separately under
HELP New_Features.
Additional information available:
SET IMAGE CommandSET SCOPE CommandVAXstation support
SET IMAGE Command
When you enter a SET IMAGE command, if you specify a list of
images, only the last image in the list is set. For example:
SET IMAGE A,B,C
In this example, only image C is set. Note that you can set
images A, B, and C by issuing separate SET IMAGE commands for
each image.
SET SCOPE Command
Before issuing a SET SCOPE command, be sure that the module that
contains the elements named in the path name has already been
set, either dynamically by the debugger or by means of a SET
MODULE command. Use the SHOW MODULE command to determine whether
a module is set --- that is, whether its symbols have been loaded
into the run-time symbol table.
VAXstation support
Previously, if the debugger detected that it was running on a
VAXstation, it would create a separate emulated terminal window
for its own input and output. This meant that terminal I/O
performed by the program was logically and physically separated
from DEBUG's I/O, particularly helpful when debugging screen mode
applications.
In order to remove a potential problem on the VAXstation, the
method DEBUG uses to control the separate window has been
changed. Previously, DEBUG controlled the separate window with
UIS$xxx calls. The debugger now uses the new OSC sequences to
communicate control functions to the terminal emulator.
With this update, DEBUG's behavior is slightly different. It
still creates a separate window, but only if both of the
following two conditions are met:
o You must be running the SDC release of VWS V3.0 (or higher).
o You must have the following system logical name defined:
$ DEFINE/SYSTEM/EXEC UIS$VT_ENABLE_OSC_STRINGS TRUE
V5.0
This section notes the following:
o Any known bugs that could not be fixed in time for Version
5.0.
o Any incompatible changes that have been made for Version 5.0.
o Any problems indicated in previous release notes that have
been corrected for Version 5.0.
New features are listed separately under HELP New_Features.
Additional information available:
Corrected ProblemsDynamic Register DisplayMACRO SupportObsolete Commands
Screen Mode Line WrappingVAXstation DEBUG Separate Window Control
Corrected Problems
Problems with the SET IMAGE and SET SCOPE commands that were
noted in the V4.6 release notes have been corrected (type HELP
RELEASE_NOTES V4.6 for a full description of the problems).
Before Version 5.0, when you specified a list of images with the
SET IMAGE command, only the last image specified was set. Now,
all of the specified images are set. As before, the current
image is the last image in the list (the last image set).
Previously, before issuing a SET SCOPE command, you had to be
sure that the module containing the path-name elements specified
in the SET SCOPE command was set. Now, if that module is not
already set, the SET SCOPE command automatically sets it for you.
Dynamic Register Display
Register displays, such as the predefined display REG, are now
dynamic by default. This means that the window dimensions adjust
proportionally when you change the screen height or width with a
SET TERMINAL command.
Also, a register display now reformats the displayed information,
in the best way possible, to the window in which it has been
displayed. The default window for REG remains RH1. However, if
you were to display REG in window Q3, for example, the
information would reformat automatically to fit into the new
window.
Type HELP Screen_Features Register_Display for more information.
MACRO Support
Several enhancements have been made to MACRO support for Version
5.0, to match the support available with other languages (type
HELP New_Features for more information). Some of these
enhancements result in different behavior from previous versions
of the debugger.
When the language is set to MACRO, the default behavior of the
STEP command is now STEP/LINE (not STEP/INSTRUCTION, the previous
behavior). This change was made possible because source line
display is now available for MACRO programs.
When the language is set to MACRO, the debugger interprets an
address expression used in a language expression as the current
value stored at that address (not the address denoted by the
address expression, the previous behavior). This change affects
how language expressions are evaluated by the commands EVALUATE,
DEPOSIT, IF, FOR, REPEAT, and WHILE, and by WHEN clauses as used
with the commands SET BREAK, SET TRACE, and SET WATCH. For
example, the command DEPOSIT X = Y + 2 evaluates the sum of 2 and
the current value of Y and deposits the resulting value into X.
Previously, that command evaluated the sum of 2 and the address
of Y and deposited the resulting value into X.
As before, you can obtain the address of an address expression by
means of the EVALUATE/ADDRESS command.
Obsolete Commands
The following commands and command qualifiers are obsolete
starting with VMS Version 5.0 and are no longer documented, for
the reasons stated. For compatibility with previous versions,
these commands and qualifiers will be supported indefinitely
except as indicated.
ALLOCATE
The debugger now allocates and deallocates memory automatically.
This command now has no effect.
CANCEL EXCEPTION BREAK
This command duplicates the effect of the newer command CANCEL
BREAK/EXCEPTION, which better conforms to the general command
format for canceling breakpoints.
SET EXCEPTION BREAK
This command duplicates the effect of the newer command SET
BREAK/EXCEPTION, which better conforms to the general command
format for setting breakpoints.
SET MODULE/ALLOCATE
The debugger now allocates and deallocates memory automatically.
This qualifier now has no effect.
UNDEFINE
This command duplicates the effect of the newer command DELETE,
which conforms to the analogous DCL command DELETE.
UNDEFINE/KEY
This command duplicates the effect of the newer command
DELETE/KEY, which conforms to the anologous DCL command
DELETE/KEY.
Screen Mode Line Wrapping
The change described affects how very long lines of debugger
output are presented in the OUTPUT display or in a DO display ---
for example, when you enter an EXAMINE command to examine long
ASCII strings.
Before Version 5.0, the debugger wrapped text in the OUTPUT
display or in a DO display if the text was longer than the width
of the terminal, regardless of the width of the display window.
The debugger now wraps text in these displays only if it exceeds
255 characters. If there is any text beyond the right edge of
the display window, a diamond-shaped character (or a question
mark for terminals that do not support the diamond character)
appears at the right edge. This indication is analogous to the
behavior of a text editor.
To see the hidden text, enter the SCROLL/RIGHT command (or press
keypad-key 6 repeatedly, as needed).
VAXstation DEBUG Separate Window Control
This note applies only to VAXstations.
The default behavior of the debugger on VAXstations has changed.
With the addition of the SET MODE [NO]SEPARATE command, a
separate window for debugger input and output is no longer
created by default when you invoke the debugger. You can now
control the creation of the separate window. Type HELP
New_Features V5.0 SET_MODE_SEPARATE and HELP SET MODE SEPARATE
for more information.
With the addition of the /[NO]POP qualifier to the SET PROMPT
command, the debugger window no longer pops and attaches to the
keyboard by default when the debugger prompts for input. You can
now control this behavior. Type HELP New_Features V5.0 SET
PROMPT and HELP SET PROMPT/POP for more information.
If you enter the SET PROMPT command without specifying a new
prompt string, the prompt string is unchanged. If you enter the
command without the /[NO]POP qualifier, the prompt behavior is
set to /NOPOP, which is the default.
The default behavior in V4.4, 4.5, and 4.6 was to pop the window
and attach it to the keyboard.
To achieve the previous behavior, you can put the following
commands in your DBG$INIT file:
SET MODE SEPARATE
SET PROMPT/POP
V5.0MP
Type HELP New_Features V5.0MP for a summary description of all
new features for this release of the debugger. The release note
subtopics describe the following:
1. Changes in the debugger configuration from the V5.0 or
earlier debugger (Debugging_Configurations subtopic)
2. Compatibility between the new default and multiprocess
debugging configurations (Compatibility subtopic)
3. Changes in the use of CTRL/Y and CTRL/C
4. Changes in debugger predefined keypad key definitions.
5. Changes in the use of debugger commands in DCL command
procedures (DCL_Command_Procedures subtopic).
6. System management considerations for multiprocess debugging
(System_Management subtopic).
7. How the debugger automatically uses the single-process (V5.0
and earlier) debugger configuration if a separate process
cannot be created for the main debugger image (Single_Process
subtopic), and what to do in this case.
8. Any known restrictions (Restrictions subtopic)
Additional information available:
CompatibilityCTRL-Y ChangesDCL Command Procedures
Debugging ConfigurationsKeypad ChangesRestrictionsSingle Process
System Management
Compatibility
All of the commands, qualifiers, and built-in symbols that are
provided for multiprocess debugging are also understood 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. 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 because it allows command
procedures used for multiprocess debugging to be used for
debugging programs that run in only one process.
CTRL-Y Changes
Starting with this version of the debugger, use CTRL/C rather
than CTRL/Y from within a debugging session to interrupt program
execution or the execution of a debugger command. 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.
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
$ DEFINE/USER DBG$INPUT DEBUG_COMMANDS.TMP
$ RUN PROG2
$ DELETE DEBUG_COMMANDS.TMP;*
$ SHOW SYSTEM
$ LOGOUT
This change applies to both the default configuration and the
multiprocess configuration.
Debugging Configurations
Starting with this version, 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.
This separation enables you to have two debugging configurations:
1. 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.
2. 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.
The new default configuration replaces the V5.0 (and earlier)
configuration, whereby the debugger and the program being
debugged ran in the same process. The default configuration
provides the following advantages over the single-process
configuration:
1. The main debugger and program run entirely in separate
processes, with very little interference.
2. Within a debugging session, you can interrupt program
execution or the execution of a debugger command without
aborting the debugging session. By default, this is achieved
by pressing CTRL/C. However, if your program already has a
CTRL/C AST service routine enabled, you can reassign the
abort function to another CTRL-key sequence with the command
SET ABORT_KEY.
Type HELP Debugging_Configurations for more information.
Keypad Changes
Several previously unused keypad key combinations now enable you
to display process-specific source and instruction displays.
Also note that, 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 command SHOW KEY/STATE=state key-name.
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.
Restrictions
Additional information available:
Abort Key After SpawnDebugging Installed Writeable Images
Abort Key After Spawn
If you use the SPAWN command to create a subprocess or invoke a
spawned editor from the debugger, the debugger's abort key is
disabled and remains disabled after you return to the debugger
prompt. The only way to re-enable the abort key is to log out
and log back in (and re-invoke the debugger).
Debugging Installed Writeable Images
If you attempt to DEBUG an image that is installed (using the
Install Utility) /WRITEABLE/SHARED, then you will get an error
similar to:
VAX DEBUG Version V5.0-00 MP
%DEBUG-I-CANTOPNIMG, cannot open image WRTSHR
-RMS-E-FLK, file currently locked by another user
-SYSTEM-W-ACCONFLICT, file access conflict
This error occurs because DEBUG is unable to open an image file
that is installed /WRITEABLE when it is running in a separate
process. One workaround for this problem is to not install the
image. If this isn't possible, another workaround is to make the
following logical name assignment:
$ DEFINE DBG$PROCESS NONE
This definition causes the debugger to share the same process as
the user program rather than running in a subprocess. Digital
encourages you to use this unsupported configuration only when
necessary, since it may not be provided in future releases of VAX
DEBUG. While this workaround may also correct other problems,
you are strongly encouraged to submit an SPR if you encounter any
such problems. See the Single_Process subtopic for more
information.
Single Process
When you invoke the debugger in either the default or
multiprocess configuration, if a separate process cannot be
created to run the main debugger image, the debugger issues the
following messages and automatically uses the single-process
(V5.0 and earlier) configuration:
%DEBUG-E-CANTCREATEMAIN, could not create the VAX DEBUG subprocess
-SYSTEM-F-EXQUOTA, exceeded quota
%DEBUG-I-SHRPRC, VAX DEBUG will share user process
Under these conditions, you should be aware of the following
differences compared to the new default or multiprocess
configurations:
1. Although you can use the debugger to debug a program that
normally runs in only one process, you cannot use the
additional debugger features that enable you to debug a
multiprocess program.
2. To abort a debugger command or program execution from within
a debugging session, do not use CTRL/C. Instead, as for the
V5.0 or earlier debugger, use the CTRL/Y -- DEBUG sequence.
CTRL/Y returns you to DCL level. The DCL command DEBUG
invokes the debugger, which then displays its prompt. Also,
you cannot use the SET ABORT_KEY command to reassign the
abort function to another CTRL-key sequence.
Type HELP Release_Notes V5.0MP System_Management for information
on tuning your system for multiprocess debugging (or ask your
system manager to assist you). In most cases the information
provided should enable you to tune your system so that you can
run the debugger in the new default or multiprocess
configuration.
System Management
Having several users debugging programs which occupy several
processes can place a load on a system. The subtopics describes
the resources used by the multiprocess debugger, so that you can
tune your system for this activity. Note that the subtopics
cover only the resources used by the debugger. You may have to
tune your system to support the multiprocess programs themselves.
Additional information available:
User Quotas
To do multiprocess debugging, each user needs sufficient PRCLM
quota to create an additional subprocess for the debugger, beyond
the number of processes needed for the multiprocessing program.
BYTLM, ENQLM, FILLM, and PGFLQUOTA are pooled quotas. They may
need to be increased to account for the debugger subprocess.
o Each user's ENQLM quota should be increased by at least the
number of processes being debugged.
o Each user's PGFLQUOTA may need to be increased. If a user
has insufficient PGFLQUOTA, the debugger may fail to
activate, or produce "virtual memory exceeded" errors during
execution.
o Each user's BYTLM and FILLM quotas may need to be increased.
The debugger requires enough BYTLM and FILLM quotas to open
each image file being debugged, the corresponding source
files, and the DEBUG input, output, and log files. The DEBUG
SET MAX_SOURCE_FILES command 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
parameters GBLPAGES and GBLSECTIONS may need to be increased.
For example, if there are 10 users using the debugger
simultaneously, 10 global sections (GBLSECTIONS) using a total of
650 global pages (GBLPAGES) are required by the debugger.
Screen Features
The debugger provides a set of screen features designed to be
used on VT-series terminals and MicroVAX workstations. The
command SET MODE SCREEN enables screen mode and SET MODE NOSCREEN
disables it. In screen mode, "screen displays" can be defined
and viewed through windows on the terminal screen. A screen
display is a data structure which contains lines of text. The
text may be normal debugger output, the text of a source file, a
special register display, or a special assembly-language
instruction display. The text of a display may be viewed through
a window on the terminal screen and can be scrolled back and
forth through that window. When screen mode is first set, the
debugger provides the following predefined displays: a source
display (SRC), a debugger output display (OUT), and a special
display (PROMPT) where the debugger prompts for input.
Optionally, a register display (REG) and an instruction display
(INST) can also be displayed.
Several screen features are designed to facilitate debugging
multiprocess programs. Type HELP Multiprocess
Screen_Mode_Features for complete information.
Additional information available:
CommandsDisplay AttributesDisplay KindsExamplesInstruction Display
KeypadMoving DisplaysPredefined DisplaysPROMPT Display
Register DisplayResizing DisplaysScreen ModeScrollingSource Display
Windows
Commands
A number of commands are used to control the debugger's screen
features. They are grouped here according to their general
purpose.
Control overall operation: SET MODE SCREEN SET TERMINAL
SET MODE NOSCREEN SHOW TERMINAL
Create screen windows: SET WINDOW CANCEL WINDOW
SHOW WINDOW
Create screen displays: SET DISPLAY CANCEL DISPLAY
SHOW DISPLAY
Modify screen displays: DISPLAY SCROLL
EXPAND SELECT
MOVE SHOW SELECT
Preserve screen displays: EXTRACT SAVE
You can obtain further information on each of these commands
through HELP. The most frequently used commands are DISPLAY,
SCROLL, EXPAND and MOVE. The DISPLAY command is used to modify
the absolute position of displays on the screen, to modify
display attributes, and to refresh the screen, among other
things. The SCROLL command scrolls the text of a display through
its screen window. The EXPAND and MOVE commands modify the
relative position of displays on the screen.
The EXPAND, MOVE, and SET TERMINAL commands are especially useful
for manipulating displays on the larger screen of a MicroVAX
workstation.
Display Attributes
You can assign attributes to displays by means of the SELECT
command. The possible display attributes are:
o ERROR --- A display with the ERROR attribute displays
debugger diagnostic messages.
o INPUT --- A display with the INPUT attribute echoes your
debugger input.
o INSTRUCTION --- A display with the INSTRUCTION attribute
displays the decoded MACRO instruction stream of the module
being debugged. The keypad-key sequence BLUE-COMMA selects
the next instruction display on the display list as the
current instruction display.
o OUTPUT --- A display with the OUTPUT attribute displays
debugger output that is not already being directed to another
display (for example, diagnostic messages). The keypad-key
sequence GOLD-KP3 selects the next output display on the
display list as the current output display.
o PROGRAM --- A display with the PROGRAM attribute is the
display where program input and output are forced.
o PROMPT --- A display with the PROMPT attribute is the display
where the debugger prompts for input.
o SCROLL --- A display with the SCROLL attribute can be
scrolled with the SCROLL command (or keypad keys KP2, KP8,
KP4, and KP6). KP3 selects the next display on the display
list as the current scrolling display (except for PROMPT,
which cannot be scrolled).
o SOURCE --- A display with the SOURCE attribute displays the
source code of the module being debugged, if available. The
keypad-key sequence BLUE-KP3 selects the next source display
on the display list as the current source display.
Although a display can have more than one attribute, subject to
the kind of display it is, only one display can have a particular
attribute. That display is then known as the "current" display
with that attribute (for example, current scrolling display,
current input display).
In the following example, the display OUT is selected as the
current input, error, and scrolling display. After the command
is executed debugger input, debugger output (assuming OUT was
previously selected for output), and debugger diagnostic messages
are logged in the OUT display in the proper sequence, and OUT is
the current scrolling display:
DBG> SELECT/INPUT/ERROR/SCROLL OUT
Attributes can be assigned to the various display kinds only as
follows:
Display Kind:
DO INSTRUCTION OUTPUT PROGRAM REGISTER SOURCE
Attribute:
ERROR yes yes
INPUT yes
INSTRUCTION yes
OUTPUT yes yes
PROGRAM yes
PROMPT yes
SCROLL yes yes yes yes yes yes
SOURCE yes
You unselect one or more attributes (deassign the attribute(s))
by issuing the SELECT command with the appropriate qualifier(s)
but without specifying a display. For example, the following
command unselects the INSTRUCTION and SCROLL attributes:
DBG> SELECT/INSTRUCTION/SCROLL
After the command is executed, no display has the INSTRUCTION or
SCROLL attribute. When the ERROR, OUTPUT, or PROGRAM attribute
is unselected only the PROMPT display shows diagnostic messages,
debugger output, or program output, respectively. When the
INPUT, INSTRUCTION, SCROLL, or SOURCE attribute is unselected, no
display, including the PROMPT display, has that attribute. The
PROMPT attribute cannot be unselected.
By default, when you invoke screen mode, the predefined displays
are selected for attributes as follows:
Attribute: Predefined display:
ERROR PROMPT
INPUT
INSTRUCTION
OUTPUT OUT
PROGRAM PROMPT
PROMPT PROMPT
SCROLL SRC
SOURCE SRC
Display Kinds
There are five kinds of screen displays: output displays, source
displays, register displays, instruction displays, and program
displays (only the predefined display named PROMPT has the
display kind PROGRAM). An output display holds normal debugger
output lines up to some maximum number of lines. An output
display may also have a debugger command list which is
automatically executed to create the display text each time the
debugger gets control from the user program. A source display
displays the program's source code. The output from TYPE and
EXAMINE/SOURCE commands can be directed to a source display, and
a source display can be automatically updated through a list of
debugger commands. An instruction display is much like a source
display, except that it holds assembly language instructions
instead of source lines. The output from an EXAMINE/INSTRUCTION
command can be directed to an instruction display, and an
instruction display can be automatically updated through a list
of debugger commands. A register display shows the contents of
the VAX registers, and is automatically updated as the program
runs. The register display is primarily intended for MACRO
programmers. Except for the PROGRAM display named PROMPT,
displays of all kinds are created with the SET DISPLAY command.
They are manipulated on the screen with the DISPLAY command,
which takes a number of qualifiers.
Examples
The following command places the source display SRC in the left
top half of the screen, the instruction display INST in the right
top half, the output display OUT under these two in the fourth
and fifth sixths of the screen, and the PROMPT display in the
bottom sixth.
DBG> DISPLAY SRC AT LH1, INST AT RH1, OUT AT S45, PROMPT AT S6
The following set of commands place the register display REG at
the top of the screen, create a new display WATCHABCD in the
middle of the screen to watch variables A,B,C, and D, and place
the OUT display below these, above the PROMPT display.
DBG> DISPLAY REG AT T1
DBG> SET DISP/MARK WATCHABCD AT T2 DO (EXAMINE A,B,C,D)
DBG> DISP OUT AT S5
Instruction Display
An instruction display gives you a scrollable window into the
assembly-language instruction stream. The predefined display
INST is an instruction display which is automatically updated so
that the arrow points to the instruction at your current PC.
DISPLAY INST makes it appear. The numbers to the left of the
instructions are line numbers.
If you select the instruction display using "SELECT/INST INST"
(or, PF4-COMMA on the keypad), then output of an
EXAMINE/INSTRUCTION command is directed to the instruction
display.
If you select the instruction diplay as the scrolling display
using SELECT/SCROLL INST (or by rotating the scrolling attribute
with KP3), then you can scroll it up, down, left, or right.
Pressing keypad-key KP7 places the predefined source display SRC
in the upper left half of the screen (LH1), INST in the upper
right half of the screen (RH1), the predefined output display OUT
below these two at S45, and the PROMPT display below OUT at S6.
Pressing the combination BLUE-MINUS redisplays SRC across the
entire top half of the screen (this is the default
configuration).
Keypad
Many of the keypad keys are predefined to manipulate screen-mode
displays. For example:
KP8, KP6, KP2, and KP4 are "scroll/up", "scroll/right",
"scroll/down", and "scroll/left", respectively. The display that
is scrolled is determined by which display has the "scroll"
attribute. This attribute can be cycled through the displays
using the KP3 key.
There are a few predefined screen layouts that can be selected
with keypad keys: (1) A source display on the top half of the
screen, and an output display on most of the bottom half, above
the prompt display. This is the default layout for most
languages. The screen can always be put in this state with the
keypad key sequence BLUE-MINUS. (2) A source display in the top
left half, and instruction display in the top right half, and an
output display under these two, above the prompt display. This
can be selected with key KP7. (3) An instruction display in the
top left half, a register display in the top right half, and an
output display under these two, above the prompt display. This
can always be selected with the key sequence GOLD-KP7.
If you are debugging a multiprocess program, several key
combinations enable you to manipulate process-specific source and
instruction displays. The debugger automatically creates these
displays whenever a new process comes under debugger control.
Type HELP Multiprocess Screen_Mode_Features for complete
information.
Type HELP Keypad for diagrams identifying the keypad-key
functions.
Moving Displays
You can move a display vertically and/or horizontally across the
screen by means of the MOVE command. Type HELP MOVE for a
description of the MOVE command.
Predefined Displays
The debugger has five predefined displays which are available
when you invoke screen mode:
(1) A source display called SRC, which is automatically
positioned at your current PC, can be repositioned using the TYPE
or EXAMINE/SOURCE commands, and can be scrolled up and down using
keys KP8 and KP2. See the Source_Display subtopic for more
information.
(2) An assembly-language instruction display called INST, which
is automatically positioned at your current PC. INST is
initially removed but can be made to appear using "DISPLAY INST".
It can be selected as the scrolling display by using key KP3 to
rotate the scroll attribute to the INST display, and then
scrolled up or down using KP8 and KP2. See the
Instruction_Display subtopic for more information.
(3) A register display called REG, which is automatically updated
to show the current values of your registers. REG is initially
removed but can be made to appear with the command DISPLAY REG.
See the Register_Display subtopic for more information.
(4) An output display called OUT, where debugger output is
directed. If you want to intermix debugger input and output in
the same display, you can copy debugger input to the OUT display
with "SELECT/INPUT OUT".
(5) A prompt display called PROMPT, where the debugger prompts
for input, forces program output, and (by default) prints
debugger diagnostic messages. See the PROMPT_Display subtopic
for more information.
If you are debugging a multiprocess program, in addition to these
five displays the debugger automatically creates process-specific
source and instruction displays whenever a new process comes
under debugger control. Type HELP Multiprocess
Screen_Mode_Features for complete information.
PROMPT Display
The PROMPT predefined display is a non-scrollable display that
shows the debugger prompt, debugger input, and (by default)
program output and debugger diagnostic messages. By default,
PROMPT occupies the bottom sixth of the screen (the predefined
window S6). On a VT100 or VT200 series terminal, S6 includes
lines 21 through 24.
The PROMPT display is of the display kind "PROGRAM". PROMPT is
the only display of that kind (no other PROGRAM displays can be
created). Note that, compared to other displays, PROMPT has
several restrictions, to eliminate possible confusion when
manipulating that display:
o PROMPT can never be hidden by another display. It is always
on top of the display "pasteboard".
o PROMPT can be moved anywhere on the screen, expanded to fill
the full screen height, and shrunk down to two lines. But
PROMPT must always occupy the full width of the screen and,
therefore, can not be moved, expanded, or shrunk
horizontally.
See the Display_Attributes subtopic for information on assigning
display attributes to various displays, including the PROMPT
display.
Register Display
A register display is an automatically updated display that shows
the current values (in hexadecimal format) of all VAX machine
registers (R0 through R11), the four condition code bits (C, V,
Z, and N) of the processor status longword (PSL), and the top
several values on the stack and on the current argument list.
Values in a register display are highlighted when they change as
you execute the program.
The predefined display REG is a register display. REG is
initially marked as removed from the display pasteboard and is
not visible. You need to use the DISPLAY command (or the keypad
key sequence GOLD-7) to show the REG display. The sequence
GOLD-KP7 places the predefined instruction display INST in the
upper left half of the screen (LH1), REG in the upper right half
of the screen (RH1), the predefined output display OUT below
these two at S45, and the PROMPT display below OUT at S6.
Pressing the sequence BLUE-MINUS redisplays SRC across the entire
top half of the screen (this is the default configuration).
Like other displays, register displays are dynamic by default.
This means that the window dimensions adjust proportionally when
you change the screen height or width with a SET TERMINAL
command. In addition, if the window of a register display is
resized, the debugger automatically reformats the displayed
information to adapt to the new window size. The debugger always
displays the contents of registers R0 through R11, AP, FP, SP,
PC, and PSL. If the resized window is too small to display all
the register information, you can scroll vertically or
horizontally to view any information that may be hidden. If the
resized window is larger than necessary to display register
information, the debugger fills the remaining space with
information (in hexadecimal format) contained in the user stack.
Resizing Displays
You can expand and contract displays by means of the EXPAND
command. Type HELP EXPAND for a description of the EXPAND
command.
Screen Mode
When the debugger is invoked, five predefined displays are
created automatically. The first time you enter screen mode with
the SET MODE SCREEN command, the debugger puts three of the
displays on the screen for you: a source display (SRC) which is
automatically updated as you STEP or GO through your program, an
output display (OUT) which captures your normal debugger output,
and a prompt display (PROMPT) where the debugger prompts for your
input. The instruction display (INST) and the register display
(REG) are also created but not displayed initially. These
capture the current instruction stream and registers
respectively. Except for the PROMPT display, each display can be
scrolled back and forth with the SCROLL command. You can turn
off screen mode with the command SET MODE NOSCREEN, after which
you can use the terminal in the normal manner without the display
windows. The displays still exist, however, and can be brought
back at any time by again entering SET MODE SCREEN.
If you are debugging a multiprocess program, in addition to these
five predefined displays the debugger automatically creates
process-specific source and instruction displays whenever a new
process comes under debugger control. Type HELP Multiprocess
Screen_Mode_Features for complete information.
Scrolling
All screen displays except for the PROMPT display can be scrolled
through their screen windows by entering the SCROLL command. For
example, SCROLL/UP SRC scrolls the window up over display SRC.
To avoid having to specify the display name on your SCROLL
commands, you can select the display you want to scroll as the
"current scrolling display" with the SELECT command. Thus
SELECT/SCROLL SRC followed by SCROLL/UP causes the debugger to
scroll up through display SRC even through SRC was not explicitly
named on the SCROLL command. For more information, see the
SCROLL and SELECT commands.
Source Display
A source display gives you a scrollable window into your source
code. The predefined source display SRC has associated with it
the command "EXAMINE/SOURCE .%SOURCE_SCOPE\%PC". This command
causes the display to be automatically centered at your current
source line. The built-in symbol %SOURCE_SCOPE means scope 0
when source lines are available in scope 0. Otherwise, it means
the same as scope N, where N is the first level going down the
stack where source lines are available.
The significance of the %SOURCE_SCOPE symbol is that if your PC
value is at a location where source lines are not available (for
example, in an RTL routine), the debugger attempts to display
source lines in the caller of the current routine (that is, scope
1 or 1 level down the stack). If source lines are still not
available at that level, the debugger tries scope 2, and so on.
If the source display shows source lines that are not associated
with the current routine, an informational message to that effect
is displayed.
Pressing the keypad-key sequence BLUE-MINUS displays the
predefined displays SRC in the top half of the screen, OUT below
SRC at S45, and PROMPT at the bottom of the screen at S6. This
is the default. Pressing keypad-key KP7 places SRC in the upper
left half of the screen (LH1), the instruction display INST in
the upper right half of the screen (RH1), OUT below these two at
S45, and PROMPT below OUT at S6.
Windows
A screen window is a rectangular region on the terminal screen
defined by the four quantities (RBEG, RLEN, CBEG, CLEN). RBEG is
the line number at which the window starts and RLEN is the number
of lines of text in the window. CBEG is the column number at
which the window starts and CLEN is the number of columns (width)
of the window. If the CBEG and CLEN numbers are omitted from a
window definition then the window defaults to the full width of
the screen.
The debugger provides a number of predefined windows for regions
such as the top half of the screen, the top left quarter of the
screen, and so on. For example:
H1 = top half of screen = (1,11,1,80)
H2 = bottom half of screen = (13,11,1,80)
LH1 = top left quarter of screen = (1,11,1,40)
There are also T1, T2, and T3 for thirds of the screen, Q1
through Q4 for quarters, S1 through S6 for sixths, and E1 through
E8 for eigths. Each of these also has a "L" for left half (for
example, LQ1) and and "R" for right half (for example, RQ1). FS
denotes the full screen.
You can see all defined windows through the SHOW WINDOW command.
You can also define your own named windows with the SET WINDOW
command, or delete window names with the CANCEL WINDOW command.
Windows are specified on the DISPLAY and SET DISPLAY commands to
indicate where displays are to be shown on the terminal screen.
Example:
DBG> DISPLAY SRC AT LH1
DBG> DISPLAY INST AT RH1
DBG> DISPLAY OUT AT S4
DBG> DISPLAY PROMPT AT S56