• Abstract for Language Environment Debugging Guide
    • Summary of changes
      • Summary of changes
      • Summary of changes
  • Introduction to debugging in Language Environment
    • Preparing your routine for debugging
      • Setting compiler options
        • XL C and XL C++ compiler options
        • COBOL compiler options
        • Fortran compiler options
        • PL/I compiler options
        • Enterprise PL/I for z/OS compiler options
      • Using Language Environment runtime options
        • Determining runtime options in effect
        • Understanding the HEAPZONES and HEAPCHK runtime options
        • Using the CLER CICS transaction to display and set runtime options
      • Controlling storage allocation
        • Stack storage statistics
          • Determining the applicable threads
          • Allocating stack storage
        • Heap storage statistics
        • HEAPPOOLS storage statistics
      • Modifying condition handling behavior
        • Language Environment callable services
        • Language Environment runtime options
        • Customizing condition handlers
        • Invoking the assembler user exit
        • Establishing enclave termination behavior for unhandled conditions
      • Using messages in your routine
        • C/C++
        • COBOL
        • Fortran
        • PL/I
      • Using condition information
        • Using the feedback code parameter
        • Using the symbolic feedback code
    • Classifying errors
      • Identifying problems in routines
        • Language Environment module names
        • Common errors in routines
      • Interpreting runtime messages
        • Message prefix
        • Message number
        • Severity code
        • Message text
      • Understanding abend codes
        • User abends
        • System abends
      • Using edcmtext to obtain information about errno2 values
        • Format
        • Description
        • Usage notes
        • Message returns
        • Examples
        • Exit Values
    • Using Language Environment debugging facilities
      • Debug tools
      • Language Environment dump service, CEE3DMP
        • Generating a Language Environment dump with CEE3DMP
        • Generating a Language Environment dump with TERMTHDACT
          • Considerations for setting TERMTHDACT options
        • Generating a Language Environment dump with language-specific functions
        • Understanding the Language Environment dump
          • Sections of the Language Environment dump
        • Debugging with specific sections of the Language Environment dump
          • Tracebacks, condition information, and data values section
          • Upward-growing (non-XPLINK) stack frame section
          • Downward-growing (XPLINK) stack frame section
          • Common Anchor Area
          • Condition information block
          • Using the machine state information block
          • Using the DLL failure control block
      • Multiple enclave dumps
      • Generating a system dump
        • Steps for generating a system dump in a batch runtime environment
        • Steps for generating a system dump in an IMS runtime environment
        • Steps for generating a system dump in a CICS runtime environment
        • Steps for generating a Language Environment U4039 abend
        • Steps for generating a system dump in a z/OS UNIX shell
      • Formatting and analyzing system dumps
        • Preparing to use the Language Environment support for IPCS
        • Understanding Language Environment IPCS VERBEXIT – LEDATA
        • Understanding the Language Environment IPCS VERBEXIT LEDATA output
          • Sections of the Language Environment LEDATA VERBEXIT formatted output
            • PTBL LEDATA output
        • Understanding the HEAP LEDATA output
          • Heap report sections of the LEDATA output
          • Diagnosing heap damage problems
          • Diagnosing storage leak problems
          • Diagnosing heap fragmentation problems
        • Understanding the heap pools LEDATA output
          • Heap pools report sections of the LEDATA output
        • Understanding the heap pools trace LEDATA output
      • Understanding the C/C++-specific LEDATA output
      • Understanding the COBOL-specific LEDATA output
      • Understanding the PL/I-specific LEDATA output
      • Formatting individual control blocks
      • Requesting a Language Environment trace for debugging
        • Locating the trace dump
        • Using the Language Environment trace table format in a dump report
        • Understanding the trace table entry (TTE)
          • Member-specific information in the trace table entry
            • When LE=1 is specified
            • When LE=2 is specified
            • When LE=3 is specified
            • When LE=8 is specified
            • When LE=20 is specified
        • Sample dump for the trace table entry
      • Requesting a UNIX System Services syscall trace for debugging
  • Debugging language-specific routines
    • Debugging C/C++ routines
      • Debugging C/C++ programs
        • Using the __amrc and __amrc2 structures to debug input/output
          • __last_op values
        • Using file I/O tracing to debug C/C++ file I/O problems
        • Displaying an error message with the perror() function
        • Using __errno2() to diagnose application problems
      • Diagnosing DLL problems
      • Using C/C++ listings
        • Finding variables
          • Steps for finding automatic variables
          • Locating the Writable Static Area (WSA)
          • Steps for finding the static storage area
          • Steps for finding RENT static variables
          • Steps for finding external RENT variables
          • Steps for finding NORENT static variables
          • Steps for finding external NORENT variables
          • Steps for finding the C/370 parameter list
          • Steps for finding the C++ parameter list
          • Steps for finding members of aggregates
          • Finding the timestamp
      • Generating a Language Environment dump of a C/C++ routine
        • cdump()
        • csnap()
        • ctrace()
        • Sample C routine that calls cdump()
        • Sample C++ routine that generates a Language Environment dump
        • Sample Language Environment dump with C/C++-specific information
        • Finding C/C++ information in a Language Environment dump
          • Memory file control block
          • Additional Floating-Point registers
            • Registers on entry to CEE3DMP
            • Parameters, registers, and variables for active routines
            • Condition information for active routines
          • Vector registers
            • Registers on entry to CEE3DMP
            • Parameters, registers, and variables for active routines
            • Condition information for active routines
        • Sample Language Environment dump with XPLINK-specific information
          • Example dump of calling between XPLINK and non-XPLINK programs
        • Finding XPLINK information in a Language Environment dump
      • C/C++ contents of the Language Environment trace tables
      • Debugging examples of C/C++ routines
        • Divide-by-zero error
        • Calling a nonexistent non-XPLINK function
        • Calling a nonexistent XPLINK function
          • Sections of the dump from example C routine (calling a nonexistent XPLINK function)
      • Handling dumps written to the z/OS UNIX file system
      • Multithreading consideration
      • Understanding C/C++ heap information in storage reports
        • Language Environment storage report with heap pools statistics
          • HEAPPOOLS storage statistics
            • HEAPPOOLS statistics
            • HEAPPOOLS summary
        • C function __uheapreport() storage report
          • User-created HeapPools statistics
          • HeapPools summary
      • MEMCHECK VHM memory leak analysis tool
        • Invoking MEMCHECK VHM
        • MEMCHECK VHM environment variables
        • MEMCHECK VHM report sample scenario
        • MEMCHECK VHM report examples
    • Debugging COBOL programs
      • Determining the source of error
        • Tracing program logic
        • Finding input/output errors
        • Handling input/output errors
        • Validating data (class test)
        • Assessing switch problems
        • Generating information about procedures
      • Using COBOL listings
      • Generating a Language Environment dump of a COBOL program
        • COBOL program that calls another COBOL program
        • COBOL program that calls the Language Environment CEE3DMP callable service
        • Sample Language Environment dump with COBOL-specific information
        • Finding COBOL information in a dump
          • Control block information for active routines
          • Storage for each active routine
            • Storage for active COBOL programs
          • Enclave-level data
          • Process-level data
      • Debugging example COBOL programs
        • Subscript range error
          • Sections of Language Environment dump for COBOLX
        • Calling a nonexistent subroutine
        • Divide-by-zero error
          • Sections of Language Environment dump for program COBOLZ1
    • Debugging Fortran routines
      • Determining the source of errors in Fortran routines
        • Identifying runtime errors
      • Using Fortran compiler listings
      • Generating a Language Environment dump of a Fortran routine
        • DUMP/PDUMP subroutines
          • Usage considerations for DUMP/PDUMP
        • CDUMP/CPDUMP subroutines
          • Usage considerations for CDUMP/CPDUMP
        • SDUMP subroutine
          • Usage considerations for SDUMP
      • Finding Fortran information in a Language Environment dump
      • Examples of debugging Fortran routines
        • Calling a nonexistent routine
        • Divide-by-zero error
    • Debugging PL/I for MVS & VM routines
      • Determining the source of errors in PL/I for MVS & VM routines
        • Logic errors in the source routine
        • Invalid use of PL/I for MVS & VM
        • Unforeseen errors
        • Invalid input data
        • Compiler or runtime routine malfunction
        • System malfunction
        • Unidentified routine malfunction
        • Storage overlay problems
      • Using PL/I for MVS & VM compiler listings
        • Generating PL/I for MVS & VM listings and maps
        • Finding information in PL/I for MVS & VM listings
          • Static internal storage map
          • Variable storage map
          • Object code listing
      • Generating a Language Environment dump of a PL/I for MVS & VM routine
        • PLIDUMP syntax and options
        • PLIDUMP usage notes
      • Finding PL/I for MVS & VM information in a dump
        • Traceback
          • PL/I for MVS & VM task traceback
          • Condition information
          • Statement number and address where error occurred
        • Control blocks for active routines
          • Automatic variables
          • Static variables
          • Based variables
          • Area variables
          • Variables in areas
          • Contents of parameter lists
          • Timestamp
        • Control blocks associated with the thread
          • CAA address
          • File status and attribute information
      • PL/I for MVS & VM contents of the Language Environment trace table
      • Debugging example of PL/I for MVS & VM routines
        • Subscript range error
        • Calling a nonexistent subroutine
        • Divide-by-zero error
    • Debugging Enterprise PL/I routines
      • Determining the source of errors in Enterprise PL/I routines
        • Logic errors in the source routine
        • Invalid use of Enterprise PL/I
        • Unforeseen errors
        • Invalid input data
        • Compiler or runtime routine malfunction
        • System malfunction
        • Unidentified routine malfunction
        • Storage overlay problems
      • Using Enterprise PL/I compiler listings
        • Generating Enterprise PL/I listings and maps
        • Finding information in Enterprise PL/I listings
          • Pseudo assembly listing
          • External symbol dictionary
          • External symbol cross reference
          • Storage offset listing
          • Static map
          • Automatic map
      • Generating a Language Environment dump of an Enterprise PL/I routine
        • PLIDUMP syntax and options
        • PLIDUMP usage notes
      • Finding Enterprise PL/I information in a dump
        • Traceback
          • Condition information
          • Statement number and address where error occurred
        • Control blocks for active routines
          • Automatic variables
          • Static variables
          • Based variables
          • Area variables
          • Variables in areas
          • Contents of parameter lists
        • Control blocks associated with the thread
          • CAA address
          • File status and attribute information
      • Enterprise PL/I contents of the Language Environment trace table
      • Debugging example of Enterprise PL/I routines
        • Subscript range error
        • Calling a nonexistent subroutine
        • Divide-by-zero error
    • Debugging under CICS
      • Accessing debugging information
        • Locating Language Environment runtime messages
        • Locating the Language Environment traceback
        • Locating the Language Environment dump
        • Using CICS transaction dump
        • Using CICS register and program status word contents
        • Using Language Environment abend and reason codes
        • Using Language Environment return codes to CICS
      • Activating Language Environment feature trace records under CICS
      • Ensuring transaction rollback
      • Finding data when Language Environment returns a nonzero return code
      • Finding data when Language Environment abends internally
      • Finding data when Language Environment abends from an EXEC CICS command
      • Displaying and modifying runtime options with the CLER transaction
  • Debugging Language Environment AMODE 64 applications
    • Preparing your AMODE 64 application for debugging
      • Setting compiler options
        • XL C and XL C++ compiler options for AMODE 64 applications
      • Using Language Environment runtime options
        • Determining runtime options in effect
        • Understanding the HEAPZONES and HEAPCHK runtime options
      • Controlling storage allocation
        • Storage statistics for AMODE 64 applications
          • Stack storage statistics for AMODE 64 applications
            • STACK64 and THREADSTACK64 statistics
            • Determining the applicable threads
            • Allocating stack storage
          • Heap storage statistics
            • HEAP64, LIBHEAP64, and IOHEAP64 statistics
          • Heap pools storage statistics
      • Modifying exception handling behavior
        • Language Environment application program interfaces (API)
        • Language Environment runtime options
        • Customizing exception handlers
      • Using condition information
        • Using the feedback code parameter
        • Using the symbolic feedback code
    • Classifying AMODE 64 application errors
      • Identifying problems in routines
        • Language Environment module names
        • Common errors in routines
      • Interpreting runtime messages
        • Message prefix
        • Message number
        • Severity code
        • Message text
      • Understanding abend codes
        • User abends
        • System abends
    • Using Language Environment AMODE 64 debugging facilities
      • Debugging tools
      • Language Environment dumps
        • Generating a Language Environment dump with TERMTHDACT
          • Considerations for setting TERMTHDACT options
        • Generating a Language Environment dump with language-specific functions
        • Understanding the Language Environment dump
          • Sections of the Language Environment dump
      • Generating a system dump
        • Steps for generating a system dump in a batch runtime environment
        • Steps for generating a system dump in a z/OS UNIX shell
      • Formatting and analyzing system dumps
        • Preparing to use the Language Environment support for IPCS
        • Understanding Language Environment IPCS VERBEXIT – LEDATA
          • Report type parameters
          • Data selection parameters
          • Control block selection parameters
          • Examples
        • Understanding the Language Environment IPCS VERBEXIT LEDATA output
          • Sections of the Language Environment LEDATA VERBEXIT formatted output
            • PTBL LEDATA output
        • Understanding the HEAP LEDATA output
          • Heap report sections of the LEDATA output
          • Diagnosing heap damage problems
          • Diagnosing storage leak problems
          • Diagnosing heap fragmentation problems
        • Understanding the heap pool LEDATA output
          • Heap pool report sections of the LEDATA output
        • Understanding the heap pools trace LEDATA output
      • Understanding the C/C++-specific LEDATA output
        • C/C++-specific sections of the LEDATA output
      • Understanding the AUTH LEDATA output
        • Sections of the AUTH LEDATA VERBEXIT formatted output
      • Formatting individual control blocks
      • Requesting a Language Environment trace for debugging
        • Locating the trace dump
        • Using the Language Environment trace table format in a dump report
        • Understanding the trace table entry (TTE)
          • Member-specific information in the trace table entry
            • When LE=1 is specified
            • When LE=2 is specified
            • When LE=3 is specified
            • When LE=8 is specified
        • Sample dump for the trace table entry
        • Requesting a UNIX System Services syscall trace for debugging
    • Debugging AMODE 64 C/C++ routines
      • Debugging C/C++ programs
        • Using the __amrc and __amrc2 structures to debug input/output
          • __last_op values
        • Using file I/O tracing to debug C/C++ file I/O problems
        • Displaying an error message with the perror() function
        • Using __errno2() to diagnose application problems
      • Using C/C++ listings
        • Finding variables
          • Steps for finding automatic variables
          • Steps for finding C/C++ parameters
          • Steps for finding members of aggregates
      • Generating a Language Environment dump of a C/C++ routine
        • cdump()
        • csnap()
        • ctrace()
        • Sample C routine that calls cdump()
        • Sample C++ routine that generates a Language Environment dump
        • Sample Language Environment dump with C/C++-specific information
      • C/C++ contents of the Language Environment trace tables
      • Debugging examples of C/C++ routines
        • Divide-by-zero error
        • Calling a nonexistent function
      • Handling dumps written to the z/OS UNIX file system
      • Multithreading consideration
      • Understanding C/C++ heap information in storage reports
        • Language Environmentstorage report with heap pools statistics
          • HEAPPOOLS64 storage statistics
            • HEAPPOOLS64 statistics
            • HEAPPOOLS64 summary
          • HEAPPOOLS storage statistics
            • HEAPPOOLS statistics
            • HEAPPOOLS summary
        • C function __uheapreport() storage report
          • User-created HeapPools statistics
          • HeapPools summary
  • Diagnosing problems with Language Environment
    • Diagnosis checklist
      • Locating the name of the failing routine for a non-XPLINK application
    • Searching the IBM Software Support Database
    • Preparing documentation for an authorized program analysis report (APAR)