 |
OpenVMS Debugger Manual
In most cases, this default scope search list enables you to resolve
ambiguities in a predictable, natural way that is consistent with
language rules. But if you cannot access a symbol that is defined
multiple times, use either of the following techniques:
- Specify the symbol with a path-name prefix. The path-name prefix
consists of any nesting program units (for example,
module\routine\block) that are necessary to specify the symbol
uniquely. For example:
DBG> EXAMINE MOD4\ROUT3\X
DBG> TYPE MOD4\27
|
- Establish a new default scope (or a scope search list) for symbol
lookup by using the SET SCOPE command. You can then specify the symbol
without using a path-name prefix. For example:
DBG> SET SCOPE MOD4\ROUT3
DBG> EXAMINE X
DBG> TYPE 27
|
The SET SCOPE command is useful in those cases where otherwise you
would need to use a path name repeatedly to specify symbols.
To restore the default scope search list, use the CANCEL SCOPE command.
When the default scope search list is in effect, you can use the SET
SCOPE/CURRENT command to specify that symbol searches start at a
numeric scope other than scope 0, relative to the call stack (for
example, scope 2).
When you use the SET SCOPE command, the debugger searches only the
program locations you specify explicitly, unless you specify /CURRENT.
Also, the scope or scope search list established with a SET SCOPE
command remains in effect until you restore the default scope search
list or enter another SET SCOPE command. However, if you specify
/CURRENT, the default scope search list is restored whenever program
execution is resumed.
The SET SCOPE command updates a screen-mode source or instruction
display only if you specify /CURRENT.
If a name you specify in a SET SCOPE command is the name of both a
module and a routine, the debugger sets the scope to the routine. In
such cases, use the SET SCOPE/MODULE command if you want to set the
scope to the module.
If you specify a module name in a SET SCOPE command, the debugger sets
that module if it is not already set. However, if you want only to set
a module, use the SET MODULE command rather than the SET SCOPE command,
to avoid the possibility of disturbing the current scope search list.
Related commands:
CANCEL ALL
SEARCH
SET MODULE
(SHOW,CANCEL) SCOPE
SHOW SYMBOL
SYMBOLIZE
TYPE
Examples
#1 |
DBG> EXAMINE Y
%DEBUG-W-NOUNIQUE, symbol 'Y' is not unique
DBG> SHOW SYMBOL Y
data CHECK_IN\Y
data INVENTORY\COUNT\Y
DBG> SET SCOPE INVENTORY\COUNT
DBG> EXAMINE Y
INVENTORY\COUNT\Y: 347.15
DBG>
|
In this example, the first EXAMINE Y command indicates that symbol Y is
defined multiple times and cannot be resolved from the current scope
search list. The SHOW SYMBOL command displays the different
declarations of symbol Y. The SET SCOPE command directs the debugger to
look for symbols without path-name prefixes in routine COUNT of module
INVENTORY. The subsequent EXAMINE command can now interpret Y
unambiguously.
#2 |
DBG> CANCEL SCOPE
DBG> SET SCOPE/CURRENT 1
|
In this example, the CANCEL SCOPE command restores the default scope
search list (0,1,2,...,n). The SET SCOPE/CURRENT command then
changes the scope search list to 1,2,...,n, so that symbol
searches start with scope 1 (that is, with the caller of the routine in
which execution is currently suspended). The predefined source and
instruction displays SRC and INST, respectively, are updated and now
show the source and instructions for the caller of the routine in which
execution is suspended.
#3 |
DBG> SET SCOPE 1
DBG> EXAMINE %R5
|
In this example, the SET SCOPE command directs the debugger to look for
symbols without pathname prefixes in scope 1 (that is, in the caller of
the routine in which execution is suspended). The EXAMINE command then
displays the value of register R5 in the caller routine. The SET SCOPE
command without /CURRENT does not update any source or instruction
display.
#4 |
DBG> SET SCOPE 0, STACKS\R2, SCREEN
|
This command directs the debugger to look for symbols without path-name
prefixes according to the following scope search list. First the
debugger looks in the PC scope (denoted by 0). If the debugger cannot
find a specified symbol in the PC scope, it then looks in routine R2 of
module STACKS. If necessary, it then looks in module SCREEN. If the
debugger still cannot find a specified symbol, it looks no further.
#5 |
DBG> SHOW SYMBOL X
data ALPHA\X ! global X
data ALPHA\BETA\X ! local X
data X (global) ! same as ALPHA\X
DBG> SHOW SCOPE
scope: 0 [ = ALPHA\BETA ]
DBG> SYMBOLIZE X
address ALPHA\BETA\%R0:
ALPHA\BETA\X
DBG> SET SCOPE \
DBG> SYMBOLIZE X
address 00000200:
ALPHA\X
address 00000200: (global)
X
DBG>
|
In this example, the SHOW SYMBOL command indicates that there are two
declarations of the symbol X---a global ALPHA\X (shown twice) and a
local ALPHA\BETA\X. Within the current scope, the local declaration of
X (ALPHA\BETA\X) is visible. After the scope is set to the global scope
(SET SCOPE \), the global declaration of X is made visible.
SET SEARCH
Establishes default qualifiers (/ALL or /NEXT, /IDENTIFIER or /STRING)
for the SEARCH command.
Format
SET SEARCH search-default[,...]
Parameters
search-default
Specifies a default to be established for the SEARCH command. Valid
keywords (which correspond to SEARCH command qualifiers) are as follows:
ALL
|
Subsequent SEARCH commands are treated as SEARCH/ALL, rather than
SEARCH/NEXT.
|
IDENTIFIER
|
Subsequent SEARCH commands are treated as SEARCH/IDENTIFIER, rather
than SEARCH/STRING.
|
NEXT
|
(Default) Subsequent SEARCH commands are treated as SEARCH/NEXT, rather
than SEARCH/ALL.
|
STRING
|
(Default) Subsequent SEARCH commands are treated as SEARCH/STRING,
rather than SEARCH/IDENTIFIER.
|
Description
The SET SEARCH command establishes default qualifiers for subsequent
SEARCH commands. The parameters that you specify with SET SEARCH have
the same names as the qualifiers for the SEARCH command. The qualifiers
determine whether the SEARCH command: (1) searches for all occurrences
of a string (ALL) or only the next occurrence (NEXT); and (2) displays
any occurrence of the string (STRING) or only those occurrences in
which the string is not bounded on either side by a character that can
be part of an identifier in the current language (IDENTIFIER).
You can override the current SEARCH default for the duration of a
single SEARCH command by specifying other qualifiers. Use the SHOW
SEARCH command to identify the current SEARCH defaults.
Related commands:
SEARCH
(SET,SHOW) LANGUAGE
SHOW SEARCH
Example
|
DBG> SHOW SEARCH
search settings: search for next occurrence, as a string
DBG> SET SEARCH IDENTIFIER
DBG> SHOW SEARCH
search settings: search for next occurrence, as an identifier
DBG> SET SEARCH ALL
DBG> SHOW SEARCH
search settings: search for all occurrences, as an identifier
DBG>
|
In this example, the SET SEARCH IDENTIFIER command directs the debugger
to search for an occurrence of the string in the specified range but
display the string only if it is not bounded on either side by a
character that can be part of an identifier in the current language.
The SET SEARCH ALL command directs the debugger to search for (and
display) all occurrences of the string in the specified range.
SET SOURCE
Specifies a directory search list, a directory search method, or both a
list and a method for source files.
Format
SET SOURCE directory-spec[,...]
Parameters
directory-spec
Specifies any part of an OpenVMS file specification (typically a
device/directory) that the debugger is to use by default when searching
for a source file. For any part of a full file specification that you
do not supply, the debugger uses the file specification stored in the
module's symbol record (that is, the file specification that the source
file had at compile time).
If you specify more than one directory in a single SET SOURCE command,
you create a source directory search list (you can also specify a
search list logical name that is defined at your process level). In
this case, the debugger locates the source file by searching the first
directory specified, then the second, and so on, until it either
locates the source file or exhausts the list of directories.
Qualifiers
/DISPLAY
Specifies the directory search list used when the debugger displays
source code. The default display search directory is the compilation
directory.
/EDIT
Specifies the directory search list used during execution of the
debugger's EDIT command. The default edit search directory is the
compilation directory.
/EXACT (default)
Specifies the directory search method used. In this case, the debugger
searches for the exact version of the source file, as
indicated in the debugger symbol table.
/LATEST
Specifies the directory search method used. In this case, the debugger
searches for the latest version of the source file, that is,
the highest-numbered version in your directory.
/MODULE=module-name
Specifies the directory search list used only for the
designated module. You can append one or more of the qualifiers listed
above to the SET SOURCE/MODULE command.
/ORIGINAL
(Applies to STDL programs only. Requires installation of the
Correlation Facility (a separate layered product) and invocation of the
kept debugger.) Specifies that the debugger display the original STDL
source file, rather than the intermediate files produced during STDL
compilation.
Description
By default, the debugger expects a source file to be in the same
directory it was in at compile time. If a source file has been moved to
a different directory since compile time, use the SET SOURCE command to
specify a directory search list and search method to locate the file.
Specifying the Directory Search List
On OpenVMS Version 6.1 and later, a complete OpenVMS file specification
has the following format:
node::device:[directory]file-name.file-type;version-number
|
This format reflects the DECnet node name functionality used in
the default version of DECnet shipped with the OpenVMS
operating system. For more information, see the DECnet for OpenVMS Networking Manual.
On OpenVMS systems running Version 6.1 or later and DECnet-Plus for OpenVMS, a
complete file specification can include expanded node designations,
called full names. Full names are hierarchically structured
DECnet-Plus for OpenVMS node names that can be stored in a DECdns naming
service. Full names can be a maximum of 255 bytes long, in the
following format:
namespace:.directory ... .directory.node-name
|
In this syntax statement, namespace identifies the global
naming service, directory ... .directory defines the
hierarchical directory path within the naming service, and
node-name is the specific object defining the DECnet
node.
For information on full names and suggestions for setting up a system
of names, see the OpenVMS System Manager's Manual. For information on DECnet-Plus for OpenVMS,
see the DECnet-Plus for OpenVMS Introduction and User's Guide.
If the full file specification of a source file exceeds 255 characters,
the debugger cannot locate the file. You can work around this problem
by first defining a logical name "X" (at DCL level) to expand
to your long file specification, and then using the SET SOURCE X
command.
A SET SOURCE command with neither the /DISPLAY nor the /EDIT qualifier
changes both the display and edit search directories.
When compiling a program with the /DEBUG qualifier, if you use a
rooted-directory logical name to specify the location of the source
file, make sure that it is a concealed rooted-directory
logical name. If it is not concealed and you move the source file to
another directory after compilation, you cannot then use the debugger
SET SOURCE command to specify the new location of the source file.
To create a concealed rooted-directory logical name, use the DCL
command DEFINE with the /TRANSLATION_ATTR=CONCEALED qualifier.
Specifying the Directory Search Method
When you issue a SET SOURCE command, be aware that one of the two
qualifiers ---/LATEST or /EXACT---will always be active. These
qualifiers affect the debugger search method. The /LATEST qualifier
directs the debugger to search for the version last created (the
highest-numbered version in your directory). The /EXACT qualifier
directs the debugger to search for the version last compiled (the
version recorded in the debugger symbol table created at compile time).
For example, a SET SOURCE/LATEST command might search for SORT.FOR;3
while a SET SOURCE/EXACT command might search for SORT.FOR;1.
If the debugger locates this version using the directory search list,
it checks that the creation or revision date and time, file size,
record format, and file organization are the same as the original
compile-time source file. If these characteristics match, the debugger
concludes that the original source file has been located in its new
directory.
If the debugger cannot locate this version using the directory search
list, it identifies the file that has the closest revision date and
time (if such a file exists in that directory) and issues a NOTORIGSRC
message ("original version of source file not found") when first
displaying the source code.
Specifying the /EDIT Qualifier
The /EDIT qualifier is needed when the files used for the display of
source code are different from the files to be edited by using the EDIT
command. This is the case with Ada programs. For Ada programs, the
(SET, SHOW, CANCEL) SOURCE commands affect the search of files used for
source display (the "copied" source files in Ada program
libraries); the (SET,SHOW,CANCEL) SOURCE/EDIT commands affect the
search of the source files you edit when using the EDIT command. If you
use /MODULE with /EDIT, the effect of /EDIT is further qualified by
/MODULE.
For information specific to Ada programs, type HELP Language_Support
Ada.
Specifying the /ORIGINAL Qualifier
Before you can use the /ORIGINAL qualifier in a SET SOURCE command, the
Correlation Facility (a separate layered product) must be installed on
your system. Refer to Correlation Facility documentation for
information on creating a correlation library before debugging.
Then, invoke the kept debugger and issue the SET SOURCE/ORIGINAL
command as follows:
$ DEBUG/KEEP
DBG> SET SOURCE/ORIGINAL
DBG> RUN filename.EXE
|
After issuing these commands, you can debug STDL source code in the
same way you debug any other supported language program.
Related commands:
(SHOW,CANCEL) SOURCE
Examples
#1 |
DBG> SHOW SOURCE
no directory search list in effect
DBG> SET SOURCE [PROJA],[PROJB],[PETER.PROJC]
DBG> SHOW SOURCE
source directory list for all modules,
match the latest source file version:
[PROJA]
[PROJB]
[PETER.PROJC]
|
In this example, the SET SOURCE command specifies that the debugger
should search directories [PROJA], [PROJB], and [PETER.PROJC], in that
order, for the latest version of source files.
#2 |
DBG> SET SOURCE/MODULE=CTEST/EXACT [],SYSTEM::DEVICE:[PROJD]
DBG> SHOW SOURCE
source directory search list for CTEST,
match the exact source file version:
[]
SYSTEM::DEVICE:[PROJD]
source directory list for all other modules,
match the latest source file version:
[PROJA]
[PROJB]
[PETER.PROJC]
|
In this continuation of the previous example, the SET
SOURCE/MODULE=CTEST command specifies that the debugger should search
the current default directory ([]) and SYSTEM::DEVICE:[PROJD], in that
order, for source files to use with the module CTEST. The /EXACT
qualifier specifies that the search will try to locate the exact
version of the CTEST source files found in the debug symbol table.
#3 |
DBG> SET SOURCE /EXACT
DBG> SHOW SOURCE
no directory search list in effect,
match the exact source file
DBG> SET SOURCE [JONES]
DBG> SHOW SOURCE
source directory list for all modules,
match the exact source file version:
[JONES]
DBG> CANCEL SOURCE /EXACT
DBG> SHOW SOURCE
source directory list for all modules,
match the latest source file version:
[JONES]
|
In this example, the SET SOURCE/EXACT command establishes a search
method (exact version) that remains in effect for the SET SOURCE
[JONES] command. The CANCEL SOURCE/EXACT command not only cancels SET
SOURCE/EXACT command, but also affects the SET SOURCE [JONES] command.
SET STEP
Establishes default qualifiers (/LINE, /INTO, and so on) for the STEP
command.
Format
SET STEP step-default[,...]
Parameters
step-default
Specifies a default to be established for the STEP command. Valid
keywords (which correspond to STEP command qualifiers) are as follows:
BRANCH
|
Subsequent STEP commands are treated as STEP/BRANCH (step to the next
branch instruction).
|
CALL
|
Subsequent STEP commands are treated as STEP/CALL (step to the next
call instruction).
|
EXCEPTION
|
Subsequent STEP commands are treated as STEP/EXCEPTION (step to the
next exception).
|
INSTRUCTION
|
Subsequent STEP commands are treated as STEP/INSTRUCTION (step to the
next instruction).
On VAX processors, you can also specify one or more instructions (
opcode[,...]). The debugger then steps to the next instruction
in the specified list.
On VAX processors, if you specify a vector instruction, do not
include an instruction qualifier (/UNALIGNED_DATA, /VECTOR_INSTRUCTION,
/MODIFY, /0, or /1) with the instruction mnemonic.
|
INTO
|
Subsequent STEP commands are treated as STEP/INTO (step into called
routines) rather than STEP/OVER (step over called routines). When INTO
is in effect, you can qualify the types of routines to step into by
using the [NO]JSB, [NO]SHARE, and [NO]SYSTEM parameters, or by using
the STEP/[NO]JSB, STEP/[NO]SHARE, and STEP/[NO]SYSTEM command/qualifier
combinations (the latter three take effect only for the immediate STEP
command).
|
JSB
|
(VAX only) If INTO is in effect, subsequent STEP commands are treated
as STEP/INTO/JSB (step into routines called by a JSB instruction as
well as those called by a CALL instruction). This is the default for
all languages except DIBOL.
|
NOJSB
|
(VAX only) If INTO is in effect, subsequent STEP commands are treated
as STEP/INTO/NOJSB (step over routines called by a JSB instruction, but
step into routines called by a CALL instruction). This is the default
for DIBOL.
|
LINE
|
(Default) Subsequent STEP commands are treated as STEP/LINE (step to
the next line).
|
OVER
|
(Default) Subsequent STEP commands are treated as STEP/OVER (step over
all called routines) rather than STEP/INTO (step into called routines).
|
RETURN
|
Subsequent STEP commands are treated as STEP/RETURN (step to the return
instruction of the routine that is currently executing---that is, up to
the point just prior to transferring control back to the calling
routine).
|
SEMANTIC_EVENT
|
(Alpha only) Subsequent STEP commands are treated as
STEP/SEMANTIC_EVENT (step to the next semantic event). This simplifies
debugging optimized programs (see Chapter 14 for more information).
|
SHARE
|
(Default) If INTO is in effect, subsequent STEP commands are treated as
STEP/INTO/SHARE (step into called routines in shareable images as well
as into other called routines).
|
NOSHARE
|
If INTO is in effect, subsequent STEP commands are treated as
STEP/INTO/NOSHARE (step over called routines in shareable images, but
step into other routines).
|
SILENT
|
Subsequent STEP commands are treated as STEP/SILENT (after a step, do
not display the "stepped to..." message or the source line
for the current location).
|
NOSILENT
|
(Default) Subsequent STEP commands are treated as STEP/NOSILENT (after
a step, display the "stepped to..." message).
|
SOURCE
|
(Default) Subsequent STEP commands are treated as STEP/SOURCE (after a
step, display the source line for the current location). Also,
subsequent SET BREAK, SET TRACE, and SET WATCH commands are treated as
SET BREAK/SOURCE, SET TRACE/SOURCE, and SET WATCH/SOURCE, respectively
(at a breakpoint, tracepoint, or watchpoint, display the source line
for the current location).
|
NOSOURCE
|
Subsequent STEP commands are treated as STEP/NOSOURCE (after a step, do
not display the source line for the current location). Also, subsequent
SET BREAK, SET TRACE, and SET WATCH commands are treated as SET
BREAK/NOSOURCE, SET TRACE/NOSOURCE, and SET WATCH/NOSOURCE,
respectively (at a breakpoint, tracepoint, or watchpoint, do not
display the source line for the current location).
|
SYSTEM
|
(Default) If INTO is in effect, subsequent STEP commands are treated as
STEP/INTO/SYSTEM (step into called routines in system space (P1 space)
as well as into other called routines).
|
NOSYSTEM
|
If INTO is in effect, subsequent STEP commands are treated as
STEP/INTO/NOSYSTEM (step over called routines in system space, but step
into other routines).
|
VECTOR_INSTRUCTION
|
(VAX only)
On VAX processors, subsequent STEP commands are treated as
STEP/VECTOR_INSTRUCTION (step to the next vector instruction).
|
Description
The SET STEP command establishes default qualifiers for subsequent STEP
commands. The parameters that you specify in the SET STEP command have
the same names as the qualifiers for the STEP command. The following
parameters affect where the STEP command suspends execution after a
step:
BRANCH
CALL
EXCEPTION
INSTRUCTION
INSTRUCTION=(opcode[,...]) (VAX only)
LINE
RETURN
SEMANTIC_EVENT (Alpha only)
VECTOR_INSTRUCTION (VAX only)
The following parameters affect what output is seen when a STEP command
is executed:
[NO]SILENT
[NO]SOURCE
The following parameters affect what happens at a routine call:
INTO
[NO]JSB (VAX only)
OVER
[NO]SHARE
[NO]SYSTEM
You can override the current STEP defaults for the duration of a single
STEP command by specifying other qualifiers. Use the SHOW STEP command
to identify the current STEP defaults.
Enabling screen mode by pressing PF1-PF3 enters the SET STEP NOSOURCE
command as well as the SET MODE SCREEN command. Therefore, any display
of source code in output and DO displays that would result from a STEP
command or from a breakpoint, tracepoint, or watchpoint being triggered
is suppressed, to eliminate redundancy with the source display.
On VAX systems, the STEP/OVER command may sometimes result in stepping
into, not over, Fortran Run-Time Library routines. For more
information, see Chapter 14.
Related commands:
SHOW STEP
STEP
Examples
#1 |
DBG> SET STEP INSTRUCTION,NOSOURCE
|
|