BREAK DEBUG subcommand Use the BREAK subcommand to stop execution of a program or module at a specific instruction location called a breakpoint. The format of the BREAK subcommand is: +----------+------------------------------------------------------------------+ | BReak | id symbol hexloc | +----------+------------------------------------------------------------------+ where: id is a decimal number, from 0 to 15, which identifies the breakpoint. A maximum of 16 breakpoints may be in effect at one time; if you specify an identification number that is already set for a breakpoint, the previous breakpoint is cleared and the new one is set. symbol is a name assigned to the storage location where the breakpoint is set. The operand symbol, if used, must have previously been set using the DEFINE subcommand. hexloc is the hexadecimal storage location (relative to the current origin) where the breakpoint is to occur. hexloc must be on a halfword boundary and its value added to the current origin must not exceed your virtual machine size. Usage Notes: 1. To set breakpoints before beginning program execution, enter the debug environment with the DEBUG command after you load the program into storage. After setting the breakpoints, use the RETURN subcommand to leave the debug environment and issue the START command to begin program execution. For example: load myprog debug break 1 20016 break 2 20032 return start 2. When you assign hexloc to a breakpoint, you must know the current origin (set with the ORIGIN subcommand). The hexloc you specify is added to the current origin to determine the breakpoint address. 3. When a breakpoint is found during program execution, the message: SYSDBG728I DEBUG ENTERED BREAKPOINT yy AT xxxxxx is displayed at the terminal. To resume program execution, use the GO subcommand. 4. Breakpoints are cleared after they are encountered. Thus, if a breakpoint is encountered during a program loop you must reset the breakpoint if you want to interrupt execution the next time that address is encountered. 5. When you set a breakpoint, the halfword at the address specified is replaced with B2Ex, where x represents the identification number you assigned. After the breakpoint is encountered during execution, B2Ex is replaced with the original operation code. 6. You should set breakpoints only at valid operation code addresses. The BREAK subcommand does not check to see whether or not the specified location contains a valid operation code. 7. If you reference a virtual storage address that is in a shared segment, you are given a nonshared copy of the segment and you receive the message: SYSTEM sysname REPLACED WITH NON-SHARED copy