Annotation of 43BSDTahoe/man/man1/dbx.1, revision 1.1

1.1     ! root        1: .\" Copyright (c) 1983 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: .\"    @(#)dbx.1       6.2 (Berkeley) 1/12/86
        !             6: .\"
        !             7: .TH DBX 1 "January 12, 1986"
        !             8: .UC 5
        !             9: .ds dB dbx
        !            10: .ds DB Dbx
        !            11: .SH NAME
        !            12: dbx \- debugger
        !            13: .SH SYNOPSIS
        !            14: .B dbx
        !            15: [
        !            16: .B \-r
        !            17: ] [
        !            18: .B \-i
        !            19: ] [
        !            20: .B \-k
        !            21: ] [
        !            22: .B \-I
        !            23: .I dir
        !            24: ] [
        !            25: .B \-c
        !            26: .I file
        !            27: ] [
        !            28: .I objfile
        !            29: [
        !            30: .I coredump
        !            31: ]]
        !            32: .SH DESCRIPTION
        !            33: \fI\*(DB\fP is a tool for source level debugging and execution of
        !            34: programs under UNIX.
        !            35: The \fIobjfile\fP is an object file produced by a compiler
        !            36: with the appropriate flag (usually ``\-g'')
        !            37: specified to produce symbol information in the object file.
        !            38: Currently, \fIcc\fP(1), \fIf77\fP(1), \fIpc\fP(1), and the DEC Western
        !            39: Research Laboratory Modula-2 compiler, \fImod\fP(l),
        !            40: produce the appropriate source information.
        !            41: The machine level facilities of \fI\*(dB\fP
        !            42: can be used on any program.
        !            43: .PP
        !            44: The object file contains a symbol table that includes the name of the
        !            45: all the source files translated by the compiler to create it.
        !            46: These files are available for perusal while using the debugger.
        !            47: .PP
        !            48: If a file named ``core'' exists in the current directory
        !            49: or a \fIcoredump\fP file is specified, \fI\*(dB\fP can be used
        !            50: to examine the state of the program when it faulted.
        !            51: .PP
        !            52: If the file ``.\*(dBinit'' exists in the current directory then the
        !            53: debugger commands in it are executed.
        !            54: \fI\*(DB\fP also checks for a ``.\*(dBinit'' in the user's home directory
        !            55: if there isn't one in the current directory.
        !            56: .PP
        !            57: The command line options and their meanings are:
        !            58: .nr In 8
        !            59: .in +\n(Inn
        !            60: .ta \n(Inn
        !            61: .sp 1
        !            62: .ti -\n(Inn
        !            63: \&\fB\-r\fP    \c
        !            64: Execute \fIobjfile\fP immediately.
        !            65: If it terminates successfully \fI\*(dB\fP exits.
        !            66: Otherwise the reason for termination will be reported
        !            67: and the user offered the option of entering the debugger
        !            68: or letting the program fault.
        !            69: \fI\*(DB\fP will read from ``/dev/tty'' when \fB\-r\fP is specified
        !            70: and standard input is not a terminal.
        !            71: .sp 1
        !            72: .ti -\n(Inn
        !            73: \&\fB\-i\fP    \c
        !            74: Force \fI\*(dB\fP to act as though standard input is a terminal.
        !            75: .sp 1
        !            76: .ti -\n(Inn
        !            77: \&\fB\-k\fP    \c
        !            78: Map memory addresses, useful for kernel debugging.
        !            79: .sp 1
        !            80: .ti -\n(Inn
        !            81: \&\fB\-I\fP \fIdir\fP  \c
        !            82: Add \fIdir\fP to the list of directories
        !            83: that are searched when looking for a source file.
        !            84: Normally \fI\*(dB\fP looks for source files in the current directory
        !            85: and in the directory where \fIobjfile\fP is located.
        !            86: The directory search path can also be set with the \fBuse\fP command.
        !            87: .sp 1
        !            88: .ti -\n(Inn
        !            89: \&\fB\-c\fP \fIfile\fP \c
        !            90: Execute the \fI\*(dB\fP commands in the \fIfile\fP before
        !            91: reading from standard input.
        !            92: .in -\n(Inn
        !            93: .sp 1
        !            94: .PP
        !            95: Unless \fB\-r\fP is specified, \fI\*(dB\fP just prompts and waits for a command.
        !            96: .sp 1
        !            97: .ne 8
        !            98: .B Execution and Tracing Commands
        !            99: .sp 1
        !           100: .TP
        !           101: \fBrun\fP [\fIargs\fP] [\fB<\fP \fIfilename\fP] [\fB>\fP \fIfilename\fP]
        !           102: .ns
        !           103: .TP
        !           104: \fBrerun\fP [\fIargs\fP] [\fB<\fP \fIfilename\fP] [\fB>\fP \fIfilename\fP]
        !           105: Start executing \fIobjfile\fP, passing \fIargs\fP as command line arguments;
        !           106: \fB<\fP or \fB>\fP can be used to redirect input or output in the usual manner.
        !           107: When \fBrerun\fP is used without any arguments the previous
        !           108: argument list is passed to the program;
        !           109: otherwise it is identical to \fBrun\fP.
        !           110: If \fIobjfile\fP has been written since the last time the symbolic information
        !           111: was read in, \fI\*(dB\fP will read in the new information.
        !           112: .TP
        !           113: \fBtrace\fP [\fBin\fP \fIprocedure/function\fP] [\fBif\fP \fIcondition\fP]
        !           114: .ns
        !           115: .TP
        !           116: \fBtrace\fP \fIsource-line-number\fP [\fBif\fP \fIcondition\fP]
        !           117: .ns
        !           118: .TP
        !           119: \fBtrace\fP \fIprocedure/function\fP [\fBin\fP \fIprocedure/function\fP] [\fBif\fP \fIcondition\fP]
        !           120: .ns
        !           121: .TP
        !           122: \fBtrace\fP \fIexpression\fP \fBat\fP \fIsource-line-number\fP [\fBif\fP \fIcondition\fP]
        !           123: .ns
        !           124: .TP
        !           125: \fBtrace\fP \fIvariable\fP [\fBin\fP \fIprocedure/function\fP] [\fBif\fP \fIcondition\fP]
        !           126: Have tracing information printed when the program is executed.
        !           127: A number is associated with the command that is used
        !           128: to turn the tracing off (see the \fBdelete\fP command).
        !           129: .sp 1
        !           130: The first argument describes what is to be traced.
        !           131: If it is a \fIsource-line-number\fP, then the line is printed
        !           132: immediately prior to being executed.
        !           133: Source line numbers in a file other than the current one
        !           134: must be preceded by the name of the file in quotes and a colon, e.g.
        !           135: "mumble.p":17.
        !           136: .sp 1
        !           137: If the argument is a procedure or function name then
        !           138: every time it is called, information is printed telling
        !           139: what routine called it, from what source line it was called,
        !           140: and what parameters were passed to it.
        !           141: In addition, its return is noted, and if it's a function
        !           142: then the value it is returning is also printed.
        !           143: .sp 1
        !           144: If the argument is an \fIexpression\fP with an \fBat\fP clause
        !           145: then the value of the expression is printed whenever the
        !           146: identified source line is reached.
        !           147: .sp 1
        !           148: If the argument is a variable then the name and value of the variable
        !           149: is printed whenever it changes.
        !           150: Execution is substantially slower during this form of tracing.
        !           151: .sp 1
        !           152: If no argument is specified then all source lines are printed
        !           153: before they are executed.
        !           154: Execution is substantially slower during this form of tracing.
        !           155: .sp 1
        !           156: The clause ``\fBin\fP \fIprocedure/function\fP'' restricts tracing information
        !           157: to be printed only while executing inside the given procedure
        !           158: or function.
        !           159: .sp 1
        !           160: \fICondition\fP is a boolean expression and is
        !           161: evaluated prior to printing the tracing information;
        !           162: if it is false then the information is not printed.
        !           163: .br
        !           164: .ne 10
        !           165: .IP "\fBstop\fP \fBif\fP \fIcondition\fP"
        !           166: .ns
        !           167: .IP "\fBstop\fP \fBat\fP \fIsource-line-number\fP [\fBif\fP \fIcondition\fP]"
        !           168: .ns
        !           169: .IP "\fBstop\fP \fBin\fP \fIprocedure/function\fP [\fBif\fP \fIcondition\fP]"
        !           170: .ns
        !           171: .IP "\fBstop\fP \fIvariable\fP [\fBif\fP \fIcondition\fP]"
        !           172: Stop execution when the given line is reached, procedure or function
        !           173: called, variable changed, or condition true.
        !           174: .IP "\fBstatus\fP [\fB>\fP \fIfilename\fP]"
        !           175: Print out the currently active \fBtrace\fP and \fBstop\fP commands.
        !           176: .IP "\fBdelete\fP \fIcommand-number\fP ..."
        !           177: The traces or stops corresponding to the given numbers are removed.
        !           178: The numbers associated with traces and stops are printed by
        !           179: the \fBstatus\fP command.
        !           180: .IP "\fBcatch\fP \fInumber\fP"
        !           181: .ns
        !           182: .IP "\fBcatch\fP \fIsignal-name\fP"
        !           183: .ns
        !           184: .IP "\fBignore\fP \fInumber\fP"
        !           185: .ns
        !           186: .IP "\fBignore\fP \fIsignal-name\fP"
        !           187: Start or stop trapping a signal before it is sent
        !           188: to the program.
        !           189: This is useful when a program being debugged
        !           190: handles signals such as interrupts.
        !           191: A signal may be specified by number or by a name
        !           192: (e.g., SIGINT).
        !           193: Signal names are case insensitive and the ``SIG'' prefix is optional.
        !           194: By default all signals are trapped except SIGCONT, SIGCHILD,
        !           195: SIGALRM and SIGKILL.
        !           196: .IP "\fBcont\fP \fIinteger\fP"
        !           197: .ns
        !           198: .IP "\fBcont\fP \fIsignal-name\fP"
        !           199: Continue execution from where it stopped.
        !           200: If a signal is specified, the process continues as though
        !           201: it received the signal.
        !           202: Otherwise, the process is continued as though it had not been stopped.
        !           203: .PP
        !           204: Execution cannot be continued if the process has ``finished'',
        !           205: that is, called the standard procedure ``exit''.
        !           206: \fI\*(DB\fP does not allow the process to exit, thereby
        !           207: letting the user to examine the program state.
        !           208: .IP \fBstep\fP
        !           209: Execute one source line.
        !           210: .IP \fBnext\fP
        !           211: Execute up to the next source line.
        !           212: The difference between this and \fBstep\fP is that
        !           213: if the line contains a call to a procedure or function
        !           214: the \fBstep\fP command will stop at the beginning of that
        !           215: block, while the \fBnext\fP command will not.
        !           216: .IP "\fBreturn\fP [\fIprocedure\fP]"
        !           217: Continue until a return to \fIprocedure\fP is executed, or
        !           218: until the current procedure returns if none is specified.
        !           219: .IP "\fBcall\fP \fIprocedure(parameters)\fP"
        !           220: Execute the object code associated with the named procedure or function.
        !           221: .sp 1
        !           222: .br
        !           223: .ne 8v
        !           224: .PP
        !           225: .B Printing Variables and Expressions
        !           226: .sp 1
        !           227: .PP
        !           228: Names are resolved first using the static scope of the current function,
        !           229: then using the dynamic scope if the name is not defined
        !           230: in the static scope.
        !           231: If static and dynamic searches do not yield a result,
        !           232: an arbitrary symbol is chosen and
        !           233: the message ``[using\ \fIqualified\ name\fP]'' is printed.
        !           234: The name resolution procedure may be overridden by qualifying an identifier
        !           235: with a block name, e.g., ``\fImodule\fP.\fIvariable\fP''.
        !           236: For C, source files are treated as modules named
        !           237: by the file name without ``.c''.
        !           238: .PP
        !           239: Expressions are specified with an approximately
        !           240: common subset of C and Pascal (or equivalently Modula-2) syntax.
        !           241: Indirection can be denoted using either a prefix ``*'' or
        !           242: a postfix ``^'' and
        !           243: array expressions are subscripted by brackets (``[ ]'').
        !           244: The field reference operator (``.'') can be used with pointers
        !           245: as well as records, making the C operator ``->'' unnecessary
        !           246: (although it is supported).
        !           247: .PP
        !           248: Types of expressions are checked;
        !           249: the type of an expression may be overridden
        !           250: by using ``\fItype-name\fP(\fIexpression\fP)''.
        !           251: When there is no corresponding named type
        !           252: the special constructs ``&\fItype-name\fP'' and ``$$\fItag-name\fP''
        !           253: can be used to represent a pointer to a named type or C structure tag.
        !           254: .sp 1
        !           255: .IP "\fBassign\fP \fIvariable\fP \fB=\fP \fIexpression\fP"
        !           256: Assign the value of the expression to the variable.
        !           257: .IP "\fBdump\fP [\fIprocedure\fR] [\fB>\fP \fIfilename\fP]"
        !           258: Print the names and values of variables in the given procedure,
        !           259: or the current one if none is specified.
        !           260: If the procedure given is ``.'', then the all active variables
        !           261: are dumped.
        !           262: .IP "\fBprint\fP \fIexpression\fP [\fB,\fP \fIexpression\fP ...]"
        !           263: Print out the values of the expressions.
        !           264: .IP "\fBwhatis\fP \fIname\fP"
        !           265: Print the declaration of the given name, which may be qualified
        !           266: with block names as above.
        !           267: .IP "\fBwhich\fP \fIidentifier\fP"
        !           268: Print the full qualification of the given identifer, i.e.
        !           269: the outer blocks that the identifier is associated with.
        !           270: .IP "\fBup\fP [\fIcount\fP]"
        !           271: .ns
        !           272: .IP "\fBdown\fP [\fIcount\fP]"
        !           273: Move the current function, which is used for resolving names,
        !           274: up or down the stack \fIcount\fP levels.
        !           275: The default \fIcount\fP is 1.
        !           276: .IP \fBwhere\fP
        !           277: Print out a list of the active procedures and function.
        !           278: .IP "\fBwhereis\fP \fIidentifier\fP"
        !           279: Print the full qualification of all the symbols whose
        !           280: name matches the given identifier.
        !           281: The order in which the symbols are printed is not meaningful.
        !           282: .sp 1
        !           283: .br
        !           284: .ne 8v
        !           285: .PP
        !           286: .B Accessing Source Files
        !           287: .sp 1
        !           288: .IP "/\fIregular\ expression\fP[/]"
        !           289: .ns
        !           290: .IP "?\fIregular\ expression\fP[?]"
        !           291: Search forward or backward in the current source file
        !           292: for the given pattern.
        !           293: .IP "\fBedit\fP [\fIfilename\fP]"
        !           294: .ns
        !           295: .IP "\fBedit\fP \fIprocedure/function-name\fP"
        !           296: Invoke an editor on \fIfilename\fP or the current source file if none
        !           297: is specified.
        !           298: If a \fIprocedure\fP or \fIfunction\fP name is specified,
        !           299: the editor is invoked on the file that contains it.
        !           300: Which editor is invoked by default depends on the installation.
        !           301: The default can be overridden by setting the environment variable
        !           302: EDITOR to the name of the desired editor.
        !           303: .IP "\fBfile\fP [\fIfilename\fP]"
        !           304: Change the current source file name to \fIfilename\fP.
        !           305: If none is specified then the current source file name is printed.
        !           306: .IP "\fBfunc\fP [\fIprocedure/function\fP]"
        !           307: Change the current function.
        !           308: If none is specified then print the current function.
        !           309: Changing the current function implicitly changes the current source file
        !           310: to the one that contains the function; it also changes the current scope
        !           311: used for name resolution.
        !           312: .IP "\fBlist\fP [\fIsource-line-number\fP [\fB,\fP \fIsource-line-number\fP]]"
        !           313: .ns
        !           314: .IP "\fBlist\fP \fIprocedure/function\fP"
        !           315: List the lines in the current source file from the first line number to
        !           316: the second inclusive.
        !           317: If no lines are specified, the next 10 lines are listed.
        !           318: If the name of a procedure or function is given
        !           319: lines \fIn-k\fP to \fIn+k\fP are listed where \fIn\fP is the first statement
        !           320: in the procedure or function and \fIk\fP is small.
        !           321: .IP "\fBuse\fP \fIdirectory-list\fP"
        !           322: Set the list of directories to be searched
        !           323: when looking for source files.
        !           324: .sp 1
        !           325: .br
        !           326: .ne 8v
        !           327: .PP
        !           328: .B Command Aliases and Variables
        !           329: .sp 1
        !           330: .TP
        !           331: \fBalias\fP \fIname\fP \fIname\fP
        !           332: .ns
        !           333: .TP
        !           334: \fBalias\fP \fIname\fP ``\fIstring\fP''
        !           335: .ns
        !           336: .TP
        !           337: \fBalias\fP \fIname\fP (\fIparameters\fP) ``\fIstring\fP''
        !           338: When commands are processed,
        !           339: \*(dB first checks to see if the word
        !           340: is an alias for either a command or a string.
        !           341: If it is an alias, then \*(dB treats the input as though
        !           342: the corresponding string (with values substituted for any parameters)
        !           343: had been entered.
        !           344: For example,
        !           345: to define an alias ``rr'' for the command ``rerun'',
        !           346: one can say
        !           347: .sp 1
        !           348: .in +8n
        !           349: alias rr rerun
        !           350: .in -8n
        !           351: .sp 1
        !           352: To define an alias called ``b'' that sets a stop at a particular line
        !           353: one can say
        !           354: .sp 1
        !           355: .in +8n
        !           356: alias b(x) ``stop at x''
        !           357: .in -8n
        !           358: .sp 1
        !           359: Subsequently, the command ``b(12)'' will expand to ``stop at 12''.
        !           360: .need 5
        !           361: .TP
        !           362: \fBset\fP \fIname\fP [= \fIexpression\fP]
        !           363: The \fBset\fP command defines values for debugger variables.
        !           364: The names of these variables cannot conflict with names in the program
        !           365: being debugged, and are expanded to the corresponding expression
        !           366: within other commands.
        !           367: The following variables have a special meaning:
        !           368: .sp 1
        !           369: .in +8n
        !           370: .ti -5n
        !           371: $frame
        !           372: .br
        !           373: Setting this variable to an address causes \*(dB to use the stack frame
        !           374: pointed to by the address for
        !           375: doing stack traces and accessing local variables.
        !           376: This facility is of particular use for kernel debugging.
        !           377: .sp 1
        !           378: .ti -5n
        !           379: $hexchars
        !           380: .ti -5n
        !           381: $hexints
        !           382: .ti -5n
        !           383: $hexoffsets
        !           384: .ti -5n
        !           385: $hexstrings
        !           386: .br
        !           387: When set, \*(dB prints out
        !           388: out characters, integers, offsets from registers, or character pointers
        !           389: respectively in hexadecimal.
        !           390: .sp 1
        !           391: .ti -5n
        !           392: $listwindow
        !           393: .br
        !           394: The value of this variable specifies the number
        !           395: of lines to list around a function or when the \fBlist\fP command
        !           396: is given without any parameters.
        !           397: Its default value is 10.
        !           398: .sp 1
        !           399: .ti -5n
        !           400: $mapaddrs
        !           401: .br
        !           402: Setting (unsetting) this variable causes \*(dB to start (stop)
        !           403: mapping addresses.
        !           404: As with ``$frame'', this is useful for kernel debugging.
        !           405: .sp 1
        !           406: .ti -5n
        !           407: $unsafecall
        !           408: .ti -5n
        !           409: $unsafeassign
        !           410: .br
        !           411: When ``$unsafecall'' is set,
        !           412: strict type checking is turned off for arguments to
        !           413: subroutine or function calls (\fIe.g.\fP in the \fBcall\fP statement).
        !           414: When ``$unsafeassign'' is set,
        !           415: strict type checking between the two sides
        !           416: of an \fBassign\fP statement is turned off.
        !           417: These variables should be used only with great care,
        !           418: because they severely limit \*(dB's usefulness
        !           419: for detecting errors.
        !           420: .in -8n
        !           421: .TP
        !           422: \fBunalias\fP \fIname\fP
        !           423: Remove the alias with the given name.
        !           424: .TP
        !           425: \fBunset\fP \fIname\fP
        !           426: Delete the debugger variable associated with \fIname\fP.
        !           427: .sp 1
        !           428: .br
        !           429: .ne 8v
        !           430: .PP
        !           431: .B Machine Level Commands
        !           432: .sp 1
        !           433: .TP
        !           434: \fBtracei\fP [\fIaddress\fP] [\fBif\fP \fIcond\fP]
        !           435: .ns
        !           436: .TP
        !           437: \fBtracei\fP [\fIvariable\fP] [\fBat\fP \fIaddress\fP] [\fBif\fP \fIcond\fP]
        !           438: .ns
        !           439: .TP
        !           440: \fBstopi\fP [\fIaddress\fP] [\fBif\fP \fIcond\fP]
        !           441: .ns
        !           442: .TP
        !           443: \fBstopi\fP [\fBat\fP] [\fIaddress\fP] [\fBif\fP \fIcond\fP]
        !           444: Turn on tracing or set a stop using a machine instruction address.
        !           445: .TP
        !           446: \fBstepi\fP
        !           447: .ns
        !           448: .TP
        !           449: \fBnexti\fP
        !           450: Single step as in \fBstep\fP or \fBnext\fP, but do a single instruction
        !           451: rather than source line.
        !           452: .TP
        !           453: \fIaddress\fP \fB,\fP\fIaddress\fP\fB/\fP [\fImode\fP]
        !           454: .ns
        !           455: .TP
        !           456: \fIaddress\fP \fB/\fP [\fIcount\fP] [\fImode\fP]
        !           457: Print the contents of memory starting at the first \fIaddress\fP
        !           458: and continuing up to the second \fIaddress\fP or until \fIcount\fP items are printed.
        !           459: If the address is ``.'', the address following the one
        !           460: printed most recently is used.
        !           461: The \fImode\fP specifies how memory is to be printed;
        !           462: if it is omitted the previous mode specified is used.
        !           463: The initial mode is ``X''.
        !           464: The following modes are supported:
        !           465: .nr In 5
        !           466: .in +\n(Inn
        !           467: .ta \n(Inn
        !           468: .sp 1
        !           469: .ti -\n(Inn
        !           470: \&\fBi\fP      \c
        !           471: print the machine instruction
        !           472: .ti -\n(Inn
        !           473: \&\fBd\fP      \c
        !           474: print a short word in decimal
        !           475: .ti -\n(Inn
        !           476: \&\fBD\fP      \c
        !           477: print a long word in decimal
        !           478: .ti -\n(Inn
        !           479: \&\fBo\fP      \c
        !           480: print a short word in octal
        !           481: .ti -\n(Inn
        !           482: \&\fBO\fP      \c
        !           483: print a long word in octal
        !           484: .ti -\n(Inn
        !           485: \&\fBx\fP      \c
        !           486: print a short word in hexadecimal
        !           487: .ti -\n(Inn
        !           488: \&\fBX\fP      \c
        !           489: print a long word in hexadecimal
        !           490: .ti -\n(Inn
        !           491: \&\fBb\fP      \c
        !           492: print a byte in octal
        !           493: .ti -\n(Inn
        !           494: \&\fBc\fP      \c
        !           495: print a byte as a character
        !           496: .ti -\n(Inn
        !           497: \&\fBs\fP      \c
        !           498: print a string of characters terminated by a null byte
        !           499: .ti -\n(Inn
        !           500: \&\fBf\fP      \c
        !           501: print a single precision real number
        !           502: .ti -\n(Inn
        !           503: \&\fBg\fP      \c
        !           504: print a double precision real number
        !           505: .in -\n(Inn
        !           506: .sp 1
        !           507: .PP
        !           508: Symbolic addresses are specified by preceding the name with an ``&''.
        !           509: Registers are denoted by ``$rN'' where N is the number of the register.
        !           510: Addresses may be expressions made up of other addresses and
        !           511: the operators ``+'', ``-'', and indirection (unary ``*'').
        !           512: .sp 1
        !           513: .br
        !           514: .ne 8v
        !           515: .PP
        !           516: .B Miscellaneous Commands
        !           517: .sp 1
        !           518: .IP \fBgripe\fP
        !           519: Invoke a mail program to send a message to the person in charge of \fI\*(dB\fP.
        !           520: .IP \fBhelp\fP
        !           521: Print out a synopsis of \fI\*(dB\fP commands.
        !           522: .IP "\fBquit\fP"
        !           523: Exit \fI\*(dB\fP.
        !           524: .IP "\fBsh\fP \fIcommand-line\fP"
        !           525: Pass the command line to the shell for execution.
        !           526: The SHELL environment variable determines which shell is used.
        !           527: .TP
        !           528: \fBsource\fP \fIfilename\fP
        !           529: Read \fI\*(dB\fP commands from the given \fIfilename\fP.
        !           530: .SH FILES
        !           531: .nr In 20
        !           532: .in +\n(Inn
        !           533: .ta \n(Inn
        !           534: .sp 1
        !           535: .ti -\n(Inn
        !           536: \&a.out        \c
        !           537: object file
        !           538: .ti -\n(Inn
        !           539: \&\&.\*(dBinit \c
        !           540: initial commands
        !           541: .SH SEE ALSO
        !           542: cc(1), f77(1), pc(1), mod(l)
        !           543: .SH COMMENTS
        !           544: \fI\*(DB\fP suffers from the same ``multiple include'' malady as did \fIsdb\fP.
        !           545: If you have a program consisting of a number of object files
        !           546: and each is built from source files that include header files,
        !           547: the symbolic information for the header files is replicated in
        !           548: each object file.
        !           549: Since about one debugger start-up is done for each link,
        !           550: having the linker (ld) re-organize the symbol information
        !           551: would not save much time, though it would reduce some of the
        !           552: disk space used.
        !           553: .PP
        !           554: This problem is an artifact of the unrestricted semantics
        !           555: of #include's in C; for example an include file can contain
        !           556: static declarations that are separate entities for each file
        !           557: in which they are included.
        !           558: However, even with Modula-2 there is a substantial amount of duplication
        !           559: of symbol information necessary for inter-module type checking.
        !           560: .PP
        !           561: Some problems remain with the support for individual languages.
        !           562: Fortran problems include:
        !           563: inability to assign to logical, logical*2, complex
        !           564: and double complex variables;
        !           565: inability to represent parameter constants
        !           566: which are not type integer or real;
        !           567: peculiar representation for the values of dummy procedures
        !           568: (the value shown for a dummy procedure is actually
        !           569: the first few bytes of the procedure text;
        !           570: to find the location of the procedure,
        !           571: use ``&'' to take the address of the variable).

unix.superglobalmegacorp.com

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