& CRASH appears on the terminal. Follow the same procedure to enter subcommands and
resume processing as with a regular program check.
An external interrupt, which occurs when the CP EXTERNAL command is issued,
causes CMS to enter the debug environment. The message
DMSDBG728I DEBUG ENTERED
EXTERNAL INTERRUPT
appears on the console. Any of the DEBUG sub commands may be issued. To exit
from the debug environment after an external interrupt, use GO. While CMS is in the debug environment, the control words and low storage
locations contain the debug program values. The debug program saves the control
words and low storage contents (X'OO'. through X' 100'.) of the interrupted routine
at location X'CO' ..
The &CRASH command is used as an aid in debugging the EXEC 2 interpreter DMSEXE and is intended to be used by system support people only. It is generally
only useful when used in conjunction with a current listing of module DMSEXE.
Note: The &CRASH command is not used for debugging programs or EXEC files
written in the EXEC 2 language. For information on debugging programs and
EXECs written in the EXEC 2 language, see the &TRACE command in VM / SP EXEC 2 Reference.
The format of the &CRASH command is: &CRASH [text]
where:
text if specified, is the character string contained in memory just
prior to the instruction that caused the &CRASH command to
be executed.
WARNING: Unless this command is used as described, abnormal termination of CMS and loss of data may occur.
Usage Notes:
1. &CRASH should be used only after the CP TRACE PROG command is
issued.
2. Execution of the &CRASH command causes entry to CP command mode. One of the following statements should be issued to continue execution:
BEGIN intaddr+2 to continue execution
where:
intaddr+2 is the address of the interrupt plus two
-or-
Debugging With eMS 527
BEGIN r14addr
where:
r14addr
to terminate the EXEC file with a return code as given
in register 15
is the address in register 14
Simply issuing the BEGIN command causes abnormal termination of CMS.
3. The registers contain the following information when CP command mode is
entered:
R I = address of the unsubstituted &CRASH arguments. RIO, Rl1 = main base registers (the address of the label "MAIN" and
"MAIN +4096") R12 = the address of the label "EXEC" R 13 = the address of DSECT "AREA" R14 = the address of where to resume if termination is needed
R15 = 0 If execution is resumed at the next instruction in memory, the EXEC file will
continue execution at the next EXEC statement.
If execution is resumed at the location addressed by register 14, the EXEC file
will terminate and yield a return code given by the value of register 15.
Example of use: &ERROR &IF &RC < 0 &IF &LINENUM > 50 &CRASH UNKNOWN COMMAND This statement causes the &CRASH command to execute when a command error
occurs that returns a return code less than zero and on a line above line 50. If the
&CRASH command is executed, the results might look like this:
*** 2CF158 PROG 0001 ==> 01F1C8 D G GPR 0 GPR 4 GPR 8 GPR 12
«<-- Show all the registers
FFFFD798 001BAE48 00000006 00000038 00006885 001BAF57 002CC8EC 002CCF8C 001BAF57 001BAF5E 002CC8E2 002CD8E2 002CC690 001BACE8 002CF162 00000000 D T1BAE48.20 «<--Display the &CRASH arguments 1BAE40 E20F50C3 D9C1E2C8 4050D3C9 D5C5D5E4 *S.&CRASH UNKNOWN* 1BAE50 D44000C5 40C1D3D3 40004040 40404040 * COMMAND sse.<> * 1BAE60 40404040 40404040 40404040 40404040 * *
D T1BACE8.10 «<--Display which EXEC file was interrupted 1BACEO 00011618 12E81BFF C1C2C3C3 40404040 * ........ ABCD * 1BACFO 40404040 C5E9C5C3 40404040 40404040 * EXEC *
528 VM/SP System Programmer's Guide
Previous Page Next Page