Intercepting abends
When an abend is encountered, execution automatically pauses, the execution arrow points to the offending instruction, and a message indicating the action to take is displayed. See the following figure.
Intercepting a S0C4 Abend
COMMAND ===> SCROLL ===> CSR
SOC4 ABEND ENCOUNTERED, USE "AA SNAP" FOR ADDITIONAL INFORMATION
** END **
------ --------------------------------- SOC4 Abend at TRIMAINA:53/AMODE 24 <>
000051 USING TRIMAINA,R12 *
000052 LA R11,SAVEAREA *
=====> ST R13,4(R11) * CHAIN SAVE AREAS
000054 ST R11,8(R13) *
000055 LR R13,R11 *
If you have Abend-AID Release 7.0.2 or above, the message instructs you to use the AA SNAP command. This displays the Snapshot report containing context sensitive diagnostic information, a comprehensive analysis of the abend, and environmental information.
If you do not have Abend-AID, the message refers you to the session log, which always gives you a diagnostic summary of the abend. For example, type LOG on the primary command line to show the test session log as shown in the following figure.
Abend Information in the Session Log
COMMAND ===> SCROLL ===> CSR
PROGRAM: TRIMAINA MODULE: TRIMAINA COMP DATE: 07/20/1995 COMP TIME: 15:41:00
------------------------------------------ SOC4 Abend at TRIMAINA:53/AMODE 24 ->
BEFORE TRIMAINA:
AFTER TRIMAINA:
PAUSE BEFORE TRIMAINA
BEFORE BREAKPOINT ENCOUNTERED
VERIFY TRIMAINA:52
000052 LA LA 000006 > 41B0 C0F0 :8010E2B0
ZAP 000052
000052 LA L 000006 > 58B0 C0FO :8010E2B0
GO
XPD0439 RA105 SOC4 ABEND AT 000C7382 REASON CODE 00000004
PSW AT TIME OF ERROR 078D0000 - 000C7386
DATA AT PSW - C0F050DB 000450BD 000818DB
GP REGISTERS AT ABEND 0 000A2000 1 8009ACA0 2 80105BFC 3 8009A7AA
4 067B1E90 5 067A5EC8 6 00000000 7 801E3B2A
8 067B6804 9 867A0F34 10 000A2000 11 00000000
12 000C7378 13 000A4598 14 00105EFC 15 000C7378
INTERRUPT ADDRESS AT OFFSET 00000A IN LOAD MODULE TRIMAINA
*** SOC4 ABEND IN USER MODULE TRIMAINA AT STATE 000021 AT OFFSET 00000A
*** ACTIVE APPLICATION MODULE AT TIME OF ABNORMAL TERMINATION IS TRIMAINA **
The Command-and-syntax-reference contains commands that are useful for diagnosis.
If a dump is necessary, type SET DUMP ON from the primary command line to write the dump to a preallocated SYSUDUMP DD. No dump is produced if SYSUDUMP is not allocated. You can also prevent Code Debug TSO from intercepting abends by executing SET ABNDEXIT OFF before the abend. To prevent Code Debug from intercepting S0C1 abends, use SET ESPIE OFF and SET ABNDEXIT OFF. When an abend is encountered, your test session is terminated immediately and you are returned to the test screen.
In the example (Intercepting a S0C4 Abend screen), statement 52, LA (load address), was modified to L (load) and register 11 was loaded with a wrong address. A S0C4 occurred when a ST (store) on statement 53 was attempted at 4 bytes from the address in register 11. See the Abend Information in the Session Log screen. At this point, you can correct the abend and resume execution, or terminate the test by pressing PF4 (EXIT). Verify statement 52 by placing the letter V in the line command area and pressing Enter. The Verify display shows that the OPCODE is changed from LA to L. To make a correction, type over the OPCODE L with LA or object code X'58' with X'41' and press Enter. Type GOTO 52 and press Enter to redirect the program to resume execution from statement 52 again. Then press PF9 or enter GO 1 to reexecute the failed instruction that was corrected under Code Debug TSO. You should be able to successfully continue your test session.
Additional information is also available in Handling Run-Time Errors.