Dump
Dump
Objectives
Why What is Available Controlling Dump and Trace AEI0 Abend ASRA Abend
Useful Resources
Before starting the debugging process, you will need: Compile listing with the LIST option Link map of the program load module with MAP and XREF CICS Application Dump Access to the CEEMSGS output
Copyright (c) 2003 Russell Evans 5
Review to ensure you have the correct dump: VTAM APPLID of the region Trans ID of the abending transaction
Abend Code
Date and Time
Copyright (c) 2003 Russell Evans 6
(continued)
Do NOT rely on these registers! In this dump, they are from the last LE EXEC command issued while creating the CEEMSG dump, not from the user program..
(continued)
PSW & REGISTERS AT TIME OF INTERRUPT PSW 079D1000 88BFD700 00060007 00000000 REGS 0-7 00000000 0921E1A0 00000000 0921EBF8 08BFD5E4 00000000 00000000 001000D0 REGS 8-15 00000000 0921EBF0 08BFD620 08BFD6B4 08BFD610 0921F690 08BFD688 88C8E8C8
Registers at time of interrupt are not produced for AEIx abends PSW Points to Next Sequential Instruction R14 may point to last Exec CICS command Other registers contain useful information
(continued)
(continued)
EXEC INTERFACE BLOCK 0115228C 0103260F C1D7C3E3 0000298C C3D7F0F2 00000009 00007D0E 06010000 00000000 00000000 00000000 00000000 000000E3 D5D7E7E7 E7E74000 00000000 00000000 00000000 00000000 0000001B 00000003 00 EIBTIME EIBDATE EIBTRNID EIBTASKN EIBTRMID EIBRSVD1 EIBCPOSN EIBCALEN EIBAID EIBFN EIBRCODE DS DS DS DS DS DS DS DS DS DS DS PL4 PL4 CL4 PL4 CL4 H H H CL1 CL2 CL6 0115228C 0103260F APCT 0000298C CN02 EIBDS EIBREQID EIBRSRCE EIBSYNC EIBFREE EIBRECV EIBSEND EIBATT EIBEOC EIBFMH DS DS DS DS DS DS DS DS DS DS CL8 CL8 CL8 TNPXXXX C C C C C C C 10
0E06-LOAD
(continued)
When viewing the trace table, look first at EIP ENTRY/EXIT pairs
WRITEQ-TD LOCATE 08A4DBC0,00059AC7,DCTE,CESE LOCATE/OK 08ABE270 , C4C3E3C5 WRITE_TRANSIENT_DATA CESE,08AEB2E0 , 00000001,YES LOCATE 08A4DBC0,00070BE4,DCTE,CESE LOCATE/OK 08ABE270 , C4C3E3C5 WRITE_TRANSIENT_DATA/OK WRITEQ-TD OK =000019= =000020= =000021= =000022= =000023= =000024= =000025= =000026=
11
(continued)
12
(continued)
The Program Information section of the dump contains information related to all of the programs currently active in the transaction. If the transaction has issued EXEC CICS LINKs, then each logical link level will be displayed. This section has the most recent entries first, and is read from the last entry backward.
13
PROGRAM INFORMATION FOR THE CURRENT TRANSACTION Number of Levels 00000004 INFORMATION FOR PROGRAM AT LEVEL 00000004 of 00000004 Program Name LINK04 Invoking Program LINK03 Load Point 08BFD000 Program Length 00000D90 Entry Point 88BFD020 Addressing Mode AMODE 31 Language Defined COBOL Language Deduced Unknown Comoro Address 09217C70 Comoro Length 0000000A Execution Key USER Data Location ANY Environment User application INFORMATION FOR PROGRAM AT LEVEL 00000003 of 00000004 Program Name LINK03 Invoking Program LINK02 Load Point 098692A0 Program Length 00000C70 Entry Point 898692C0 Addressing Mode AMODE 31 Language Defined COBOL Language Deduced Unknown Comoro Address 09211650 Comoro Length 0000000A Execution Key USER Data Location ANY Environment User application INFORMATION FOR PROGRAM AT LEVEL 00000002 of 00000004 Program Name LINK02 Invoking Program ABEND1 Load Point 093FDF70 Program Length 00000C70 Entry Point 893FDF90 Addressing Mode AMODE 31 Language Defined COBOL Language Deduced Unknown Comoro Address 09208650 Comoro Length 00000009 Execution Key USER Data Location ANY Environment User application INFORMATION FOR PROGRAM AT LEVEL 00000001 of 00000004 Program Name ABEND1 Invoking Program CICS Load Point 093FC260 Program Length 00001C70 Entry Point 893FC280 Addressing Mode AMODE 31 Language Defined COBOL Language Deduced Unknown Comoro Address 00000000 Comoro Length 00000000 Execution Key USER Data Location BELOW Environment User application
14
(continued)
PROGRAM INFORMATION FOR THE CURRENT TRANSACTION Number of Levels 00000004 INFORMATION FOR PROGRAM AT LEVEL 00000004 of 00000004 Program Name LINK04 Invoking Program LINK03 Load Point 08BFD000 Program Length 00000D90 Entry Point 88BFD020 Addressing Mode AMODE 31 Language Defined COBOL Language Deduced Unknown Comoro Address 09217C70 Comoro Length 0000000A Execution Key USER Data Location ANY Environment User application
15
(continued)
LINK04 PROGRAM STORAGE ADDRESS 08BFD000 TO 08BFDD8F LENGTH 00000D90 000 C4C6C8E8 C3F5F3F0 58F0021C 58F0F0D0 58F0F014 58F0F00C 58FF000C 07FF0000 *DFHYC530.0...00..00..00.........* 08BFD000 020 47F0F070 23C3E2C5 C3E3F0F4 4040C3F2 40F14BF4 4BF040F0 F761F0F9 61F0F140 *.00..CSECT04 C2 1.4.0 07/09/01 * 08BFD020 040 F0F54BF5 F54BF3F8 08BFD074 E0E87C0C 08002000 10800008 00000000 00000000 *05.55.38.....Y..................* 08BFD040
16
(continued)
CURRENT COPY OF THE COMMAREA 0PROGRAM COMMUNICATION AREA 000000000 C1D7C3E3 40C3C1D3 F1
17
18
//LOAD EXEC PGM=DFHTU530,REGION=0M //STEPLIB DD DISP=SHR,DSN=CICSTS13.CICS.SDFHLOAD //DFHAUXT DD DISP=SHR,DSN=TEST.CICS.DFHAUXT //DFHAXPRT DD SYSOUT=* //SYSPRINT DD SYSOUT=* //SYSOUT DD SYSOUT=* //DFHAXPRM DD *
19
20
Use CEMT I AUX to start aux trace. Trace must be stopped before printing. I AUX STATUS: RESULTS - OVERTYPE TO MODIFY Aux Cur(B) Sto
21
22
From the CICS Messages and Codes manual: Explanation: PGMIDERR condition not handled. This is one of a number of abends issued by the EXEC interface program. Because of their similar characteristics these abends are described as a group. See the description of abend AEIA for further details.
Note that this information can also be found using the CMAC transaction.
Copyright (c) 2003 Russell Evans 23
Because an AEI* abend is the result of a failure in an EXEC CICS command, the first place to look is the EIB:
EXEC INTERFACE BLOCK 0115228C 0103260F C1D7C3E3 0000298C C3D7F0F2 00000009 00007D0E 06010000 00000000 00000000 00000000 00000000 000000E3 D5D7E7E7 E7E74000 00000000 00000000 00000000 00000000 0000001B 00000003 00
EIBRSRCE = TNPXXXX
24
Another good place to look for the cause of AEI* abends is the trace table:
Shows command that failed Provides detail on the failure Provides the R14 value to the program, identifying the failing line of code Unfortunately, in this dump the only entries in the trace table are from LE writing its dump to CESE. Recommendation: set TERMTHDACT(QUIET) or (MSG) to keep LE from overwriting your trace table
Copyright (c) 2003 Russell Evans 25
26
RET-8A3019FE
TIME-22:12:33.9754938750
The RET value shown in the EIP ENTRY trace is the return address within the application program. We can use this to identify the specific EXEC CICS command that resulted in this failure.
27
28
The PSW
PSW & REGISTERS AT TIME OF INTERRUPT PSW 079D1000 88BFD700 00060007 00000000
The program interrupt code tells us what kind of S0C abend this is
29
Finding the Failing Instruction Look at the program listing to find the failing instruction
000191 CALL 00030E 000312 000316 00031A 00031E 000322 000326 000328 00032C 000330 000332 000336 00033A 00033E 000342 000346 00034A 00034C 00034C 000350 000354 000358 00035C 4120 5020 9680 4110 4100 58F0 05EF 50F0 BF28 0420 9120 58B0 47E0 5820 58F0 4110 05EF 947F 5820 58F0 4110 05EF 9950 D170 D170 D170 D14C A000 D078 D089 D054 C00C B1D8 D05C 21CC A0B5 LA ST OI LA LA L BALR ST ICM SPM TM L BC L L LA BALR EQU NI L L LA BALR 2,2384(0,9) 2,368(0,13) 368(13),X'80' 1,368(0,13) 0,332(0,13) 15,0(0,10) 14,15 15,120(0,13) 2,8,137(13) 2,0 84(13),X'20' 11,12(0,12) 14,472(0,11) 2,92(0,13) 15,460(0,2) 1,181(0,10) 14,15 * 348(13),X'7F' 2,92(0,13) 15,548(0,2) 1,180(0,10) 14,15 DFHEIV0 TS2=0 TS2=0 TS2=0 CLLE@=3 V(DFHEI1
GN=1
D15C D05C 2224 A0B4
31
Finding the Failing Instruction Look at the module link map to find the failing module
*** M O D U L E --------------CLASS B_TEXT DBLWORD --------------SECTION OFFSET CLASS OFFSET 0 8 8 8 8 8 M A P ***
LENGTH =
D90
ATTRIBUTES = CAT,
LENGTH 1E
8 8 8 8 8
20
590
CSECT04
ABENDIT *
CSECT
CSECT
56C
3AC
SYSLIN
SYSLIB
02
01
**NULL**
ABENDIT
32
Finding the Failing Instruction Calculate the offset of the failing instruction
NSI Address 08BFD700 Load point -08BFD000 Offset into module 700 Start of ABENDIT -590 Offset into ABENDIT 170
33
Finding the Failing Instruction Look at the program listing to find the failing instruction
000018 COMPUTE 000164 F284 00016A FC85 000170 F897 000176 D207 00017C D204 000182 4F20 000186 F144 00018C 4F50 000190 5C40 000194 1E52 000196 47C0 00019A 5A40 00019E 00019E 1222 0001A0 47B0 D168 D168 D180 D178 D17B D178 D17B D178 C004 B07A C000 GN=8 B084 8000 A030 D169 A036 D185 D180 PACK MP ZAP MVC MVC CVB MVO CVB M ALR BC A EQU LTR BC 360(9,13),0(5,8) 360(9,13),48(6,10) 384(10,13),361(8,13) 376(8,13),54(10) 379(5,13),389(13) 2,376(0,13) 379(5,13),384(5,13) 5,376(0,13) 4,4(0,12) 5,2 12,122(0,11) 4,0(0,12) * 2,2 11,132(0,11)
The NSI
34
Finding the Failing Instruction Look at the program listing to find the failing instruction
02 GOOD
35
Using the R14 Value R14 usually points to where the last call returned (or would have returned) to. Sometimes this can help determine how processing arrived at the point of failure. Find the matching instruction using the process for finding the NSI. If it is a return value it should immediately follow a BASR or BALR instruction.
36
Register
Displacement
Copyright (c) 2003 Russell Evans 37
Finding Data In The Dump Register 10 Value . . . . . 08BFD620 Offset (from instruction) . . . . 30 Actual Address . . . . . . .08BFD650 Length (from instruction) 6
Finding Data In The Dump Register 13 Value . . . . . 0921F690 Offset (from instruction) . . . .168 Actual Address . . . . . . .0921F7F8 Length (from instruction) 9
Relating the dump to the program Failing command. . . . COMPUTE ABEND = BAD * GOOD Data Definition of Good. . . . . . PIC S9(8) COMP VALUE ZERO. Data Definition of Bad . . . . . . . PIC S9(5).
IGYSC2025-W "PARMS-IN" or one of its subordinates was referenced, but "PARMS-IN" was a "LINKAGE SECTION" item that did not have addressability. This reference will not be resolved successfully at execution.
40
Conclusion
Dumps and traces are valuable tools Identify the failing line of code Help determine the actual cause of the failure Cheat sheet can be downloaded from www.reevans.com
41