Beruflich Dokumente
Kultur Dokumente
Dump Analysis
Introduction
Dump Analysis
Debugger I
Performance Trace
Screens
Memory Management
ABAP Messages
Batch Processing
Debugger II
Updates
Dynpro Trace
User Exits
Syslog
Unit Objectives
Dump Analysis
At the end of this chapter you will hopefully be able to extract all the valuable info from a
short dump.
The above mentioned customer problem will be the last exercise of this chapter.
lock the
dump
After terminating the internal session (/n) the environment of the dump is deleted and you
cannot access the debugger from ST22 any more.
Some remarks to point 3. The other points are described in detail afterwards.
If you start transaction st22 and select all e.g. CALL_FUNCTION_CONFLICT_LEN Dumps
of the last days then you get a list like this
Date
Time
Machine
User
Clt
FRANKM
FRANKM
FRANKM
X Error ID
Please check if all Dumps occur on one machine or only only one user is involved ...
Attention:
This is not the current database version,
and os-version but the enviroment the
kernel has been linked with.
Use ST06 for the actual os-version and
ST04 for db-version
10
current program
current event
(form, function,...)
main program.
Head of the program
group
current include
and source line
Use transaction SE38 with the Include name to access the source.
With the known line of source you can navigate directly to the guilty statement.
There you can set a breakpoint for debugging, or check the surrounding code.
Use both the current program name and the include name if you search for notes.
(additionally use the transaction for note search)
Please be careful, sometimes the displayed line of source is one statement behind the
guilty one.
11
Read the
hex code
vertically
e.g.
SPACE =
For information about system fields, please use F1-help (in SE38) with
ABAP System Fields
In our example we learn from the system fields that the program BGTEST5 looped
1000 times until it failed. (sy-index = 1000).
In a LOOP AT ITAB loop sy-tabix would be essential.
If you have problems with memory consumption of large lists please have a look at sy-linno
and sy-colno. (Line number, column number)
The chosen variables display some variables in the surrounding of the guilty statement.
The first line (blue) of the field contents displays the character representation of the
underlying hex-value. Please read the hex values vertically.
In our case the interesting field p has the hex-value = 99 9C.
Since we have a packed number and no character the first (blue) line of the field p shows
only senseless symbols. 99 9C is the hex-representation of the packed number 999.
We deal with a packed number with length 2. This means we can only use 3 digits.
Therefore we cannot exceed the number 999 and our program fails at the 1000th execution
of the adding procedure.
12
event
program
include
The call stack shows you the flow of the program. With this information you can e.g. display
(via transaction SE38 ) the include LCATREF20 line 655 in order to check how the form
CALL_DYNAMIC_FUNCTION_UNIT was called.
Please note that only the call stack is available. If a function is called and then the runtime
returns from this function and goes on you will not find this function in the stack.
If you have e.g. a CALL_FUNCTION_CONFLICT_TYPE then the called function is not on
the top of the stack because the call itself failed.
13
Display of header
information of
internal tables
The list of programs affected displays all programs which were loaded during the
runtime of the main-program.
If you think there may be an inconsistency between some ABAPs then compare
Generation and Changed time.
(The report RSDEPEND will provide additional details about inconsistencies if you have a
suspicious program).
The list of internal tables displays some internal tables in the surrounding of the guilty
statement. Especially if you have problems with memory consumption please check the
number of lines of the internal tables.
But please keep in mind, that some internal tables are freed if there is no more memory
available (we need some memory to create the Dump).
14
Dump Analysis
RSDEPEND - Check if the program needs to be generated
Start the report RSDEPEND and fill in the interesting program
F8
The header includes the last modification
(Over all timestamp) of any involved part
of SAPMV45A.
Additionally you get the last generation time.
This time must be fresher then the overall time
stamp. If not then this line has a red
background.
Get all Includes, DDIC elements and Dynpros
which are linked to this program.
Furthermore you get the last modification time
stamp.
If e.g. a customer transports a changed DDIC structure in the running system then
sometimes
persistent inconsistencies are the result. Some running ABAP programs are not informed
about the DDIC changes. That may result in Dumps like
CALL_FUNCTION_CONFLICT_TYPE,
CONNE_IMPORT_WRONG_COMP_LENG, GETWA_CANT_CLEAR...
If you want to generate all programs which depend on a special DDIC structure/table then
please use the report TOUCHTAB and have a look at note 0162991 and 144918 .
15
These parts contain very specific details about the abortion in the kernel.
In some Dumps you get very useful information in the area Internal notes.
In our example we get the information:
The call of function CV140_LINKS_DELETE failed, since the formal parameter PF_OBJKY
is specified as type c(50) but the function input (actual parameter) as type C(22).
If you have to deal with a SYSTEM_CORE_DUMPED or other internal (BASIC) errors
please get the C-stack and forward the call to the responsible basis group.
16
Tables-workareas of the
different loaded programs
The directory of application tables contains all table work areas of all loaded programs.
Unfortunately you get only the first 40 bytes of their contents.
The Directory of data areas (administration / contents) is quite specific and only useful for
ABAP compiler experts. It shows the data segments of the different programs (global data,
tables, field-symbols...)
The last part of the Dump ABAP control block CONT is only useful for the compiler experts.
17
if a refresh is missing
if the same processing is done twice in a
loop wrong limit criteria
if the lock is set correctly
Processing logic check: Use SE30 for call hierarchy or structure analysis
Record in database: Select SE16 with key entry
18
19
Approach:
get the values from ST22 short dump or if hard to read from SQL trace
check with SE16 if key entry is there
If key entry is not there check with ST05 and debugger why the insert is aborting
20
Exercise - ZST22_DUPREC
ZST22_DUPREC cancels with the Dump
SAPSQL_ARRAY_INSERT_DUPREC.
Please evaluate the reason for this error and try to
find a solution.
I checked all entries
of the internal table,
which should be updated
and I checked the database
contents.
I couldn't find any error !
21
Solution - ZST22_DUPREC
ZST22_DUPREC cancels with the Dump
SAPSQL_ARRAY_INSERT_DUPREC.
Reason:
There is an unique index ZDB for the database table ZDEBARFC
which includes the fields:
MANDT, CARRID, CONNID, PLANETYPE
(check it via: se11/Button Index)
The line which should be inserted is not unique concerning these
fields (PLANETYPE is essential)
22
Exercise: TABLE_INVALID_INDEX
If you run report ZST22_INVALIDINDEX you receive the
DUMP TABLE_INVALID_INDEX from FORT Knox.
(remember the introducing story)
Do not debug the program.
Only analyzing the Dump text is allowed.
Find out why this DUMP occurs and how the program should be
corrected (OSS-note)
23
Solution: TABLE_INVALID_INDEX
Analyse the Dump
We learn from the dump:
Insert with Index 0 because
sy-tabix = 0.
Sy tabix = 0 because the read failed.
(target structure my_flight is empty !)
24
25
26
Summary
27
28