Debugging ILE program in batch
From MidrangeWiki
Brad Stone has a FAQ entry that addresses this: http://bvstools.com/faq.html#RPG
If that site is unavailable, here is a list of steps culled from posts to RPG400-L:
Using the Green Screen debugger:
- Submit your program to batch. The job MUST be held. You can either hold the job queue (HLDJOBQ) or hold the individual job (HLDJOB) or specify HOLD(*YES) on the SBMJOB command.
- WRKSBMJOB/WRKUSRJOB/WRKACTJOB and find your submitted job. Note that the SBMJOB command gives you an informational message with the job name/number. What you need is the job name, user ID and job number - the fully qualified job name. Example: 123456/BUCK/MONTHEND
- STRSRVJOB on the held batch job.
- STRDBG on your program. Specify UPDPROD(*YES) if needed. You'll see the source listing if you compiled with DBGVIEW(*LIST) or *SOURCE.
- Press F12 to exit - you cannot set a breakpoint yet.
- Release the job so that it becomes STATUS(*ACTIVE).
- You'll see a display asking if you want to debug or continue. Press F10 to debug.
- DSPMODSRC to see the source listing again. Alternately, press F10 to step into the first instruction.
- Now you can add your breakpoints.
- Press F3 until you're back to the "debug or continue" display. Press Enter to run the program with your breakpoints set.
- When you're done, do an ENDDBG and ENDSRVJOB.
Thanks to Bob Slaney, Phil, Patrick Conner and Kelly Fucile.
Using the IBM Distributed Debugger:
- SBMJOB CMD(CALL PGM(yourlib/yourpgm)) JOBQ(yourlib/yourjobq) HOLD(*YES)
- Start your Code debugger from Start->Programs->WebSphere Development... ->IBM Distributed Debugger->IBM Distributed Debugger
- Select the debugger Start up window and key into the job name entry field */##########/* where ########## is your user id.
- You may have to log in and specify the AS/400 system name.
- Select the job that is being held in yourjobq.
- Click the ok push button.
- Enter the library and program name into the Program entry field
- Click the Load push button on the debugger Startup information window. A debugger message will appear telling you to start the program.
- Click Ok on the message push button, even though it tells you to start your program first.
- Switch to a 5250 emulation window.
- WRKJOBQ JOBQ(yourlib/yourjobq)
- Release your job.
Answer courtesy Rob Berendt via RPG400-L 2 Aug 2001
Using the SEP debugger in green screen:
You have to at least be on V5R3. You can use SEP in green-screen debugging, although not quite so easy as in the recent releases of WDSC and RDi or RDp. For the green-screen method, I do this:
- STRDBG for your program - probably UPDPROD(*YES)
- Put my cursor on the line where I want it to break, then press F6 - this gets me a line number that is "right"
- On the command line, type sbreak line-number user qtmhhtp1 (that is the usual user for CGI jobs, you would not be debugging anything else, right?)
- Press F12
- Start your server and/or do the thing in the browser that you want to debug You'll get a message in your job that says the SEP was reached. In the message is the STRSRVJOB you need to run. I do the following. It is harder to describe than to do.
- Put cursor on message and press F1
- Copy the STRSRVJOB to the clipboard
- Press the ATTN key (Shift-Esc on my keyboard) and press Enter
- Take option 1 and press Enter to go to alternative job
- Sign on
- Paste the STRSRVJOB command and press enter - maybe CALL QCMD first
- STRDBG the same as above - it will show you where it stopped
- Put cursor on that line and press F6
- Press F12
- ATTN option 1 and press Enter to go to original job
- Press Enter twice to release the job
- ATTN option 1 and press Enter to go back to alternative job - it should be positioned at the breakpoint
- Walk through the code as usual
Reference: http://archive.midrange.com/rpg400-l/201102/msg00419.html © midrange.com
Answer courtesy Vern Hamberg via RPG400-L 22 Feb 2011