Annotation of researchv10dc/dist/man/v4/man1/db.1, revision 1.1.1.1

1.1       root        1: .th DB I 8/20/73
                      2: .sh NAME
                      3: db \*- debug
                      4: .sh SYNOPSIS
                      5: .bd db
                      6: [ core [ namelist ] ] [
                      7: .bd \*-
                      8: ]
                      9: .sh DESCRIPTION
                     10: Unlike
                     11: many debugging packages (including DEC's ODT, on
                     12: which
                     13: .it db
                     14: is loosely based),
                     15: .it db
                     16: is not loaded as part of the
                     17: core image which it is used to examine; instead it examines files.
                     18: Typically, the file will be either a core image produced
                     19: after a fault or the binary output of
                     20: the assembler.
                     21: .it Core
                     22: is the file being debugged; if omitted \fBcore\fR is assumed.
                     23: .it Namelist
                     24: is a file containing a symbol table.
                     25: If it is omitted,
                     26: the symbol table is obtained from the
                     27: file being debugged,
                     28: or if not there from
                     29: .bd a.out.
                     30: If no appropriate name list file
                     31: can be found,
                     32: .it db
                     33: can still be used but some of its symbolic
                     34: facilities become unavailable.
                     35: .s3
                     36: For the meaning of the optional third argument, see
                     37: the last paragraph below.
                     38: .s3
                     39: The format for most
                     40: .it db
                     41: requests is an address followed
                     42: by a one character command.
                     43: Addresses are expressions built up as follows:
                     44: .s3
                     45: .lp +4 3
                     46: 1.     A name has the value assigned to it
                     47: when the input file was assembled.
                     48: It may be relocatable or not depending
                     49: on the use of the name during the assembly.
                     50: .s3
                     51: .lp +4 3
                     52: 2.     An octal number is an absolute quantity with the appropriate
                     53: value.
                     54: .s3
                     55: .lp +4 3
                     56: 3.     A decimal number immediately followed by `\fB.\fR' is
                     57: an absolute quantity with the appropriate value.
                     58: .s3
                     59: .lp +4 3
                     60: 4.     An octal number immediately followed by \fBr\fR is a relocatable
                     61: quantity with the appropriate value.
                     62: .s3
                     63: .lp +4 3
                     64: 5.     The symbol \fB.\fR indicates the current pointer
                     65: of \fIdb\fR.
                     66: The current pointer is set by many
                     67: \fIdb\fR
                     68: requests.
                     69: .s3
                     70: .lp +4 3
                     71: 6.     A \fB*\fR before
                     72: an expression forms an expression whose value is the
                     73: number in the word addressed by the first expression.
                     74: A \fB*\fR alone is equivalent to `\fB*.\fR'.
                     75: .s3
                     76: .lp +4 3
                     77: 7.     Expressions separated by \fB+\fR or blank are expressions
                     78: with value equal to the sum of the components.  At most
                     79: one of the components may be relocatable.
                     80: .s3
                     81: .lp +4 3
                     82: 8.     Expressions separated by \fB\*-\fR form an expression
                     83: with value equal to the difference to the components.
                     84: If the right component is relocatable, the left component
                     85: must be relocatable.
                     86: .s3
                     87: .lp +4 3
                     88: 9.     Expressions are evaluated left to right.
                     89: .s3
                     90: .in \n(inu
                     91: Names for registers are
                     92: built in:
                     93: .s3
                     94: .bd "   r0 ... r5"
                     95: .bd "   sp"
                     96: .bd "   pc"
                     97: .bd "   fr0 ... fr5"
                     98: .s3
                     99: These may be examined.
                    100: Their values are deduced from the contents
                    101: of the stack in a core image file.  They are meaningless
                    102: in a file that is not a core image.
                    103: .s3
                    104: If no address is given for a command, the current address
                    105: (also specified by ``\fB.\fR'') is assumed.  In general, ``\fB.\fR''
                    106: points to the last word or byte printed by
                    107: .it db.
                    108: .s3
                    109: There are
                    110: .it db
                    111: commands for examining locations
                    112: interpreted as numbers, machine instructions,
                    113: ASCII characters, and addresses.
                    114: For numbers and characters, either bytes
                    115: or words may be examined.
                    116: The following commands are used to examine the specified file.
                    117: .s3
                    118: .lp +4 3
                    119: /      The addressed word is printed in octal.
                    120: .s3
                    121: .lp +4 3
                    122: \\     The addressed byte is printed in octal.
                    123: .s3
                    124: .lp +4 3
                    125: "      The addressed word is printed as two ASCII characters.
                    126: .s3
                    127: .if t .tr '\(aa\`\(ga
                    128: .lp +4 3
                    129: .li
                    130: '      The addressed byte is printed as an ASCII character.
                    131: .s3
                    132: .lp +4 3
                    133: `      The addressed word is printed in decimal.
                    134: .s3
                    135: .lp +4 3
                    136: ?      The addressed word is interpreted as a machine
                    137: instruction and a symbolic form of the instruction,
                    138: including symbolic addresses, is printed.
                    139: Often, the result will appear exactly as it was written
                    140: in the source program.
                    141: .s3
                    142: .lp +4 3
                    143: &      The addressed word is interpreted as a symbolic address
                    144: and is printed as the name of the symbol whose value is closest
                    145: to the addressed word, possibly followed by a signed offset.
                    146: .s3
                    147: .tr ''``
                    148: .lp +4 3
                    149: <nl>   (i. e., the character ``new line'')  This command advances
                    150: the current location counter ``\fB.\fR'' and prints the resulting
                    151: location in the mode last specified by
                    152: one of the above requests.
                    153: .s3
                    154: .lp +4 3
                    155: ^      This character decrements ``\fB.\fR'' and prints the
                    156: resulting location in the mode last selected
                    157: one of the above requests.  It is a converse to <nl>.
                    158: .s3
                    159: .lp +4 3
                    160: %      Exit.
                    161: .s3
                    162: .in \n(inu
                    163: Odd addresses to word-oriented commands are rounded
                    164: down.
                    165: The incrementing and decrementing
                    166: of ``\fB.\fR'' done by the
                    167: .bd <nl>
                    168: and
                    169: .bd ^
                    170: requests is by one or
                    171: two depending on whether the last command
                    172: was word or byte oriented.
                    173: .s3
                    174: The address portion of any of the above commands
                    175: may be followed by a comma and then by an
                    176: expression.  In this case that number of sequential
                    177: words or bytes specified by the expression is printed.
                    178: ``\fB.\fR'' is advanced so that it points at the
                    179: last thing printed.
                    180: .s3
                    181: There are two commands to interpret the value
                    182: of expressions.
                    183: .s3
                    184: .lp +4 3
                    185: =      When preceded by an expression, the value of the expression
                    186: is typed in octal.
                    187: When not preceded by an expression, the value of ``\fB.\fR'' is
                    188: indicated.
                    189: This command does not change the value of ``\fB.\fR''.
                    190: .s3
                    191: .lp +4 3
                    192: :      An attempt is made to print the given expression
                    193: as a symbolic address.  If the expression is relocatable,
                    194: that symbol is found whose value is nearest
                    195: that of the expression, and the symbol is typed, followed by
                    196: a sign and the appropriate offset.
                    197: If the value of the expression is absolute, a symbol
                    198: with exactly the indicated value is sought and
                    199: printed if found; if no matching symbol is discovered, the
                    200: octal value of the expression is given.
                    201: .s3
                    202: .in \n(inu
                    203: The following command may be used to patch the file being debugged.
                    204: .s3
                    205: .lp +4 3
                    206: !      This command must be preceded by an expression.
                    207: The value of the expression is stored at the location
                    208: addressed by the current value of ``\fB.\fR''.
                    209: The opcodes do not appear in the symbol
                    210: table, so the user must assemble them by hand.
                    211: .s3
                    212: .in \n(inu
                    213: The following command is used after a fault has caused
                    214: a core image file to be produced.
                    215: .s3
                    216: .lp +4 3
                    217: $      causes the fault type and
                    218: the contents of the general registers and
                    219: several other registers to be printed both in octal and symbolic
                    220: format.
                    221: The values are as they were at the time of the fault.
                    222: .s3
                    223: .in \n(inu
                    224: For some purposes, it is important to know how addresses
                    225: typed by the user correspond with
                    226: locations in the file being debugged.
                    227: The mapping algorithm employed by
                    228: .it db
                    229: is non-trivial
                    230: for two reasons:
                    231: First, in an
                    232: .bd a.out
                    233: file, there is a 20(8) byte header
                    234: which will not appear when the file is loaded into
                    235: core for execution.
                    236: Therefore, apparent location 0 should correspond
                    237: with actual file offset 20.
                    238: Second, addresses
                    239: in core images do not correspond with the
                    240: addresses used by the program because in a core image
                    241: there is a 512-byte header containing the
                    242: system's per-process
                    243: data for the dumped process, and also because the
                    244: stack is stored contiguously with the text and data
                    245: part of the core image rather than at the highest possible
                    246: locations.
                    247: .it Db
                    248: obeys the following rules:
                    249: .s3
                    250: If exactly one argument is given, and if it appears
                    251: to be an
                    252: .bd a.out
                    253: file, the 20-byte header is skipped
                    254: during addressing, i.e., 20 is added to all addresses typed.
                    255: As a consequence, the header can be examined
                    256: beginning at location \*-20.
                    257: .s3
                    258: If exactly one argument is given and if the file does
                    259: not appear to be an
                    260: .bd a.out
                    261: file, no mapping is done.
                    262: .s3
                    263: If zero or two arguments are given,
                    264: the mapping appropriate to a core image file is employed.
                    265: This means that locations above the program break
                    266: and below the stack
                    267: effectively do not exist (and are not, in fact, recorded
                    268: in the core file).
                    269: Locations above the user's stack pointer are mapped,
                    270: in looking at the core file, to
                    271: the place where they are really stored.
                    272: The per-process data kept by the
                    273: system, which is stored in the first 512(10) bytes
                    274: of the core file,
                    275: cannot currently be examined (except by \fB$\fR).
                    276: .s3
                    277: If one wants to examine
                    278: a file which has an associated name list,
                    279: but is not a core image file, the last argument ``\fB\*-\fR''
                    280: can be used (actually the only purpose of the
                    281: last argument is to make the number of
                    282: arguments not equal to two).
                    283: This feature is used most frequently in
                    284: examining the memory file /dev/mem.
                    285: .sh "SEE ALSO"
                    286: as(I), core(V), a.out(V), od(I)
                    287: .sh DIAGNOSTICS
                    288: ``File not found'' if the first argument
                    289: cannot be read; otherwise ``\fB?\fR''.
                    290: .sh BUGS
                    291: There should be some way to examine the registers
                    292: and other per-process data in a core image;
                    293: also there should be some way of specifying
                    294: double-precision addresses.
                    295: It does not know yet about shared text segments.

unix.superglobalmegacorp.com

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