Previous topic |
Next topic |
Contents |
Contact z/OS |
Library |
PDF
BREAK HLASM Toolkit Feature Interactive Debug Facility User's Guide GC26-8709-07 |
|
Sets an instruction breakpoint, or toggles the Break window display.
>>-BREak--+---------+--+----------------+---------------------->< '-address-' | .------------. | | V | | '---|--command-+-'
To set a deferred or sticky breakpoint, use the DBREAK command. See DBREAK for details. If an address is supplied, either as an expression on the command line or by means of cursor position, a breakpoint is set at that address. If a breakpoint or a watchpoint is already set at the specified address, it is cleared. The BREAK command is a toggle that turns a breakpoint on or off. (The OLDBREAK option is available if the toggle style of operation is not desired. If OLDBREAK is set and the BREAK command is used against an address where a breakpoint is already set, an error message is issued.) The breakpoint is taken (that is, execution is interrupted and the operator notified) just prior to the execution of the indicated instruction. A maximum of 64 breakpoints may be active at one time. Breakpoints remain in effect until they are explicitly cleared (through the Break window). You can associate a list of commands with the breakpoint. These commands are executed when the breakpoint is taken, before control is returned to you. The commands are specified at the end of the BREAK command, separated from the address and each other by vertical bars (|). If a command receives a non-zero return code, the remaining commands in the list are not executed.
If a WATCH command with a condition is issued for an address at which there is a breakpoint, that breakpoint is converted into a watchpoint. If commands were specified with the original breakpoint, they are associated with the watchpoint unless commands were specified with the WATCH command. If a breakpoint is placed within the execution path of the subroutine to be skipped, execution stops at that breakpoint. IDF verifies that there is a valid instruction at the breakpoint address, and rejects the BREAK command (with a message) if not. This test is not infallible. Certain combinations of DATA can appear as valid instructions. For example X'1E14' might be data or it might be an ALR R1,R4. IDF lets you install a break here. For non-PER and non-SVC 97 breakpoints, IDF uses an invalid instruction of the format x'02xx', to cause a program-check (operation exception), which gives IDF control to handle the breakpoint logic. At the time of handling the breakpoint, IDF reinstalls the original instruction bytes for execution. But if you manage to install a non-PER breakpoint (that is, x'02xx') on top of program DATA (which looks like an instruction), then IDF never gains control to remove its x'02xx' from your program's DATA. So IDF corrupts valid data, potentially leading to bizarre program behavior. Take care to install breakpoints only on valid target program instructions. IDF establishes breakpoints by modifying target instructions to invalid opcodes (or SVC 97 instructions if SVC97 under TSO is in effect). The DISASM window only displays the original instruction. If a breakpoint is established on an instruction which is the target of an EXecute instruction, then the EX instruction will fail.
See also SET BREAK. Return codes
|
Copyright IBM Corporation 1990, 2014
|