Annotation of 43BSDTahoe/new/help/src/f77/dbx, revision 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.