Make z/OS debugging easier with the IBM Debugger Profile Service

Off
Strongback Consulting

A debugger profile is a type of configuration that allows a developer to debug a program under certain conditions. There are two debugger profiles types: non-CICS, and CICS. For CICS, it is a DTCN profile. Many developers have used the DTCN transaction for years to setup a debugging session between IDz, and the debugger once its triggered by the the 3270 terminal transaction under test.
For non-CICS, IDz now offers a delay debug profile stored as a sequential dataset in the user’s high level qualifier. This is basically an XML file that controls how the debug manager picks up the debug session and communicates back to the developer’s IDz client.

To make it easier to create and manage these profiles, IBM has developed the Debugger Profile Service. It is a REST API that allows plugins to read and write DTCN debugger profile data to either a CICS repository, or to a sequential dataset for non-CICS programs. It is included with the IDz host components, but must be setup . If your systems programmer has installed the Remote Systems Explorer and Debug Manager in the past, they may not have setup the Debugger Profile Service. This service requires a TCPIP listener, a started task, and subsequent security changes to make it work.

The image above describes some of the started tasks that need to be configured for the DPS to work. Once configured it allows a developer to easily debug existing programs that were compiled outside of JCL, such under Endeavor, Changeman, SCLM, Team Concert, or Dependency Based Build. A user creates the profile in their IDz client, in the Debugger Profiles view, save it, and profile is synchronized back to the mainframe via the Debugger Profile Service.

A non-CICS Debugger Profile

In the image above, you might recognize the profile and its fields from the “Debug As” configurations. These were the DTSP and DTCN views that have since been deprecated. They’ll be removed in a future release. This new view consolidates the data, integrates it with the Debugger Profile Service, and makes it easier for developers to find, edit, export, and share with colleagues.

IF you don’t currently have the Remote Debugger Profile service running. you’ll need to take these steps:

  • Install the IDz host components 14.2 or above.
  • Customize the Unix directory folders for DPS using the provided sample EWQAPRFSU JCL.
  • Create a JCL proc to launch the started task (typically EQAPROF), and put it into the system proclib concatenation.
  • Setup the DPS security definitions
  • Update the system PARMLIB to start the DPS at system IPL.

All of these steps are detailed in the IBM Knowledge Center at Adding support for Debug Profile Service and APIs (ibm.com).

Once the service is setup an running, a user only needs to launch the application with a JCL (or start the CICS transaction if its a CICS application). Here is a sample JCL to kick off a batch job named SOCKY7. Notice, you need to pass in the TEST() parm option:

// SET MYHLQ=KENNY
// SET EQAHLQ=EQAF00
//STEP0 EXEC PGM=IDICZSVC
//STEP1 EXEC PGM=SOCKY7,
// PARM='/TEST()'
//STEPLIB DD DISP=SHR,DSN=&MYHLQ..CLASS.LOAD
//* Uncomment below if the debugger is not part of your systems
//* link list concatenation. Change the HLQ to the correct one for your
//* environment.
// DD DISP=SHR,DSN=&EQAHLQ..SEQAMOD
//SYSOUT DD SYSOUT=*

Upon submitting the job, the debugger should kick off, and connect to your IDz instance, starting the debug session. If you use a non-default port for the DPS, you’ll need to update your connection settings for your z/OS Connection. Just right-click on your z/OS connection, and go to properties:

Then, on the Port Overrides menu, just enter the port number that DPS runs on. The default port is 8180. Note, also that this port can run under SSL/TLS encryption if needed.

Comments are closed.