Annotation of 43BSDReno/bin/adb/common_source/adb.1, revision 1.1.1.1

1.1       root        1: .\" Copyright (c) 1980, 1990 The Regents of the University of California.
                      2: .\" All rights reserved.  The Berkeley software License Agreement
                      3: .\" specifies the terms and conditions for redistribution.
                      4: .\"
                      5: .\"     @(#)adb.1      5.9 (Berkeley) 7/24/90
                      6: .\"
                      7: .Dd July 24, 1990
                      8: .Dt ADB 1
                      9: .Os BSD 4
                     10: .Sh NAME
                     11: .Nm adb
                     12: .Nd debugger
                     13: .Sh SYNOPSIS
                     14: .Nm adb
                     15: .Op Fl w
                     16: .Op Fl k
                     17: .Oo
                     18: .Op Fl I Ar dir
                     19: .Oo
                     20: .Op Ar objfil Op Ar corfil
                     21: .Sh DESCRIPTION
                     22: .Nm Adb
                     23: is a general purpose debugging program.
                     24: It may be used to examine files and to provide
                     25: a controlled environment for the execution of UNIX programs.
                     26: .Pp
                     27: .Ar Objfil
                     28: is normally an executable program file, preferably
                     29: containing a symbol table; if not then the symbolic features of
                     30: .Nm adb
                     31: cannot be used although the file can still be examined.
                     32: The default for
                     33: .Ar objfil
                     34: is
                     35: .Pa a.out .
                     36: .Ar Corfil
                     37: is assumed to be a core image file produced after executing
                     38: .Ar objfil ;
                     39: the default for
                     40: .Ar corfil
                     41: is
                     42: .Pa core
                     43: .Pp
                     44: Requests to
                     45: .Nm adb
                     46: are read from the standard input and responses are to the standard output.
                     47: If the
                     48: .Fl w
                     49: flag is present then both
                     50: .Ar objfil
                     51: and
                     52: .Ar corfil
                     53: are created if necessary and opened for reading and writing
                     54: so that files can be modified using
                     55: .Nm adb .
                     56: .Pp
                     57: The
                     58: .Fl k
                     59: option makes
                     60: .Nm adb
                     61: do UNIX kernel memory
                     62: mapping; it should be used when
                     63: .Pa core
                     64: is a UNIX crash dump
                     65: or
                     66: .Pa /dev/mem .
                     67: .Pp
                     68: The
                     69: .Fl I
                     70: option specifies a directory where files to be read
                     71: with
                     72: .Ic $<
                     73: or
                     74: .Ic $<<
                     75: (see below) will be sought; the default is
                     76: .Pa /usr/lib/adb .
                     77: .Pp
                     78: .Nm Adb
                     79: ignores
                     80: .Li QUIT ;
                     81: .Li INTERRUPT
                     82: causes return to the next
                     83: .Nm adb
                     84: command.
                     85: .Pp
                     86: In general requests to
                     87: .Nm adb
                     88: are of the form
                     89: .Pp
                     90: .ti +\n(Dsu
                     91: .Op Ad address
                     92: .Op \&, Va count
                     93: .Op Ic command
                     94: .Op \&;
                     95: .Pp
                     96: If
                     97: .Ad address
                     98: is present then
                     99: .Ad dot
                    100: is set to
                    101: .Ad address .
                    102: Initially
                    103: .Ad dot
                    104: is set to 0.  For most commands
                    105: .Va count
                    106: specifies how many times the command will be executed.  The default
                    107: .Va count
                    108: is 1.
                    109: .Ad Address
                    110: and
                    111: .Va count
                    112: are expressions.
                    113: .Pp
                    114: The interpretation of an address depends on the context it is used in.
                    115: If a subprocess is being debugged then addresses are interpreted
                    116: in the usual way in the address space of the subprocess.
                    117: If the operating system is being debugged either post-mortem or using
                    118: the special file
                    119: .Pa /dev/mem
                    120: to interactively examine and/or modify memory, the maps are set to map
                    121: the kernel virtual addresses which start at
                    122: .Li \&0x80000000
                    123: (on the VAX); see ADDRESSES below.
                    124: .Sh EXPRESSIONS
                    125: .Tw Li
                    126: .Tp Sy \&\.
                    127: The value of
                    128: .Ad dot .
                    129: .Tp  Sy \&\+
                    130: The value of
                    131: .Ad dot
                    132: incremented by the current increment.
                    133: .Tp Sy \&^
                    134: The value of
                    135: .Ad dot
                    136: decremented by the current increment.
                    137: .Tp Sy \&"
                    138: The last
                    139: .Ad address
                    140: typed.
                    141: .Tp Va integer
                    142: A number.  The prefixes
                    143: .Li \&0o
                    144: and
                    145: .Li \&0O
                    146: (\*(lqzero oh\*(rq)
                    147: force interpretation
                    148: in octal radix; the prefixes
                    149: .Li 0t
                    150: and
                    151: .Li 0T
                    152: force interpretation in
                    153: decimal radix; the prefixes
                    154: .Li 0x
                    155: and
                    156: .Li 0X
                    157: force interpretation in
                    158: hexadecimal radix.  Thus
                    159: .Li 0o20
                    160: =
                    161: .Li 0t16
                    162: =
                    163: .Li 0x10
                    164: = sixteen.
                    165: If no prefix appears, then the
                    166: .Em default radix
                    167: is used; see the
                    168: .Ic $d
                    169: command.  The default radix is initially hexadecimal.
                    170: The hexadecimal digits are
                    171: .Li 0123456789abcdefABCDEF
                    172: with the obvious
                    173: values.  Note that a hexadecimal number whose most significant
                    174: digit would otherwise be an alphabetic character must have a
                    175: .Li 0x
                    176: (or
                    177: .Li 0X )
                    178: prefix (or a leading zero if the default radix is hexadecimal).
                    179: .Tp Va integer.fraction
                    180: A 32 bit floating point number.
                    181: .Tp Li \'cccc\'
                    182: The ASCII value of up to 4 characters.
                    183: .Li \e
                    184: may be used to escape a
                    185: .Li \' .
                    186: .Tp Va < name
                    187: The value of
                    188: .Va name ,
                    189: which is either a variable name or a register name.
                    190: .Nm Adb
                    191: maintains a number of variables (see
                    192: VARIABLES below)
                    193: named by single letters or digits.
                    194: If
                    195: .Va name
                    196: is a register name then the value of the register is obtained from
                    197: the system header in
                    198: .Ar corfil .
                    199: The register names are those printed by the
                    200: .Ic $r
                    201: command.
                    202: .Tp Va symbol
                    203: A
                    204: .Va symbol
                    205: is a sequence of upper or lower case letters, underscores or
                    206: digits, not starting with a digit.  The backslash character
                    207: .Li \e
                    208: may be used to escape other characters.  The value of the
                    209: .Va symbol
                    210: is taken from the symbol table in
                    211: .Ar objfil .
                    212: An initial
                    213: .Li \_
                    214: will be prepended to
                    215: .Va symbol
                    216: if needed.
                    217: .Tp Va _symbol
                    218: In C, the `true name' of an external symbol begins with
                    219: .Li \_ .
                    220: It may be necessary to utter this name to distinguish it
                    221: from internal or hidden variables of a program.
                    222: .Tp Va routine.name
                    223: The address of the variable
                    224: .Va name
                    225: in the specified C routine.  Both
                    226: .Va routine
                    227: and
                    228: .Va name
                    229: are
                    230: .Va symbols .
                    231: If
                    232: .Va routine
                    233: is omitted, the currently active frame is used.
                    234: (This form is currently broken; local variables can be examined
                    235: only with
                    236: .Xr dbx 1 ) .
                    237: If
                    238: .Va name
                    239: is omitted the value is the address
                    240: of the most recently activated C stack frame
                    241: corresponding to
                    242: .Va routine
                    243: (this much works).
                    244: .Tp (exp)
                    245: .\" .Tp Cx \&(\&
                    246: .\" .Va exp
                    247: .\" .Cx \&)\&
                    248: The value of the expression
                    249: .Va exp .
                    250: .Tp
                    251: .Pp
                    252: .Ss Monadic Operators
                    253: .Pp
                    254: .Dp Cx Li \&*
                    255: .Va exp
                    256: .Cx
                    257: The contents of the location addressed by
                    258: .Va exp
                    259: in
                    260: .Ar corfil .
                    261: .Dp Cx Li \&@
                    262: .Va exp
                    263: .Cx
                    264: The contents of the location addressed by
                    265: .Va exp
                    266: in
                    267: .Ar objfil .
                    268: .Dp Cx Li \&\-
                    269: .Va exp
                    270: .Cx
                    271: Integer negation.
                    272: .Dp Cx Li \&~
                    273: .Va exp
                    274: .Cx
                    275: Bitwise complement.
                    276: .Dp Cx Li \&#
                    277: .Va exp
                    278: .Cx
                    279: Logical negation.
                    280: .Dp
                    281: .Ss Dyadic operators
                    282: are left associative and are less binding than monadic operators.
                    283: .Dp Cx Va e1
                    284: .Li \&\+
                    285: .Va e2
                    286: .Cx
                    287: Integer addition.
                    288: .Dp Cx Va e1
                    289: .Li \&\-
                    290: .Va e2
                    291: .Cx
                    292: Integer subtraction.
                    293: .Dp Cx Va e1
                    294: .Li \&*
                    295: .Va e2
                    296: .Cx
                    297: Integer multiplication.
                    298: .Dp Cx Va e1
                    299: .Li \&%
                    300: .Va e2
                    301: .Cx
                    302: Integer division.
                    303: .Dp Cx Va e1
                    304: .Li &
                    305: .Va e2
                    306: .Cx
                    307: Bitwise conjunction.
                    308: .Dp Cx Va e1
                    309: .Li \&|
                    310: .Va e2
                    311: .Cx
                    312: Bitwise disjunction.
                    313: .Dp Cx Va e1
                    314: .Li #
                    315: .Va e2
                    316: .Cx
                    317: .Va E1
                    318: rounded up to the next multiple of
                    319: .Va e2 .
                    320: .Dp
                    321: .Sh COMMANDS
                    322: Most commands consist of a verb followed by a modifier or list of modifiers.
                    323: The following verbs are available.
                    324: (The commands
                    325: .Ic ?
                    326: and
                    327: .Li /
                    328: may be followed by
                    329: .Li * ;
                    330: see the
                    331: ADDRESSES section
                    332: for further details.)
                    333: .Tw XXX
                    334: .Tp Cx Ic ?
                    335: .Va f
                    336: .Cx
                    337: Locations starting at
                    338: .Ad address
                    339: in
                    340: .Ar objfil
                    341: are printed according to the format
                    342: .Va f .
                    343: .Ad dot
                    344: is incremented by the sum of the increments for each format letter (q.v.).
                    345: .Tp Cx Ic /
                    346: .Va f
                    347: .Cx
                    348: Locations starting at
                    349: .Ad address
                    350: in
                    351: .Ar corfil
                    352: are printed according to the format
                    353: .Va f
                    354: and
                    355: .Ad dot
                    356: is incremented as for
                    357: .Ic ? .
                    358: .Tp Cx Ic =
                    359: .Va f
                    360: .Cx
                    361: The value of
                    362: .Ad address
                    363: itself is printed in the styles indicated by the format
                    364: .Va f .
                    365: (For
                    366: .Va i
                    367: format zero values are assumed
                    368: for the parts of the instruction that reference
                    369: subsequent words.)
                    370: .Tp
                    371: .Pp
                    372: A
                    373: .Va format
                    374: consists of one or more characters that specify a style of printing.
                    375: Each format character may be preceded by a decimal integer
                    376: that is a repeat count for the format character.
                    377: While stepping through a format
                    378: .Ad dot
                    379: is incremented by the amount given for each format letter.
                    380: If no format is given then the last format is used.
                    381: The format characters available are as follows.
                    382: Note that a backslash
                    383: .Cx (
                    384: .Li \e
                    385: .Cx )
                    386: .Cx
                    387: must be used
                    388: to quote the three numeric formats.
                    389: .Dw \&M_____\&M
                    390: .Dp Cx Ic 1
                    391: .Cx \&\ \ \&
                    392: .Va 1
                    393: .Cx
                    394: Print 1 byte in the current radix
                    395: (which may be either signed or unsigned; see the
                    396: .Ic $d
                    397: command).
                    398: .Dp Cx Ic 2
                    399: .Cx \&\ \ \&
                    400: .Va 2
                    401: .Cx
                    402: Print 2 bytes in the current radix.
                    403: .Dp Cx Ic 4
                    404: .Cx \&\ \ \&
                    405: .Va 4
                    406: .Cx
                    407: Print 4 bytes in the current radix.
                    408: .Dp Cx Ic v
                    409: .Cx \&\ \ \&
                    410: .Va 2
                    411: .Cx
                    412: Print 2 bytes in the signed variant of the current radix.
                    413: .Dp Cx Ic V
                    414: .Cx \&\ \ \&
                    415: .Va 4
                    416: .Cx
                    417: Print 4 bytes in the signed variant of the current radix.
                    418: .Dp Cx Ic o
                    419: .Cx \&\ \ \&
                    420: .Va 2
                    421: .Cx
                    422: Print 2 bytes in unsigned octal.  All octal numbers output by
                    423: .Nm adb
                    424: are preceded by 0.
                    425: .Dp Cx Ic O
                    426: .Cx \&\ \ \&
                    427: .Va 4
                    428: .Cx
                    429: Print 4 bytes in unsigned octal.
                    430: .Dp Cx Ic q
                    431: .Cx \&\ \ \&
                    432: .Va 2
                    433: .Cx
                    434: Print 2 bytes in signed octal.
                    435: .Dp Cx Ic Q
                    436: .Cx \&\ \ \&
                    437: .Va 4
                    438: .Cx
                    439: Print 4 bytes in signed octal.
                    440: .Dp Cx Ic u
                    441: .Cx \&\ \ \&
                    442: .Va 2
                    443: .Cx
                    444: Print 2 bytes in unsigned decimal.
                    445: .Dp Cx Ic U
                    446: .Cx \&\ \ \&
                    447: .Va 4
                    448: .Cx
                    449: Print 4 bytes in long unsigned decimal.
                    450: .Dp Cx Ic d
                    451: .Cx \&\ \ \&
                    452: .Va 2
                    453: .Cx
                    454: Print 2 bytes in signed decimal.
                    455: .Dp Cx Ic D
                    456: .Cx \&\ \ \&
                    457: .Va 4
                    458: .Cx
                    459: Print 4 bytes in long signed decimal.
                    460: .Dp Cx Ic x
                    461: .Cx \&\ \ \&
                    462: .Va 2
                    463: .Cx
                    464: Print 2 bytes in unsigned hexadecimal.
                    465: .Dp Cx Ic X
                    466: .Cx \&\ \ \&
                    467: .Va 4
                    468: .Cx
                    469: Print 4 bytes in unsigned hexadecimal.
                    470: .Dp Cx Ic z
                    471: .Cx \&\ \ \&
                    472: .Va 2
                    473: .Cx
                    474: Print 2 bytes in signed hexadecimal.
                    475: .Dp Cx Ic Z
                    476: .Cx \&\ \ \&
                    477: .Va 4
                    478: .Cx
                    479: Print 4 bytes in signed hexadecimal.
                    480: .Dp Cx Ic f
                    481: .Cx \&\ \ \&
                    482: .Va 4
                    483: .Cx
                    484: Print 4 bytes as a floating point number.
                    485: .Dp Cx Ic F
                    486: .Cx \&\ \ \&
                    487: .Va 8
                    488: .Cx
                    489: Print 8 bytes as a double floating point number.
                    490: .Dp Cx Ic b
                    491: .Cx \&\ \ \&
                    492: .Va 1
                    493: .Cx
                    494: Print 1 byte in unsigned octal.
                    495: .Dp Cx Ic c
                    496: .Cx \&\ \ \&
                    497: .Va 1
                    498: .Cx
                    499: Print 1 byte as a character.
                    500: .Dp Cx Ic C
                    501: .Cx \&\ \ \&
                    502: .Va 1
                    503: .Cx
                    504: Print 1 byte as a character, using
                    505: the standard escape convention where control characters
                    506: are printed as
                    507: .Cx \&^ Ar X
                    508: .Cx
                    509: and the delete character is printed as ^?.
                    510: .Dp Cx Ic s
                    511: .Cx \&\ \ \&
                    512: .Va n
                    513: .Cx
                    514: Print the addressed characters until a zero character is reached.
                    515: .Dp Cx Ic S
                    516: .Cx \&\ \ \&
                    517: .Va n
                    518: .Cx
                    519: Print a string using the
                    520: .Cx \&^ Ar X
                    521: .Cx
                    522: escape convention (see
                    523: .Ar C
                    524: above).
                    525: .Ar n
                    526: is the length of the string including its zero terminator.
                    527: .Dp Cx Ic Y
                    528: .Cx \&\ \ \&
                    529: .Va 4
                    530: .Cx
                    531: Print 4 bytes in date format (see
                    532: .Xr ctime 3 ) .
                    533: .Dp Cx Ic i
                    534: .Cx \&\ \ \&
                    535: .Va n
                    536: .Cx
                    537: Print as machine instructions.
                    538: .Ar n
                    539: is the number of bytes occupied by the instruction.
                    540: This style of printing causes the numeric variables 1, 2, ... to be set
                    541: according to the offset parts of the arguments, if any, of the instruction
                    542: (up to 6 on the VAX).
                    543: .Dp Cx Ic a
                    544: .Cx \&\ \ \&
                    545: .Va 0
                    546: .Cx
                    547: Print the value of
                    548: .Ad dot
                    549: in symbolic form.
                    550: Symbols are checked to ensure that they have an appropriate
                    551: type as indicated below.
                    552: .Dw AAAA
                    553: .Dp Va /
                    554: local or global data symbol
                    555: .Dp Va \&?
                    556: .Cx
                    557: local or global text symbol
                    558: .Dp Va \&=
                    559: .Cx
                    560: local or global absolute symbol
                    561: .Dp
                    562: .Dp Cx Ic p
                    563: .Cx \&\ \ \&
                    564: .Va 4
                    565: .Cx
                    566: Print the addressed value in symbolic form using
                    567: the same rules for symbol lookup as
                    568: .Ic a .
                    569: .Dp Cx Ic t
                    570: .Cx \&\ \ \&
                    571: .Va 0
                    572: .Cx
                    573: When preceded by an integer tabs to the next appropriate tab stop.
                    574: For example,
                    575: .Li 8t
                    576: moves to the next 8-space tab stop.
                    577: .Dp Cx Ic r
                    578: .Cx \&\ \ \&
                    579: .Va 0
                    580: .Cx
                    581: Print a space.
                    582: .Dp Cx Ic n
                    583: .Cx \&\ \ \&
                    584: .Va 0
                    585: .Cx
                    586: Print a newline.
                    587: .Dp Ic \*(Lq...\*(Rq
                    588: .Va 0
                    589: .br
                    590: Print the enclosed string.
                    591: .Dp Ic \&^
                    592: .Ad Dot
                    593: is decremented by the current increment.  Nothing is printed.
                    594: .Dp Ic \&+
                    595: .Ad Dot
                    596: is incremented by 1.  Nothing is printed.
                    597: .Dp Ic \&\-
                    598: .Ad Dot
                    599: is decremented by 1.  Nothing is printed.
                    600: .Dp newline
                    601: Repeat the previous command with a
                    602: .Va count
                    603: of 1.
                    604: .Dp
                    605: .Pp
                    606: .Tw $modifier
                    607: .Tp Cx Op Ic ?/
                    608: .Ic l\ \&
                    609: .Va value mask
                    610: .Cx
                    611: Words starting at
                    612: .Ad dot
                    613: are masked with
                    614: .Va mask
                    615: and
                    616: compared with
                    617: .Va value
                    618: until a match is found.
                    619: If
                    620: .Cm L
                    621: is used then the match is for 4 bytes at a time instead of 2.
                    622: If no match is found then
                    623: .Ad dot
                    624: is unchanged; otherwise
                    625: .Ad dot
                    626: is set to the matched location.
                    627: If
                    628: .Va mask
                    629: is omitted then all bits are compared.
                    630: .Tp Cx Op Ic ?/
                    631: .Ic w\ \&
                    632: .Va value ...
                    633: .Cx
                    634: Write the 2-byte
                    635: .Va value
                    636: into the addressed location.  If the command is
                    637: .Ic W ,
                    638: write 4 bytes.
                    639: Odd addresses
                    640: .Em are
                    641: allowed
                    642: when writing to the subprocess address space.
                    643: .Tp Cx Op Ic ?/
                    644: .Ic m\ \&
                    645: .Ad b1 e1 f1
                    646: .Op Ic ?/
                    647: .Cx
                    648: New values for
                    649: .Pf \&( Ad b1 , e1 , f1 )
                    650: are recorded.  If less than three expressions are given then
                    651: the remaining map parameters are left unchanged.
                    652: If the
                    653: .Ic ?
                    654: or
                    655: .Ic /
                    656: is followed by
                    657: .Li *
                    658: then
                    659: the second segment
                    660: .Pf \&( Ad b2 , e2 , f2 )
                    661: of the mapping is changed.
                    662: If the list is terminated by
                    663: .Ic ?
                    664: or
                    665: .Ic /
                    666: then the file
                    667: .Pf \&( Ar objfil
                    668: or
                    669: .Ar corfil
                    670: respectively) is used for subsequent requests.
                    671: For example,
                    672: .Sq Li /m?
                    673: will cause
                    674: .Ic /
                    675: to refer to
                    676: .Ar objfil .
                    677: .Tp Cx Ic >
                    678: .Va name
                    679: .Cx
                    680: .Ad Dot
                    681: is assigned to the variable or register named.
                    682: .Tp Ic \&!
                    683: A shell
                    684: .Pf \&( Pa /bin/sh )
                    685: is called to read the rest of the line following
                    686: .Ic \&! .
                    687: .Tp Cx Cm $
                    688: .Va modifier
                    689: .Cx
                    690: Miscellaneous commands.  The available
                    691: .Va modifiers
                    692: are:
                    693: .Tw fil
                    694: .Tp Cx Cm <
                    695: .Va file
                    696: .Cx
                    697: Read commands from
                    698: .Va file
                    699: If this command is executed in a file, further commands
                    700: in the file are not seen.
                    701: If
                    702: .Va file
                    703: is omitted, the current input stream is terminated.  If a
                    704: .Va count
                    705: is given, and is zero, the command will be ignored.
                    706: The value of the count will be placed in variable
                    707: .Va 9
                    708: before the first command in
                    709: .Va file
                    710: is executed.
                    711: .Tp Cx Cm <<
                    712: .Va file
                    713: .Cx
                    714: Similar to
                    715: .Cm <
                    716: except it can be used in a file of commands without
                    717: causing the file to be closed.  Variable
                    718: .Va 9
                    719: is saved during the execution of this command, and restored when it completes.
                    720: There is a (small) finite limit to the number of
                    721: .Cm <<
                    722: files that can be open at once.
                    723: .Tp Cx Cm >
                    724: .Va file
                    725: .Cx
                    726: Append output to the file
                    727: .Va file ,
                    728: which is created if it does not exist.  If
                    729: .Va file
                    730: is omitted, output is returned to the terminal.
                    731: .Tp Cx Cm ?
                    732: .Va file
                    733: .Cx
                    734: Print process id, the signal which caused stoppage or termination,
                    735: as well as the registers as
                    736: .Ic $r .
                    737: This is the default if
                    738: .Va modifier
                    739: is omitted.
                    740: .Tp Cm r
                    741: Print the general registers and the instruction addressed by
                    742: .Nm pc .
                    743: .Ad Dot
                    744: is set to
                    745: .Nm pc .
                    746: .Tp Cm b
                    747: Print all breakpoints and their associated counts and commands.
                    748: .Tp Cm c
                    749: C stack backtrace.  If
                    750: .Ad address
                    751: is given then it is taken as the address of the current frame
                    752: instead of the contents of the frame\-pointer register.  If
                    753: .Cm C
                    754: is used then the names and (32 bit) values of all automatic
                    755: and static variables are printed for each active function
                    756: (this is partially broken; the names are not now available).  If
                    757: .Va count
                    758: is given then only the first
                    759: .Va count
                    760: frames are printed.
                    761: .Tp Cm d
                    762: Set the default radix to
                    763: .Ad address
                    764: and report the new value.  If no
                    765: .Ad address
                    766: is given, the default radix is not changed.
                    767: The new radix must be between -16 (decimal) and 16 (decimal)
                    768: and must not be 0, 1, or -1.
                    769: A negative radix implies that numbers printed in that radix
                    770: will be treated as signed; otherwise they are treated as unsigned.
                    771: Note that
                    772: .Ad address
                    773: is interpreted in the (old) current radix.
                    774: Thus \*(lq10$d\*(rq simply changes the default radix to unsigned.
                    775: To make signed decimal the default radix, use \*(lq-0t10$d\*(rq.
                    776: .Tp Cm e
                    777: The names and values of external variables are printed.
                    778: .Tp Cm w
                    779: Set the page width for output to
                    780: .Ad address
                    781: (default 80).
                    782: .Tp Cm s
                    783: Set the limit for symbol matches to
                    784: .Ad address
                    785: (default 1024).
                    786: .Tp Cm q
                    787: Exit from
                    788: .Nm adb .
                    789: .Tp Cm v
                    790: Print all non zero variables in octal.
                    791: .Tp Cm m
                    792: Print the address map.
                    793: .Tp Cm p
                    794: .Pf \&( Em Kernel debugging )
                    795: Change the current kernel memory mapping to map the designated
                    796: .Sy user structure
                    797: to the address given by the symbol
                    798: .Sy _u .
                    799: The
                    800: .Ad address
                    801: argument is the address of the user's user page table entries.
                    802: .Tp
                    803: .Tp Cx Cm :
                    804: .Va modifier
                    805: .Cx
                    806: Manage a subprocess.  Available modifiers are:
                    807: .Tw Ds
                    808: .Tp Cx Cm b
                    809: .Va c
                    810: .Cx
                    811: Set breakpoint at
                    812: .Ad address .
                    813: The breakpoint is executed
                    814: .Va count\-1
                    815: times before causing a stop,
                    816: after which it stops unconditionally.
                    817: Each time the breakpoint is encountered the command
                    818: .Va c
                    819: is executed.  If this command is omitted or sets
                    820: .Ad dot
                    821: to zero, the breakpoint causes a stop immediately,
                    822: regardless of any remaining count.
                    823: .Tp Cm d
                    824: Delete breakpoint at
                    825: .Ad address .
                    826: .Tp Cm D
                    827: Delete all breakpoints.
                    828: .Tp Cm r
                    829: Run
                    830: .Ar objfil
                    831: as a subprocess.  If
                    832: .Ad address
                    833: is given explicitly then the program is entered at this point; otherwise
                    834: the program is entered at its standard entry point.
                    835: .Va count
                    836: specifies how many breakpoints are to be ignored before stopping.
                    837: Arguments to the subprocess may be supplied on the same line as the command.
                    838: An argument starting with < or > causes the standard
                    839: input or output to be established for the command.
                    840: .Tp Cx Cm c
                    841: .Va s
                    842: .Cx
                    843: The subprocess is continued with signal
                    844: .Va s
                    845: see
                    846: .Xr sigvec 2 .
                    847: If
                    848: .Ad address
                    849: is given then the subprocess is continued at this address.
                    850: If no signal is specified then the signal
                    851: that caused the subprocess to stop is sent.
                    852: Breakpoint skipping is the same as for
                    853: .Cm r .
                    854: .Tp Cx Cm s
                    855: .Va s
                    856: .Cx
                    857: As for
                    858: .Cm c
                    859: except that the subprocess is single stepped
                    860: .Va count
                    861: times.  If there is no current subprocess then
                    862: .Ar objfil
                    863: is run as a subprocess as for
                    864: .Cm r .
                    865: In this case no signal can be sent; the remainder of the line
                    866: is treated as arguments to the subprocess.
                    867: .Tp Cm k
                    868: The current subprocess, if any, is terminated.
                    869: .Tp
                    870: .Tp
                    871: .Sh VARIABLES
                    872: .Nm Adb
                    873: provides a number of variables.
                    874: Named variables are set initially by
                    875: .Nm adb
                    876: but are not used subsequently.
                    877: Numbered variables are reserved for communication as follows.
                    878: .Dw Ds
                    879: .Di L
                    880: .Dp \&0
                    881: The last value printed.
                    882: .Dp \&1
                    883: The last offset part of an instruction source.
                    884: This continues up through at most 6 on the VAX.
                    885: For a three-operand instruction, variable 2 is the second source offset
                    886: and variable 3 the destination offset part.
                    887: .Dp \&9
                    888: The count on the last $< or $<< command.
                    889: .Dp
                    890: On entry the following are set from the system header in the
                    891: .Ar corfil .
                    892: If
                    893: .Ar corfil
                    894: does not appear to be a
                    895: .Pa core
                    896: file then these values are set from
                    897: .Ar objfil .
                    898: .Dw Ds
                    899: .Di L
                    900: .Dp b
                    901: The base address of the data segment.
                    902: .Dp d
                    903: The data segment size.
                    904: .Dp e
                    905: The entry point.
                    906: .Dp m
                    907: The `magic' number (0407, 0410 or 0413).
                    908: .Dp s
                    909: The stack segment size.
                    910: .Dp t
                    911: The text segment size.
                    912: .Sh ADDRESSES
                    913: The address in a file associated with
                    914: a written address is determined by a mapping associated with that file.
                    915: Each mapping is represented by two triples
                    916: .Pf \&( Ad b1 , e1 , f1 )
                    917: and
                    918: .Pf \&( Ad b2 , e2 , f2 )
                    919: and the
                    920: .Ad file
                    921: .Ad address
                    922: corresponding to a written
                    923: .Ad address
                    924: is calculated as follows.
                    925: .Pp
                    926: .Ds I
                    927: .Cx Ad b1
                    928: .Sy \&\*(<=
                    929: .Ad address
                    930: .Sy <
                    931: .Ad e1
                    932: .Sy \ \&\(->\ \&
                    933: .Ad file address
                    934: .Sy =
                    935: .Ad address
                    936: .Sy +
                    937: .Ad f1
                    938: .Sy \-
                    939: .Ad b1 ,
                    940: .Cx \ \&
                    941: .Cx otherwise,
                    942: .Cx
                    943: .De
                    944: .Pp
                    945: .Ds I
                    946: .Cx Ad b2
                    947: .Sy \&\*(<=
                    948: .Ad address
                    949: .Sy <
                    950: .Ad e2
                    951: .Sy \ \&\(->\ \&
                    952: .Ad file address
                    953: .Sy =
                    954: .Ad address
                    955: .Sy +
                    956: .Ad f2
                    957: .Sy \-
                    958: .Ad b2 ,
                    959: .Cx
                    960: .De
                    961: .Pp
                    962: otherwise, the requested
                    963: .Ar address
                    964: is not legal.  In some cases (e.g. for programs with separated I and D
                    965: space) the two segments for a file may overlap.  If a
                    966: .Ic ?
                    967: or
                    968: .Ic /
                    969: is followed by an
                    970: .Ic *
                    971: then only the second triple is used.
                    972: .Pp
                    973: The initial setting of both mappings is suitable for normal
                    974: .Pa a.out
                    975: and
                    976: .Pa core
                    977: files.  If either file is not of the kind expected then, for that file,
                    978: .Ad b1
                    979: is set to
                    980: .Li 0 ,
                    981: .Ad e1
                    982: is set to the maximum file size and
                    983: .Ad f1
                    984: is set to 0; in this way the whole
                    985: file can be examined with no address translation.
                    986: .Pp
                    987: .Sh FILES
                    988: .Dw a.out
                    989: .Di L
                    990: .Dp Pa a.out
                    991: .Dp Pa core
                    992: .Dp
                    993: .Sh SEE ALSO
                    994: .Xr cc 1 ,
                    995: .Xr dbx 1 ,
                    996: .Xr ptrace 2 ,
                    997: .Xr a.out 5 ,
                    998: .Xr core 5
                    999: .Sh HISTORY
                   1000: .Nm Adb
                   1001: was first released with Version 7 AT&T UNIX.  The version
                   1002: of
                   1003: .Nm adb
                   1004: this man page describes
                   1005: is descended from the orignial.
                   1006: .Sh DIAGNOSTICS
                   1007: .Li `adb'
                   1008: when there is no current command or format.
                   1009: Comments about inaccessible files, syntax errors,
                   1010: abnormal termination of commands, etc.
                   1011: Exit status is 0, unless last command failed or returned nonzero status.
                   1012: .Sh BUGS
                   1013: Since no shell is invoked to interpret the arguments of the
                   1014: .Ic :r
                   1015: command, the customary wild-card and variable expansions cannot occur.

unix.superglobalmegacorp.com

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