Annotation of 43BSDTahoe/old/man/sdb.1, revision 1.1

1.1     ! root        1: .\" Copyright (c) 1980 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: .\"    @(#)sdb.1       6.1 (Berkeley) 4/29/85
        !             6: .\"
        !             7: .TH SDB 1 "4/29/85"
        !             8: .UC 4
        !             9: .SH NAME
        !            10: sdb \- symbolic debugger
        !            11: .SH SYNOPSIS
        !            12: .B sdb
        !            13: [ objfil [ corfil [ directory ] ] ]
        !            14: .SH DESCRIPTION
        !            15: .I Sdb
        !            16: is a symbolic debugger which can be used with C, PASCAL, and F77 programs.
        !            17: It may be used to examine their files and to provide
        !            18: a controlled environment for their execution.
        !            19: .PP
        !            20: .I Objfil
        !            21: is an executable program file
        !            22: which has been compiled with the \-g (debug) option.
        !            23: The default for
        !            24: .I objfil
        !            25: is
        !            26: .B  a.out.
        !            27: .I Corfil
        !            28: is assumed to be a core image file produced after
        !            29: executing
        !            30: .IR objfil ;
        !            31: the default for
        !            32: .I corfil
        !            33: is
        !            34: .B  core.
        !            35: The core file need not be present.
        !            36: .PP
        !            37: It is useful to know that at any time there is a
        !            38: .I "current line"
        !            39: and
        !            40: .I "current file."
        !            41: If
        !            42: .I corfil
        !            43: exists then they are initially set to the line and file
        !            44: containing the source statement at which the process terminated or stopped.
        !            45: Otherwise, they are set to the first line in main.
        !            46: The current line and file may be changed with the source file
        !            47: examination commands.
        !            48: .PP
        !            49: Names of variables are written just as they are in C, PASCAL, or F77.
        !            50: Variables local to a procedure may be accessed using the form
        !            51: `procedure:variable'.
        !            52: If no procedure name is given, the procedure containing the
        !            53: current line is used by default.
        !            54: It is also possible to refer to structure members as `variable.member',
        !            55: pointers to structure members as `variable\(mi>member' and array elements
        !            56: as `variable[number]'.
        !            57: Combinations of these forms may also be used.
        !            58: .PP
        !            59: It is also possible to specify a variable by its address.
        !            60: All forms of integer constants which are valid in C may be used, so that
        !            61: addresses may be input in decimal, octal or hexadecimal.
        !            62: .PP
        !            63: Line numbers in the source program are referred to as `filename:number'
        !            64: or `procedure:number'.
        !            65: In either case the number is relative to the beginning of the file.
        !            66: If no procedure or file name is given,
        !            67: the current file is used by default.
        !            68: If no number is given,
        !            69: the first line of the named procedure or file is used.
        !            70: .sp 1
        !            71: .PP
        !            72: The commands for examining data in the program are:
        !            73: .TP 5
        !            74: .B t
        !            75: Print a stack trace of the terminated or stopped program.
        !            76: .TP 5
        !            77: .B T
        !            78: Print the top line of the stack trace.
        !            79: .TP 5
        !            80: variable/\fIlm\fP
        !            81: Print the value of variable according to
        !            82: length
        !            83: .I l
        !            84: and format 
        !            85: .I m.
        !            86: If 
        !            87: .I l
        !            88: and
        !            89: .I m
        !            90: are omitted,
        !            91: sdb chooses a length and format suitable for the variable's type
        !            92: as declared in the program.
        !            93: The length specifiers are:
        !            94: .RS
        !            95: .TP
        !            96: .BI b
        !            97: one byte
        !            98: .br
        !            99: .ns
        !           100: .TP
        !           101: .BI h
        !           102: two bytes (half word)
        !           103: .br
        !           104: .ns
        !           105: .TP
        !           106: .BI l
        !           107: four bytes (long word)
        !           108: .br
        !           109: .ns
        !           110: .TP
        !           111: number
        !           112: string length for formats
        !           113: .B s
        !           114: and
        !           115: .B a
        !           116: .RE
        !           117: .TP 5
        !           118: \ 
        !           119: Legal values for
        !           120: .I m
        !           121: are:
        !           122: .RS
        !           123: .TP
        !           124: .BI c
        !           125: character
        !           126: .br
        !           127: .ns
        !           128: .TP
        !           129: .BI d
        !           130: decimal
        !           131: .br
        !           132: .ns
        !           133: .TP
        !           134: .BI u
        !           135: decimal, unsigned
        !           136: .br
        !           137: .ns
        !           138: .TP
        !           139: .BI o
        !           140: octal
        !           141: .br
        !           142: .ns
        !           143: .TP
        !           144: .BI x
        !           145: hexadecimal
        !           146: .br
        !           147: .ns
        !           148: .TP
        !           149: .BI f
        !           150: 32 bit single precision floating point
        !           151: .br
        !           152: .ns
        !           153: .TP
        !           154: .BI g
        !           155: 64 bit double precision floating point
        !           156: .br
        !           157: .ns
        !           158: .TP
        !           159: .BI s
        !           160: Assume variable is a string pointer and print characters until a null is 
        !           161: reached.
        !           162: .br
        !           163: .ns
        !           164: .TP
        !           165: .BI a
        !           166: Print characters starting at the variable's address until a null
        !           167: is reached.
        !           168: .br
        !           169: .ns
        !           170: .TP
        !           171: .BI p
        !           172: pointer to procedure
        !           173: .RE
        !           174: .TP 5
        !           175: \ 
        !           176: The length specifiers are only effective with the formats
        !           177: \fBd\fP, \fBu\fP, \fBo\fP and \fBx\fP.
        !           178: If
        !           179: one of these formats
        !           180: is specified and
        !           181: .I l
        !           182: is omitted,
        !           183: the length
        !           184: defaults to the word length of the host machine;
        !           185: 4 for the DEC VAX/11-780.
        !           186: The last variable may be redisplayed with the command `./'.
        !           187: .sp
        !           188: The sh(1) metacharacters 
        !           189: .B *
        !           190: and
        !           191: .B ?
        !           192: may be used within procedure and variable names,
        !           193: providing a limited form of pattern matching.
        !           194: If no procedure name is given, both variables local to the current
        !           195: procedure and global (common for F77) variables are matched,
        !           196: while if a procedure name is specified then
        !           197: only variables local to that procedure and matched.
        !           198: To match only global variables (or blank common for F77),
        !           199: the form `:pattern' is used.
        !           200: The name of a common block may be specified instead of a procedure name
        !           201: for F77 programs.
        !           202: .RE
        !           203: .TP 5
        !           204: variable\fB=\fP\fIlm\fP
        !           205: .br
        !           206: .ns
        !           207: .TP 5
        !           208: linenumber\fB=\fP\fIlm\fP
        !           209: .br
        !           210: .ns
        !           211: .TP 5
        !           212: number\fB=\fP\fIlm\fP
        !           213: Print the address of the variable or line number or the value of the number
        !           214: in the specified format.
        !           215: If no format is given, then `lx' is used.
        !           216: The last variant of this command provides a convenient way to convert
        !           217: between decimal, octal and hexadecimal.
        !           218: .TP 5
        !           219: variable\fB!\fPvalue
        !           220: Set the variable to the given value.
        !           221: The value may be a number, character constant or a variable.
        !           222: If the variable is of type float or double,
        !           223: the value may also be a floating constant.
        !           224: .sp 1
        !           225: .PP
        !           226: The commands for examining source files are
        !           227: .TP 5
        !           228: \fBe\fP procedure
        !           229: .br
        !           230: .ns
        !           231: .TP 5
        !           232: \fBe\fP filename.c
        !           233: Set the current file to
        !           234: the file containing the named procedure
        !           235: or the named filename.
        !           236: Set the current line to the first line in the named
        !           237: procedure or file.
        !           238: All source files are assumed to be in
        !           239: .I directory.
        !           240: The default for 
        !           241: .I directory
        !           242: is the working directory.
        !           243: If no procedure or file name is given, the current procedure and file names
        !           244: are reported.
        !           245: .TP 5
        !           246: \fB/\fPregular expression\fB/\fP
        !           247: Search forward from the current line for a line containing
        !           248: a string matching the regular expression as in ed(1).
        !           249: The trailing `/' may be elided.
        !           250: .TP 5
        !           251: \fB?\fPregular expression\fB?\fP
        !           252: Search backward from the current line for a line containing
        !           253: a string matching the regular expression as in ed(1).
        !           254: The trailing `?' may be elided.
        !           255: .TP 5
        !           256: .B p
        !           257: Print the current line.
        !           258: .TP 5
        !           259: .B z
        !           260: Print the current line followed by the next 9 lines.
        !           261: Set the current line to the last line printed.
        !           262: .TP 5
        !           263: .B control-D
        !           264: Scroll.
        !           265: Print the next 10 lines.
        !           266: Set the current line to the last line printed.
        !           267: .TP 5
        !           268: .B w
        !           269: Window.
        !           270: Print the 10 lines around the current line.
        !           271: .TP 5
        !           272: number
        !           273: Set the current line to the given line number.
        !           274: Print the new current line.
        !           275: .TP 5
        !           276: \fIcount\fB +\fR
        !           277: Advance the current line by \fIcount\fP lines.
        !           278: Print the new current line.
        !           279: .TP 5
        !           280: \fIcount\fB \(mi\fR
        !           281: Retreat the current line by \fIcount\fP lines.
        !           282: Print the new current line.
        !           283: .sp 1
        !           284: .PP
        !           285: The commands for controlling the execution of the source program are:
        !           286: .TP 5
        !           287: \fIcount\fB r \fIargs\fR
        !           288: .br
        !           289: .ns
        !           290: .TP 5
        !           291: \fIcount\fB R
        !           292: Run the program with the given arguments.
        !           293: The \fBr\fP command with no arguments reuses the previous arguments
        !           294: to the program while the \fBR\fP command
        !           295: runs the program with no arguments.
        !           296: An argument beginning with `<' or `>' causes redirection for the
        !           297: standard input or output respectively.
        !           298: If \fIcount\fP is given,
        !           299: it specifies the number of breakpoints to be ignored.
        !           300: .TP 5
        !           301: \fIlinenumber\fB c\fI count\fR
        !           302: .br
        !           303: .ns
        !           304: .TP 5
        !           305: \fIlinenumber\fB C\fI count\fR
        !           306: Continue after a breakpoint or interrupt.
        !           307: If \fIcount\fP is given,
        !           308: it specifies the number of breakpoints to be ignored.
        !           309: \fBC\fP continues with the signal which caused the program to stop and
        !           310: \fBc\fP ignores it.
        !           311: .sp 0.5
        !           312: If a linenumber is specified
        !           313: then a temporary breakpoint is placed at the line
        !           314: and execution is continued.
        !           315: The breakpoint is deleted when the command finishes.
        !           316: .TP 5
        !           317: \fIcount\fB s\fR
        !           318: Single step.
        !           319: Run the program through \fIcount\fP lines.
        !           320: If no count is given then the program is run for one line.
        !           321: .TP 5
        !           322: \fIcount\fB S\fR
        !           323: Single step, but step through subroutine calls.
        !           324: .TP 5
        !           325: .B k
        !           326: Kill the debugged program.
        !           327: .TP 5
        !           328: procedure\fB(\fParg1,arg2,...\fB)\fP
        !           329: .br
        !           330: .ns
        !           331: .TP 5
        !           332: procedure\fB(\fParg1,arg2,...\fB)/\fP\fIm\fP
        !           333: Execute the named procedure with the given arguments.
        !           334: Arguments can be integer, character or string constants
        !           335: or names of variables accessible from the current procedure.
        !           336: The second form causes the value returned by the procedure to be
        !           337: printed according to format \fIm\fP.
        !           338: If no format is given, it defaults to `d'.
        !           339: .TP 5
        !           340: \fIlinenumber\fB b\fR \fIcommands\fR
        !           341: Set a breakpoint at the given line.
        !           342: If a procedure name without a line number is given (e.g. `proc:'),
        !           343: a breakpoint is placed at the first line in the procedure
        !           344: even if it was not compiled with the debug flag.
        !           345: If no \fIlinenumber\fP is given,
        !           346: a breakpoint is placed at the current line.
        !           347: .sp 0.5
        !           348: If no
        !           349: .I commands
        !           350: are given then execution stops just before the breakpoint
        !           351: and control is returned to sdb.
        !           352: Otherwise
        !           353: the 
        !           354: .I commands 
        !           355: are executed when the breakpoint is
        !           356: encountered and execution continues.
        !           357: Multiple commands are specified by separating them with semicolons.
        !           358: .TP 5
        !           359: \fIlinenumber\fB d\fR
        !           360: Delete a breakpoint at the given line.
        !           361: If no \fIlinenumber\fP is given then the breakpoints are deleted interactively:
        !           362: Each breakpoint location is printed and a line is read from the standard input.
        !           363: If the line begins with a `y' or `d' then the breakpoint is deleted.
        !           364: .TP 5
        !           365: .B B
        !           366: Print a list of the currently active breakpoints.
        !           367: .TP 5
        !           368: .B D
        !           369: Delete all breakpoints.
        !           370: .TP 5
        !           371: l
        !           372: Print the last executed line.
        !           373: .TP 5
        !           374: \fIlinenumber\fB a\fR
        !           375: Announce.
        !           376: If \fIlinenumber\fR is of the form `proc:number', the command
        !           377: effectively does a `linenumber b l'.
        !           378: If \fIlinenumber\fR is of the form `proc:', the command
        !           379: effectively does a `proc: b T'.
        !           380: .sp 1
        !           381: .PP
        !           382: Miscellaneous commands.
        !           383: .TP 5
        !           384: \fB! \fIcommand\fR
        !           385: The command is interpreted by sh(1).
        !           386: .TP 5
        !           387: .B newline
        !           388: If the previous command printed a source line then
        !           389: advance the current line by 1 line and
        !           390: print the new current line.
        !           391: If the previous command displayed a core location then
        !           392: display the next core location.
        !           393: .TP 5
        !           394: \fB"\fI string\fR
        !           395: Print the given string.
        !           396: .TP 5
        !           397: .B q
        !           398: Exit the debugger.
        !           399: .sp 1
        !           400: .PP
        !           401: The following commands also exist and are intended only for
        !           402: debugging the debugger.
        !           403: .TP 5
        !           404: .B V
        !           405: Print the version number.
        !           406: .TP 5
        !           407: .B X
        !           408: Print a list of procedures and files being debugged.
        !           409: .TP 5
        !           410: .B Y
        !           411: Toggle debug output.
        !           412: .SH FILES
        !           413: a.out
        !           414: .br
        !           415: core
        !           416: .SH SEE\ ALSO
        !           417: adb(1)
        !           418: .SH DIAGNOSTICS
        !           419: Error reports are either identical to those of adb(1) or are
        !           420: self-explanatory.
        !           421: .SH BUGS
        !           422: If a procedure is called when the program is
        !           423: .I not
        !           424: stopped at a breakpoint
        !           425: (such as when a core image is being debugged),
        !           426: all variables are initialized before the procedure is started.
        !           427: This makes it impossible to use a procedure which formats
        !           428: data from a core image.
        !           429: .PP
        !           430: Arrays must be of one dimension and of zero origin to be correctly
        !           431: addressed by sdb.
        !           432: .PP
        !           433: The default type for printing F77 parameters is incorrect.
        !           434: Their address is printed instead of their value.
        !           435: .PP
        !           436: Tracebacks containing F77 subprograms with multiple entry points
        !           437: may print too many arguments in the wrong order, but their values
        !           438: are correct.
        !           439: .PP
        !           440: Sdb understands Pascal, but not its types.

unix.superglobalmegacorp.com

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