HP 3000 Manuals

Using TRANDEBUG [ HP Transact Documentation Update Notice ] MPE/iX 5.5 Documentation


HP Transact Documentation Update Notice

Using TRANDEBUG 

This section provides a tutorial to introduce you to the frequently-used
TRANDEBUG commands.  It will help you become familiar with using
TRANDEBUG. A complete list of TRANDEBUG commands and examples is found in
the "TRANDEBUG Commands" section later in this chapter.

After reading this section, you will know how to perform the following
tasks:

   *   Compile a program with the TRANDEBUG option
   *   Start and end a TRANDEBUG session
   *   View source code in TRANDEBUG
   *   Set breakpoints
   *   Continue program execution from within TRANDEBUG
   *   Display data items
   *   Modify data items
   *   Step through a program.

Compiling with the TRANDEBUG Option 

To use TRANDEBUG, you first compile your Transact/iX program(s) with the
TRANDEBUG option.  Specify this option in addition to any other compiler
options that your application requires.

The following example shows how to compile and link a main program using
the TRANDEBUG option:

     :TRANXLLK MYSOURCE,MYPROG,MYLIST;INFO="TRANDEBUG,NOLIST" 

The compiled output appears as follows:

     PAGE 1 Transact/iX HP30138A.04.02 (c) Copyright HEWLETT-PACKARD CO. 1987
     MON, OCT 26, 1992, 9:42 AM

     COMPILING WITH OPTIONS: CODE,DICT,ERRS,TRANDEBUG

     NUMBER OF ERRORS =   0          NUMBER OF WARNINGS =   0
     PROCESSOR TIME  0:00:02.1       ELAPSED TIME  0:00:03

     END OF COMPILE
     HP Link Editor/XL (HP30315A.00.25) Copyright Hewlett-Packard Co. 1986

     LinkEd> link from=$oldpass;to=myprog

     END OF LINK
     :

If your Transact application includes Transact subprograms, each
subprogram that requires debugging must be compiled with the TRANDEBUG
option.

Starting and Ending TRANDEBUG Sessions 

After you have successfully compiled and linked your program using the
TRANDEBUG option, run your program to start a TRANDEBUG session.  The
following figure shows how TRANDEBUG identifies itself on your screen:

     :RUN MYPROG 

	       Click here to view figure.
          Figure 11-1.  The TRANDEBUG Screen 

To terminate a TRANDEBUG session, type the following at the TRANDEBUG>
prompt:

     TRANDEBUG> ABORT 

This command forces your program to abort TRANDEBUG, then exit.  After
you complete your debugging session, you must recompile your program
without the TRANDEBUG compiler option.  Be careful not to move program
files compiled with TRANDEBUG to production.

Displaying Source Code in TRANDEBUG 

TRANDEBUG provides a source code window that lets you view statements in
the source code as they execute.  This window can be controlled with the
WINDOW and PAGE commands.  Your program can run with the windows turned
on or off.  You can change the size of the window and scroll forward and
backward through the source code listing independent of the program's
execution.

To display the source code for the program being debugged, type WINDOW ON
at the TRANDEBUG> prompt as follows:

     TRANDEBUG> WINDOW ON 

TRANDEBUG immediately displays the source code for the program being
debugged in a source code window like this:

	       Click here to view figure.
          Figure 11-2.  TRANDEBUG Source Code Window 

In the example shown, the right arrow (">") marks the current location.
It points to the next statement that will be executed.  In this example,
the current location marker points to the first executable program
statement.  The current system, segment, and offset are displayed within
the source code window.

Setting a Breakpoint 

When you want to stop at a specific location in your program, you can set
a breakpoint.  With TRANDEBUG, you set a breakpoint by specifying the
segment number and p-code offset within a Transact/iX program.  If a
breakpoint is to be set in the current segment, just specify the p-code
offset.

Figure 11-3 shows a compiled listing for a program that adds programmers
to a TurboIMAGE database.  This program is used in the remaining examples
in this section.

           line number 
               p-code offset 
         1.000          SYSTEM PTRAC,
         2.000  0000            BASE = PROGB ( ,3),
         3.000  0000            SOGMPM = "PTRAC   A00.00";
         4.000  0000
         5.000  0000     <<PTRAC is a program that adds programmers to    >>
         6.000  0000     <<a TurboIMAGE database called PROGB.            >>
         7.000  0000     <<PROGB is opened with exclusive modify access.  >>
         8.000  0000
         9.000  0000     DEFINE(ITEM)
        10.000  0000
        11.000  0000         PHONE        U(4), <<programmer's phone extension #>>
        12.000  0000           HEAD = "Phone Number",
        13.000  0000           ENTRY = "Enter phone extension number":
        14.000  0000
        15.000  0000         PROGRAMMER   U(30),   <<programmer's name>>
        16.000  0000           HEAD = "Programmer":
        17.000  0000             LNAME    U(16) = PROGRAMMER(1),  <<last name>>
        18.000  0000               ENTRY = "Enter programmer's last name":
        19.000  0000             FNAME    U(14) = PROGRAMMER(17), <<first name>>
        20.000  0000               ENTRY = "Enter programmer's first name";
        21.000  0000     <<end of data item definitions>>
        22.000  0000     <<initialize>>
        23.000  0000     SET(DELIMITER) "";
        24.000  0001
        25.000  0001     $$ADD: <<begin the ADD command>>
        26.000  0001       $PROGRAMMER:
        27.000  0002          <<add programmer to PROGRAMMERS master data set>>
        28.000  0002
        29.000  0002           LIST PROGRAMMER:
        30.000  0003                PHONE;
        31.000  0004           DATA LNAME:
        32.000  0005                FNAME:
        33.000  0006                PHONE;
        34.000  0007           PUT PROGRAMMERS, LIST=(PROGRAMMER:PHONE);
        35.000  0011       END; <<end of ADD PROGRAMMER>>
        36.000  0012
        37.000  0012     END PTRAC;

          Figure 11-3.  Sample Transact Program 

In Figure 11-3, only the p-code offset is required to set a breakpoint.
A segment number is not required since only the current segment is being
debugged.

To specify a breakpoint at p-code offset 7, type BREAK SET at the
TRANDEBUG> prompt:

     TRANDEBUG> BREAK SET 7 

After the breakpoint is set, TRANDEBUG displays the following:

               BREAKPOINT SET:
                SYSTEM      SEGMENT      OFFSET     COUNT       COMMAND LIST
                ------------------------------------------------------------
             0. PTRAC             0           7         1

When the breakpoint is reached, TRANDEBUG suspends program execution and
displays the TRANDEBUG> prompt.

Continuing Program Execution 

The CONTINUE command resumes the execution of the program being debugged.
Once you have set up initial breakpoints during a debugging session, you
can resume program execution by typing CONTINUE at the TRANDEBUG> prompt.
TRANDEBUG continues execution of your program until a breakpoint is
encountered or the program terminates.

The following example uses the CONTINUE command for the sample program
shown in Figure 11-3:

     TRANDEBUG> CONTINUE 
     >ADD PROGRAMMER 
     Enter programmer's last name>  LORENZ 
     Enter programmer's first name> JAMES 
     Enter phone extension number> 5000 
                 BREAKPOINT ENCOUNTERED, EXECUTION STOPPED:

                    SYSTEM          SEGMENT      OFFSET
                    -----------------------------------
                    PTRAC                 0           7
     TRANDEBUG>

Normal program execution resumes after you issue the CONTINUE command.
The program continues until a breakpoint is reached when TRANDEBUG will
suspend program execution and display the TRANDEBUG> prompt.

When Ctrl Y is invoked during a debugging session, program control
returns to TRANDEBUG and the TRANDEBUG> prompt.  You can then set
additional breakpoints and type CONTINUE to resume execution of your
program, or issue any other valid TRANDEBUG commands.

The following is an example of how Ctrl Y is used:

     TRANDEBUG> CONTINUE 
     >ADD PROGRAMMER 
     Enter programmer's last name: Ctrl Y
     TRANDEBUG> BREAK SET 7 
     TRANDEBUG> CONTINUE 

Displaying the Values of Data Items 

To display the value of a data item, you issue the DISPLAY ITEM command
at the TRANDEBUG> prompt.  When you use this command, you can display the
contents of all items in the list and data registers, or specific items.

The following example displays all items in the list and data registers:

     TRANDEBUG> DISPLAY ITEM 

      LIST REGISTER:
     PROGRAMMER          :   LORENZ     JAMES
     PHONE               :   5000

The following example displays a specific data item:

     TRANDEBUG> DISPLAY ITEM PROGRAMMER 

     PROGRAMMER          :   LORENZ     JAMES

Modifying the Values of Data Items 

To modify the value of a data item, type MODIFY ITEM followed by the data
item name at the TRANDEBUG> prompt.  You can modify the contents of the
data register, but not the list register.  After you issue the MODIFY
ITEM command, TRANDEBUG displays the specified data item value and
prompts you for the new value.  Pressing Return without entering a new
value leaves the data item unchanged.

The following example modifies the FNAME child data item:

     TRANDEBUG> MODIFY ITEM FNAME 
     FNAME            :  < JAMES        >     := < JIM        >

     TRANDEBUG> DISPLAY ITEM PROGRAMMER 

     PROGRAMMER:         :   LORENZ     JIM
     TRANDEBUG>

Stepping Through a Program 

The STEP command causes one or more groups of instructions to be
executed.  It can be used when you want to examine the contents of
variables both before and after the groups of instructions are executed.

The Transact/iX compiler determines the level of granularity at which you
can single-step through a program.  TRANDEBUG allows you to single-step
through programs at a level that is meaningful to the Transact/iX
language.

When single-stepping through the LIST and DATA statements, TRANDEBUG
returns control to you after each data item is loaded into the list and
data registers.

When single-stepping through other Transact/iX verbs, TRANDEBUG returns
control to you after each statement is executed.

The following example uses the STEP command to control program execution.
The current location marker points to the LIST PROGRAMMER statement
(p-code offset = 2).  The user types DISPLAY ITEM at the TRANDEBUG>
prompt as shown below:

	       Click here to view figure.
            

Program execution is resumed briefly with the STEP 3 command.  The name
"LORENZ" is entered in response to a program prompt.  Control returns to
TRANDEBUG after the 3 program instructions are executed.  The user then
types the DISPLAY ITEM command at the TRANDEBUG> prompt:

	       Click here to view figure.
            



MPE/iX 5.5 Documentation