DEBUG Subcommands-BREAK
BREAK 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:
r --------, I BReak id {SymbOl} hexloc , 1 , L- id
symbol
hexloc
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.
is a name assigned to the storage location where the
breakpoint is set. symbol, if used, must have previously been
set using the DEFINE subcommand.
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.
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:
DMSDBG728I 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 vou 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 eX9cution, B2Ex is replaced with the original operation code.
264 VM/370 Command Macro Reference
DEBUG Subcommands-BREAK, CAW 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 you are given a nonshared
receive the message:
address that is in
copy of the segment SYSTEM sysname REPLACED WITH NON-SHARED copy a shared
and you
None.
CAW Use the CAW subcommand to display at the terminal the contents CAW (channel address word) as it existed at the time the
environment was entered. The format of the CAW subcommand is:
of the
debug r I CAW I L- -lI 1. Issue the CAW subcommand to check that the command address field
contains a valid CCW address, or to find the address of the current CCW so you can examine it.
2. The three low-order bits of the command address field must be zeros
in order for the CCW to be on a doubleword boundary. If the CCW is
not on a doubleword boundary or if the command address specifies a
location protected from fetching or outside the storage of a
particular user, the Start IIO instruction causes the status
portion of the CSW (channel status word) to be stored with the
program check or protection check bit on. In this event, the IIO operation is not initiated.
The CAW, located at storage location X'48', is displayed. Its format is: r , , KEY I 0000 I Command Address I o 3 4 4-7 B- 31
7 8 31 The protection key for all commands associated with start I/O. The protection key in the CAW is compared to a key in storage
whenever a reference is made to storage.
This field is not used and must contain binary zeros.
The command address field contains the storage address (in
hexadecimal representation) of the first CCW (channel command word) associated with the next or most recent Start I/O. Section 4. DEBUG Subcommands 265
Previous Page Next Page