Transactional execution diagnostics

A program interrupt within a transaction is identified by bit 6 of the 16-bit interrupt code's being on. Thus, for example, a protection exception within transactional execution mode would be interrupt code X'0204'.

If the transaction gets a program interrupt that is not filtered (TBEGIN can identify some filtering of program interrupts), normal z/OS program interrupt processing occurs (and the transaction is aborted). Information about the PSW and registers at the time of the program interrupt are captured by the system and made available to your recovery routines, and certain diagnostic "rules" are applied.

ESPIE exit routines will get both the time of error registers/PSW and the transaction-begin registers/PSW.
Note: A SPIE exit routine will not get control for a program interrupt during transactional execution.
For a recovery routine (whether FRR-type or ESTAE-type), there will be additional information in the SDWA:

The IEATXDC service is provided to help you test your applications. A nonconstrained transaction has both a transactional path and a fallback (non-transactional) path. With the IEATXDC service, you can request random aborts of transactions for your work unit so that, upon repeated runnings, you are likely to exercise both the non-abort and abort paths.

Debugging of problems that might occur within transactional execution mode can be much more difficult than others since any stores done within the transaction have been rolled back by the time that the system gets to examine the time of error data. SLIP provides some help in this area:

The SLIP GTF record, at offset (decimal) 135, has a 1-byte count that is the transactional execution DATA filter mismatch count.