24
Tue, Dec
0 New Articles

RPG Academy: Debug Done Right - Starting a Debug Session

RPG
Typography
  • Smaller Small Medium Big Bigger
  • Default Helvetica Segoe Georgia Times

 

Now that you know the debug views at your disposal and learned how to encrypt your debug views, it’s time to start a good and proper debug session with the ILE Debugger.

Once you create your objects with the appropriate debug view, you’re ready to debug them. You probably guessed that the process is initiated with strdbg. Let’s start with a debug session of a simple program built to test some of the date-handling functions from the “BIF Up Your Code” subseries, named TST_DTEOPS, which you can download here.

Just a side note before we begin: even though I prefer the *list view, I’ll use the simpler and somewhat “cleaner” *SOURCE view for this walkthrough.

So, to start the debug session, you just need to enter the following command, where MYLIB is the library to which you decide to restore the program:

STRDBG PGM(MYLIB/TST_DTEOPS)

The Display Module screen will be displayed, as shown in Figure 1. Notice, at the bottom of the panel, the debug command line (debug commands are not case-sensitive) and the function key legend. I’ll use both of these throughout the debug session. Remember, however, that ILE programs are usually composed of more than one module, so the first thing you should know about navigation is how to select modules for display.

RPG Academy: Debug Done Right - Starting a Debug Session - Figure 1 

Figure 1: The Display Module source screen

As with many debugger operations, you can use either a function key (F14) or a debug command (DISPLAY MODULE) to select from among your modules; press F14 now to display the Work with Module List panel. From here, you can select, using option 5, the module you want to display. Since our little program has only one module (TST_DTEOPS), the list only includes that module, so let’s add the DTE_OPS service program. Use option 1 and type the service program’s name. The service program and respective module will be added to the list, as shown in Figure 2.

RPG Academy: Debug Done Right - Starting a Debug Session - Figure 2

Figure 2: A service program and respective module added to the debug session

If you want to remove a module from this list, use option 4. For now, I’ll select module DTE_OPS with option 5 and press Enter. If you’re following these steps, you should see the source for DTE_OPS on the Display Module Source panel. You can use the Page Up and Page Down keys to scroll through the source. That’s easy navigation, but when you’re working with code of a more realistic length, trying to find the area of source that interests you using only Page Up and Page Down is both tedious and time-consuming. Typically, you’ll want to view a section of source associated with a particular location, such as the beginning, the end, or a location relative to the currently displayed section, or with a particular named item, such as a variable, subroutine, or procedure. In addition, when you’ve set breakpoints in the code, you’ll often want to display the associated section of code. There are a few commands to facilitate these tasks. Some are discussed in the next section, and others are covered later in this subseries.

Navigating in the Debug Session

Let’s look at the navigational commands available, shown in Table 1.

Navigational Commands

Command

Abbreviation

What It Does

DISPLAY MODULE <modulename>

DI M

Displays source for module <modulename>.

UP n

U n

Moves the displayed window of source n lines to the beginning, like a user-controlled, number-of-lines Page Up.

DOWN n

DO n

Moves the displayed window of source n lines to the end.

TOP

T

Jumps to the first line of the source currently displayed.

BOTTOM

BO

Jumps to the last line of the source currently displayed.

LEFT n

L n

Moves the displayed window of source n columns to the left; alternatively, pressing F19 moves the window 12 columns to the left.

RIGHT n

R n

Moves the displayed window of source n columns to the right; alternatively, pressing F20 moves the window 12 columns to the right.

FIND <text> <direction>

F <text> <direction>

Positions source to the line containing <text>. The optional <direction> parameter can be either N (“next,” the default) to search forward or P (“previous”) to search backward.

FIND <line number>

F <line number>

Positions source to <line number> line.

NEXT

N

Jumps to the next breakpoint in the currently displayed source.

PREVIOUS

P

Jumps to the previous breakpoint in the currently displayed source.

There are a few additional points to keep in mind about the find command:

  • If <text> contains blanks, it must be enclosed within apostrophes; for example, F ‘= P_’ will look for an assignment or comparison involving a parameter variable.
  • If you’re searching for text rather than a line number, be sure to enclose numeric values in apostrophes.
  • If the cursor is located in the text, the search begins from that point. Otherwise, the search begins with the first character on the top line displayed.
  • You can repeat the last FIND command executed by issuing command FIND without parameters or by pressing F16.

Now that you’ve started the debugger and seen how to select and add modules, it’s time to practice the navigational commands. For now, ignore the breakpoint-related commands in the last two rows of Table 1; I’ll return to those in the next TechTip. Stop here and go for a spin in the Display Module screen!

Back already? Before you actually debug a program, there are a few more things you should be aware of. When you start a debug session using the STRDBG command, you can change a few parameters, as you can see in Figure 3.

RPG Academy: Debug Done Right - Starting a Debug Session - Figure 3

Figure 3: The STRDBG prompt screen

The most relevant options are as follows:

  • Whether database files in *prod-type libraries can be changed is controlled by the UPDPROD parameter. The shipped default is *no.
  • Only relevant if your debug session includes OPM programs, the OPMSRC parameter controls whether you’re allowed to debug OPM programs.

These options can be changed during your debug session with the SET command. To use this debug command, type SET on the debug command line and press Enter. The Set Debug Options window in Figure 4 will appear, and you can make your choices.

RPG Academy: Debug Done Right - Starting a Debug Session - Figure 4 

Figure 4: The Set Debug Options window

In addition to the previously mentioned options, SET also allows you to define how the text searches using FIND are performed. The default is case-insensitive (I), but you can change the value to M to force a case-match.

Coming Up: Breakpoints!

Next time around, I’ll discuss setting and using breakpoints, because just navigating on the source is not enough to solve problems. Until then, I’d like to hear what you think of this subseries: is it useful; are you actually starting to use the ILE debugger? Share your experience with your fellow programmers, using the Comments section below!

BLOG COMMENTS POWERED BY DISQUS

LATEST COMMENTS

Support MC Press Online

$

Book Reviews

Resource Center

  • SB Profound WC 5536 Have you been wondering about Node.js? Our free Node.js Webinar Series takes you from total beginner to creating a fully-functional IBM i Node.js business application. You can find Part 1 here. In Part 2 of our free Node.js Webinar Series, Brian May teaches you the different tooling options available for writing code, debugging, and using Git for version control. Brian will briefly discuss the different tools available, and demonstrate his preferred setup for Node development on IBM i or any platform. Attend this webinar to learn:

  • SB Profound WP 5539More than ever, there is a demand for IT to deliver innovation. Your IBM i has been an essential part of your business operations for years. However, your organization may struggle to maintain the current system and implement new projects. The thousands of customers we've worked with and surveyed state that expectations regarding the digital footprint and vision of the company are not aligned with the current IT environment.

  • SB HelpSystems ROBOT Generic IBM announced the E1080 servers using the latest Power10 processor in September 2021. The most powerful processor from IBM to date, Power10 is designed to handle the demands of doing business in today’s high-tech atmosphere, including running cloud applications, supporting big data, and managing AI workloads. But what does Power10 mean for your data center? In this recorded webinar, IBMers Dan Sundt and Dylan Boday join IBM Power Champion Tom Huntington for a discussion on why Power10 technology is the right strategic investment if you run IBM i, AIX, or Linux. In this action-packed hour, Tom will share trends from the IBM i and AIX user communities while Dan and Dylan dive into the tech specs for key hardware, including:

  • Magic MarkTRY the one package that solves all your document design and printing challenges on all your platforms. Produce bar code labels, electronic forms, ad hoc reports, and RFID tags – without programming! MarkMagic is the only document design and print solution that combines report writing, WYSIWYG label and forms design, and conditional printing in one integrated product. Make sure your data survives when catastrophe hits. Request your trial now!  Request Now.

  • SB HelpSystems ROBOT GenericForms of ransomware has been around for over 30 years, and with more and more organizations suffering attacks each year, it continues to endure. What has made ransomware such a durable threat and what is the best way to combat it? In order to prevent ransomware, organizations must first understand how it works.

  • SB HelpSystems ROBOT GenericIT security is a top priority for businesses around the world, but most IBM i pros don’t know where to begin—and most cybersecurity experts don’t know IBM i. In this session, Robin Tatam explores the business impact of lax IBM i security, the top vulnerabilities putting IBM i at risk, and the steps you can take to protect your organization. If you’re looking to avoid unexpected downtime or corrupted data, you don’t want to miss this session.

  • SB HelpSystems ROBOT GenericCan you trust all of your users all of the time? A typical end user receives 16 malicious emails each month, but only 17 percent of these phishing campaigns are reported to IT. Once an attack is underway, most organizations won’t discover the breach until six months later. A staggering amount of damage can occur in that time. Despite these risks, 93 percent of organizations are leaving their IBM i systems vulnerable to cybercrime. In this on-demand webinar, IBM i security experts Robin Tatam and Sandi Moore will reveal:

  • FORTRA Disaster protection is vital to every business. Yet, it often consists of patched together procedures that are prone to error. From automatic backups to data encryption to media management, Robot automates the routine (yet often complex) tasks of iSeries backup and recovery, saving you time and money and making the process safer and more reliable. Automate your backups with the Robot Backup and Recovery Solution. Key features include:

  • FORTRAManaging messages on your IBM i can be more than a full-time job if you have to do it manually. Messages need a response and resources must be monitored—often over multiple systems and across platforms. How can you be sure you won’t miss important system events? Automate your message center with the Robot Message Management Solution. Key features include:

  • FORTRAThe thought of printing, distributing, and storing iSeries reports manually may reduce you to tears. Paper and labor costs associated with report generation can spiral out of control. Mountains of paper threaten to swamp your files. Robot automates report bursting, distribution, bundling, and archiving, and offers secure, selective online report viewing. Manage your reports with the Robot Report Management Solution. Key features include:

  • FORTRAFor over 30 years, Robot has been a leader in systems management for IBM i. With batch job creation and scheduling at its core, the Robot Job Scheduling Solution reduces the opportunity for human error and helps you maintain service levels, automating even the biggest, most complex runbooks. Manage your job schedule with the Robot Job Scheduling Solution. Key features include:

  • LANSA Business users want new applications now. Market and regulatory pressures require faster application updates and delivery into production. Your IBM i developers may be approaching retirement, and you see no sure way to fill their positions with experienced developers. In addition, you may be caught between maintaining your existing applications and the uncertainty of moving to something new.

  • LANSAWhen it comes to creating your business applications, there are hundreds of coding platforms and programming languages to choose from. These options range from very complex traditional programming languages to Low-Code platforms where sometimes no traditional coding experience is needed. Download our whitepaper, The Power of Writing Code in a Low-Code Solution, and:

  • LANSASupply Chain is becoming increasingly complex and unpredictable. From raw materials for manufacturing to food supply chains, the journey from source to production to delivery to consumers is marred with inefficiencies, manual processes, shortages, recalls, counterfeits, and scandals. In this webinar, we discuss how:

  • The MC Resource Centers bring you the widest selection of white papers, trial software, and on-demand webcasts for you to choose from. >> Review the list of White Papers, Trial Software or On-Demand Webcast at the MC Press Resource Center. >> Add the items to yru Cart and complet he checkout process and submit

  • Profound Logic Have you been wondering about Node.js? Our free Node.js Webinar Series takes you from total beginner to creating a fully-functional IBM i Node.js business application.

  • SB Profound WC 5536Join us for this hour-long webcast that will explore:

  • Fortra IT managers hoping to find new IBM i talent are discovering that the pool of experienced RPG programmers and operators or administrators with intimate knowledge of the operating system and the applications that run on it is small. This begs the question: How will you manage the platform that supports such a big part of your business? This guide offers strategies and software suggestions to help you plan IT staffing and resources and smooth the transition after your AS/400 talent retires. Read on to learn: