Annotation of 43BSDTahoe/new/help/src/f77/dbx, revision 1.1.1.1

1.1       root        1: .TI F77/DBX "Sep. 4, 1985"
                      2: Dbx - The Source Level Debugger
                      3: 
                      4: The UNIX source language debugger is called "dbx".
                      5: This write-up illustrates how to use dbx to examine
                      6: the memory image of a program after a fatal error.
                      7: Dbx can also be used to step through the execution of a program,
                      8: see "man dbx" for full details.
                      9: To get the full benefit of dbx, you must specify the -g flag
                     10: when compiling and loading.
                     11: We will use the following program to illustrate the use of dbx:
                     12: 
                     13: .nf
                     14:                dimension vec(10)
                     15:        
                     16:                do 10 i = 1, 10
                     17:        10      vec(i) = 10.0/(i - 5)
                     18:                end
                     19: .fi
                     20: 
                     21: Compile it, execute it, and invoke dbx to examine the dump:
                     22: 
                     23: .nf
                     24:        % f77 -g prog.f
                     25:        prog.f:
                     26:           MAIN:
                     27:        %
                     28:        % a.out
                     29:        *** Arithmetic Exception: Floating divide by zero
                     30:        Illegal instruction (core dumped)
                     31:        % 
                     32:        % dbx
                     33:        dbx version 3.3 of 8/28/85 19:51 (ucbopal).
                     34:        Type 'help' for help.
                     35:        enter object file name (default is `a.out'): 
                     36:        reading symbolic information ...
                     37:        [using memory image in core]
                     38:        (dbx) 
                     39: .fi
                     40: 
                     41: When dbx is running, it changes the prompt to "(dbx)".
                     42: To exit dbx, use the "quit" command.
                     43: Within dbx, the "help" command summarizes some (not all) of the dbx
                     44: commands.
                     45: The dbx command "where" displays a subroutine traceback telling
                     46: which line in each subroutine is active:
                     47: .nf
                     48: 
                     49:        (dbx)
                     50:        (dbx) where
                     51:        abort() at 0x15de
                     52:        f77_abort(0x8, 0x1) at 0xa74
                     53:        sigdie(0x8, 0x9, 0x7fffec68, 0x12e) at 0x229
                     54:        MAIN(), line 4 in "prog.f"
                     55:        main(0x1, 0x7fffeccc, 0x7fffecd4) at 0x123
                     56: 
                     57: .fi
                     58: If you did not compile with -g, but did load with -g (e.g. f77 -g *.o);
                     59: \&"where" still gives a traceback of the names of active subroutines,
                     60: but without line numbers.
                     61: 
                     62: The "list" command lists the source for the currently active source
                     63: file:
                     64: 
                     65: .nf
                     66:        (dbx) list
                     67:            1           dimension vec(10)
                     68:            2   
                     69:            3           do 10 i = 1, 10
                     70:            4   10      vec(i) = 10.0/(i - 5)
                     71:            5           end
                     72: .fi
                     73: 
                     74: The default is to list 10 lines at a time; you can specify a range of
                     75: lines as in "list 32,45".  Switch the active source file with the "file"
                     76: command.  Use the "print" command to display the values of variables.
                     77: If an array name is specified, the entire array is printed:
                     78: .nf
                     79: 
                     80:        (dbx) 
                     81:        (dbx) print vec
                     82:        [1]     -2.5
                     83:        [2]     -3.33333
                     84:        [3]     -5.0
                     85:        [4]     -10.0
                     86:        [5]     0.0
                     87:        [6]     0.0
                     88:        [7]     0.0
                     89:        [8]     0.0
                     90:        [9]     0.0
                     91:        [10]    0.0
                     92: 
                     93: .fi
                     94: You can also request individual elements, e.g.: "print vec[2], vec[8]".
                     95: Note you must use square brackets around subscripts instead of parentheses.
                     96: 
                     97: The "/" command, listed in "man dbx" under "Machine Level Commands",
                     98: allows you to list any part of memory.
                     99: It may be used to print part of a vector or array, something that can not
                    100: be specified with the "print" command.
                    101: The general format of "/" is:
                    102: 
                    103:        address/count mode
                    104: 
                    105: Commonly used modes with Fortran are:
                    106: 
                    107: .nf
                    108:        D       print an integer in decimal
                    109:        f       print a single precision real
                    110:        g       print a double precision real
                    111:        X       print an integer or single precision real in hexadecimal
                    112:        c       print a byte as a character
                    113:        s       print a string of characters terminated by a null (0 byte)
                    114: .fi
                    115: 
                    116: To print vec() with the "/" command, type:
                    117: 
                    118:        &vec/10 f
                    119: 
                    120: This says to start displaying memory at the address "&vec", which is the
                    121: address of vector vec(), display 10 items using floating point format:
                    122:  
                    123: .nf
                    124:        (dbx) &vec/10 f
                    125:        00002c34:  -2.500000 -3.333333 -5.000000 -10.000000
                    126:        00002c44:  0.000000 0.000000 0.000000 0.000000
                    127:        00002c54:  0.000000 0.000000
                    128: .fi
                    129: 
                    130: The "/" command may be used to print part of a vector or array.
                    131: The following prints vec(3)...vec(6):
                    132: 
                    133: .nf
                    134:        (dbx) 
                    135:        (dbx) &vec+8/4 f
                    136:        00002c3c:  -5.000000 -10.000001 0.000000 0.000000
                    137: .fi
                    138: 
                    139: The initial address uses byte arithmetic, so that &vec+8 is the address
                    140: of vec(3).

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.