Using explicit debug mode to load debug data for only specific modules
By default, z/OS® Debugger automatically
loads debug data whenever it encounters a high-level language compile
unit compiled with the TEST
or DEBUG
compiler
option. In most cases, this is the most convenient mode of operation
because you do not have to decide in advance which load modules and
compile units you want to debug. However, in some complex applications,
manipulating this data might cause a significant performance impact.
In this case, you can use explicit debug mode to load debug data only
for compile units that you indicate you want to debug.
You enable explicit debug
mode by entering the SET EXPLICITDEBUG ON
command
or by specifying the EQAOPTS EXPLICITDEBUG
command.
By default, this mode is OFF. In explicit debug mode, (except for
cases described below) you must use the LOADDEBUGDATA
(LDD
)
command to cause z/OS Debugger to load
the debug data for the compile units that you want to debug.
In most cases, you can use the SET EXPLICTDEBUG
command to enable explicit debug
mode; however, in some cases you might need to use the EQAOPTS EXPLICITDEBUG
command. Because z/OS Debugger does not process
commands until after it processes the initial load module and all the compile units it contains, if
you want z/OS Debugger to not load debug data
for compile units in the initial load module, use the EQAOPTS EXPLICITDEBUG
command. An example when you need to use the EQAOPTS EXPLICITDEBUG
command is when the initial load module contains COBOL Version 5 and later compile units.
When explicit debug mode is active, z/OS Debugger loads debug data in only the following cases:
- For the compile unit where z/OS Debugger first became active and the first compile unit in each enclave. In most cases, this is the entry compile unit for the initial load module.
- Whenever z/OS Debugger loads
a load module and you previously entered a
LOADDEBUGDATA
(LDD
) command for that load module and compile unit or when you enter anLDD
command for a compile unit in the current load module. - Whenever z/OS Debugger processes
a load module for any of the following reasons and you previously
specified the compile unit on a
NAMES INCLUDE CU
command:- It is the initial load module.
- When z/OS Debugger loads
a load module that you previously specified on an
LDD
command. - When z/OS Debugger loads
a load module that you previously specified on a
NAMES INCLUDE LOADMOD
command. - It is a load module for which z/OS Debugger generated
an implicit
NAMES INCLUDE LOADMOD
command.
- For the target of a deferred AT ENTRY which specifies both load module and compile unit names and in which the compile unit name is not a source file name enclosed in quotation marks (").
- For the entry point compile unit of a load module that you specified
in an
AT LOAD
command. - In CICS®, for the load module and compile units you specified in DTCN, unless they contain an asterisk (*).
z/OS Debugger does
not support the SET DISASSEMBLY ON
command in explicit
debug mode. When explicit debug mode is active, z/OS Debugger forces SET
DISASSEMBLY OFF
and you will not be able to set it back to
ON while in explicit debug mode.
z/OS Debugger does not support the
EQAOPTS LDDAUTOLANGX
command in explicit debug mode. When explicit debug mode is
active, z/OS Debugger forces
LDDAUTOLANGX
to OFF
.