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 an LDD 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.