Difference between revisions of "Debugging ILE program in batch"

From MidrangeWiki
Jump to: navigation, search
(+SEP debug)
(Using the SEP debugger in green screen:: +clarify not just for batch jobs)
Line 40: Line 40:
 
==Using the SEP debugger in green screen:==
 
==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:
+
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. This works not only for batch jobs, but for any job you want to debug different to the one you will be issuing the debug commands from.
 
# STRDBG for your program - probably UPDPROD(*YES)  
 
# 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"  
 
# Put my cursor on the line where I want it to break, then press F6 - this gets me a line number that is "right"  

Revision as of 20:09, 4 June 2014

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:

  1. 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.
  2. 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
  3. STRSRVJOB on the held batch job.
  4. STRDBG on your program. Specify UPDPROD(*YES) if needed. You'll see the source listing if you compiled with DBGVIEW(*LIST) or *SOURCE.
  5. Press F12 to exit - you cannot set a breakpoint yet.
  6. Release the job so that it becomes STATUS(*ACTIVE).
  7. You'll see a display asking if you want to debug or continue. Press F10 to debug.
  8. DSPMODSRC to see the source listing again. Alternately, press F10 to step into the first instruction.
  9. Now you can add your breakpoints.
  10. Press F3 until you're back to the "debug or continue" display. Press Enter to run the program with your breakpoints set.
  11. When you're done, do an ENDDBG and ENDSRVJOB.

Thanks to Bob Slaney, Phil, Patrick Conner and Kelly Fucile.

Using the IBM Distributed Debugger:

  1. SBMJOB CMD(CALL PGM(yourlib/yourpgm)) JOBQ(yourlib/yourjobq) HOLD(*YES)
  2. Start your Code debugger from Start->Programs->WebSphere Development... ->IBM Distributed Debugger->IBM Distributed Debugger
  3. Select the debugger Start up window and key into the job name entry field */##########/* where ########## is your user id.
  4. You may have to log in and specify the AS/400 system name.
  5. Select the job that is being held in yourjobq.
  6. Click the ok push button.
  7. Enter the library and program name into the Program entry field
  8. Click the Load push button on the debugger Startup information window. A debugger message will appear telling you to start the program.
  9. Click Ok on the message push button, even though it tells you to start your program first.
  10. Switch to a 5250 emulation window.
  11. WRKJOBQ JOBQ(yourlib/yourjobq)
  12. 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. This works not only for batch jobs, but for any job you want to debug different to the one you will be issuing the debug commands from.

  1. STRDBG for your program - probably UPDPROD(*YES)
  2. Put my cursor on the line where I want it to break, then press F6 - this gets me a line number that is "right"
  3. 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?)
  4. Press F12
  5. 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.
  6. Put cursor on message and press F1
  7. Copy the STRSRVJOB to the clipboard
  8. Press the ATTN key (Shift-Esc on my keyboard) and press Enter
  9. Take option 1 and press Enter to go to alternative job
  10. Sign on
  11. Paste the STRSRVJOB command and press enter - maybe CALL QCMD first
  12. STRDBG the same as above - it will show you where it stopped
  13. Put cursor on that line and press F6
  14. Press F12
  15. ATTN option 1 and press Enter to go to original job
  16. Press Enter twice to release the job
  17. ATTN option 1 and press Enter to go back to alternative job - it should be positioned at the breakpoint
  18. 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