Removing hooks

One option for increasing the performance of your program is to compile with a minimum of hooks or with no hooks.

  • For C programs, compiling with the option TEST(NOLINE,BLOCK,NOPATH) causes the compiler to insert a minimum number of hooks while still allowing you to perform tasks at block boundaries.
  • For COBOL programs, compiling with the following compiler suboptions creates programs that do not have hooks:
    • TEST(NONE) for any release of the Enterprise COBOL for z/OS® Version 3, or COBOL OS/390® & VM, Version 2, compiler
    • TEST(NOHOOK) for Enterprise COBOL for z/OS Version 4
    • TEST for Enterprise COBOL for z/OS Version 5
    Using the Dynamic Debug facility, z/OS Debugger inserts hooks while debugging the program, allowing you to perform almost any debugging task.

Independent studies show that performance degradation is negligible because of hook-overhead for PL/I programs. Also, in the event you need to request an attention interrupt, z/OS Debugger is not able to regain control without compiled-in hooks. In such a case you can request an interrupt three times. After the third time, z/OS Debugger is able to stop program execution and prompt you to enter QUIT or GO. If you enter QUIT, your z/OS Debugger session ends. If you enter GO, control is returned to your application.

Programs compiled with certain suboptions of the TEST compiler option have hooks inserted at compile time. However, if the Dynamic Debug facility is activated (which is the default, unless altered by the DYNDEBUG EQAOPTS command) and the programs are compiled with certain compilers, the compiled-in hooks are replaced with runtime hooks. This replacement is done to improve the performance of z/OS Debugger. Certain path hook functions are limited when you use the Dynamic Debug facility. To enable these functions, enter the SET DYNDEBUG OFF command, which deactivates the Dynamic Debug facility. See IBM® z/OS Debugger Reference and Messages for a description of these commands.

It is a good idea to examine the benefits of maintaining hooks in light of the performance overhead for that particular program.