BSD 4_3_Tahoe development
[unix-history] / usr / man / cat1 / dbx.0
DBX(1) UNIX Programmer's Manual DBX(1)
N\bNA\bAM\bME\bE
dbx - debugger
S\bSY\bYN\bNO\bOP\bPS\bSI\bIS\bS
d\bdb\bbx\bx [ -\b-r\br ] [ -\b-i\bi ] [ -\b-k\bk ] [ -\b-I\bI _\bd_\bi_\br ] [ -\b-c\bc _\bf_\bi_\bl_\be ] [ _\bo_\bb_\bj_\bf_\bi_\bl_\be [
_\bc_\bo_\br_\be_\bd_\bu_\bm_\bp ]]
D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
_\bD_\bb_\bx is a tool for source level debugging and execution of
programs under UNIX. The _\bo_\bb_\bj_\bf_\bi_\bl_\be is an object file produced
by a compiler with the appropriate flag (usually ``-g'')
specified to produce symbol information in the object file.
Currently, _\bc_\bc(1), _\bf_\b7_\b7(1), _\bp_\bc(1), and the DEC Western
Research Laboratory Modula-2 compiler, _\bm_\bo_\bd(l), produce the
appropriate source information. The machine level facili-
ties of _\bd_\bb_\bx can be used on any program.
The object file contains a symbol table that includes the
name of the all the source files translated by the compiler
to create it. These files are available for perusal while
using the debugger.
If a file named ``core'' exists in the current directory or
a _\bc_\bo_\br_\be_\bd_\bu_\bm_\bp file is specified, _\bd_\bb_\bx can be used to examine the
state of the program when it faulted.
If the file ``.dbxinit'' exists in the current directory
then the debugger commands in it are executed. _\bD_\bb_\bx also
checks for a ``.dbxinit'' in the user's home directory if
there isn't one in the current directory.
The command line options and their meanings are:
-\b-r\br Execute _\bo_\bb_\bj_\bf_\bi_\bl_\be immediately. If it terminates suc-
cessfully _\bd_\bb_\bx exits. Otherwise the reason for ter-
mination will be reported and the user offered the
option of entering the debugger or letting the pro-
gram fault. _\bD_\bb_\bx will read from ``/dev/tty'' when -\b-r\br
is specified and standard input is not a terminal.
-\b-i\bi Force _\bd_\bb_\bx to act as though standard input is a ter-
minal.
-\b-k\bk Map memory addresses, useful for kernel debugging.
-\b-I\bI _\bd_\bi_\br Add _\bd_\bi_\br to the list of directories that are searched
when looking for a source file. Normally _\bd_\bb_\bx looks
for source files in the current directory and in the
directory where _\bo_\bb_\bj_\bf_\bi_\bl_\be is located. The directory
search path can also be set with the u\bus\bse\be command.
-\b-c\bc _\bf_\bi_\bl_\be Execute the _\bd_\bb_\bx commands in the _\bf_\bi_\bl_\be before reading
Printed 7/9/88 January 12, 1986 1
DBX(1) UNIX Programmer's Manual DBX(1)
from standard input.
Unless -\b-r\br is specified, _\bd_\bb_\bx just prompts and waits for a
command.
E\bEx\bxe\bec\bcu\but\bti\bio\bon\bn a\ban\bnd\bd T\bTr\bra\bac\bci\bin\bng\bg C\bCo\bom\bmm\bma\ban\bnd\bds\bs
r\bru\bun\bn [_\ba_\br_\bg_\bs] [<\b< _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be] [>\b> _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be]
r\bre\ber\bru\bun\bn [_\ba_\br_\bg_\bs] [<\b< _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be] [>\b> _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be]
Start executing _\bo_\bb_\bj_\bf_\bi_\bl_\be, passing _\ba_\br_\bg_\bs as command line
arguments; <\b< or >\b> can be used to redirect input or out-
put in the usual manner. When r\bre\ber\bru\bun\bn is used without
any arguments the previous argument list is passed to
the program; otherwise it is identical to r\bru\bun\bn. If
_\bo_\bb_\bj_\bf_\bi_\bl_\be has been written since the last time the sym-
bolic information was read in, _\bd_\bb_\bx will read in the new
information.
t\btr\bra\bac\bce\be [i\bin\bn _\bp_\br_\bo_\bc_\be_\bd_\bu_\br_\be/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn] [i\bif\bf _\bc_\bo_\bn_\bd_\bi_\bt_\bi_\bo_\bn]
t\btr\bra\bac\bce\be _\bs_\bo_\bu_\br_\bc_\be-_\bl_\bi_\bn_\be-_\bn_\bu_\bm_\bb_\be_\br [i\bif\bf _\bc_\bo_\bn_\bd_\bi_\bt_\bi_\bo_\bn]
t\btr\bra\bac\bce\be _\bp_\br_\bo_\bc_\be_\bd_\bu_\br_\be/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn [i\bin\bn _\bp_\br_\bo_\bc_\be_\bd_\bu_\br_\be/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn] [i\bif\bf _\bc_\bo_\bn_\bd_\bi_\bt_\bi_\bo_\bn]
t\btr\bra\bac\bce\be _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn a\bat\bt _\bs_\bo_\bu_\br_\bc_\be-_\bl_\bi_\bn_\be-_\bn_\bu_\bm_\bb_\be_\br [i\bif\bf _\bc_\bo_\bn_\bd_\bi_\bt_\bi_\bo_\bn]
t\btr\bra\bac\bce\be _\bv_\ba_\br_\bi_\ba_\bb_\bl_\be [i\bin\bn _\bp_\br_\bo_\bc_\be_\bd_\bu_\br_\be/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn] [i\bif\bf _\bc_\bo_\bn_\bd_\bi_\bt_\bi_\bo_\bn]
Have tracing information printed when the program is
executed. A number is associated with the command that
is used to turn the tracing off (see the d\bde\bel\ble\bet\bte\be com-
mand).
The first argument describes what is to be traced. If
it is a _\bs_\bo_\bu_\br_\bc_\be-_\bl_\bi_\bn_\be-_\bn_\bu_\bm_\bb_\be_\br, then the line is printed
immediately prior to being executed. Source line
numbers in a file other than the current one must be
preceded by the name of the file in quotes and a colon,
e.g. "mumble.p":17.
If the argument is a procedure or function name then
every time it is called, information is printed telling
what routine called it, from what source line it was
called, and what parameters were passed to it. In
addition, its return is noted, and if it's a function
then the value it is returning is also printed.
If the argument is an _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn with an a\bat\bt clause then
the value of the expression is printed whenever the
identified source line is reached.
If the argument is a variable then the name and value
of the variable is printed whenever it changes. Execu-
tion is substantially slower during this form of trac-
ing.
Printed 7/9/88 January 12, 1986 2
DBX(1) UNIX Programmer's Manual DBX(1)
If no argument is specified then all source lines are
printed before they are executed. Execution is sub-
stantially slower during this form of tracing.
The clause ``i\bin\bn _\bp_\br_\bo_\bc_\be_\bd_\bu_\br_\be/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn'' restricts tracing
information to be printed only while executing inside
the given procedure or function.
_\bC_\bo_\bn_\bd_\bi_\bt_\bi_\bo_\bn is a boolean expression and is evaluated
prior to printing the tracing information; if it is
false then the information is not printed.
s\bst\bto\bop\bp i\bif\bf _\bc_\bo_\bn_\bd_\bi_\bt_\bi_\bo_\bn
s\bst\bto\bop\bp a\bat\bt _\bs_\bo_\bu_\br_\bc_\be-_\bl_\bi_\bn_\be-_\bn_\bu_\bm_\bb_\be_\br [i\bif\bf _\bc_\bo_\bn_\bd_\bi_\bt_\bi_\bo_\bn]
s\bst\bto\bop\bp i\bin\bn _\bp_\br_\bo_\bc_\be_\bd_\bu_\br_\be/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn [i\bif\bf _\bc_\bo_\bn_\bd_\bi_\bt_\bi_\bo_\bn]
s\bst\bto\bop\bp _\bv_\ba_\br_\bi_\ba_\bb_\bl_\be [i\bif\bf _\bc_\bo_\bn_\bd_\bi_\bt_\bi_\bo_\bn]
Stop execution when the given line is reached, pro-
cedure or function called, variable changed, or condi-
tion true.
s\bst\bta\bat\btu\bus\bs [>\b> _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be]
Print out the currently active t\btr\bra\bac\bce\be and s\bst\bto\bop\bp commands.
d\bde\bel\ble\bet\bte\be _\bc_\bo_\bm_\bm_\ba_\bn_\bd-_\bn_\bu_\bm_\bb_\be_\br ...
The traces or stops corresponding to the given numbers
are removed. The numbers associated with traces and
stops are printed by the s\bst\bta\bat\btu\bus\bs command.
c\bca\bat\btc\bch\bh _\bn_\bu_\bm_\bb_\be_\br
c\bca\bat\btc\bch\bh _\bs_\bi_\bg_\bn_\ba_\bl-_\bn_\ba_\bm_\be
i\big\bgn\bno\bor\bre\be _\bn_\bu_\bm_\bb_\be_\br
i\big\bgn\bno\bor\bre\be _\bs_\bi_\bg_\bn_\ba_\bl-_\bn_\ba_\bm_\be
Start or stop trapping a signal before it is sent to
the program. This is useful when a program being
debugged handles signals such as interrupts. A signal
may be specified by number or by a name (e.g., SIGINT).
Signal names are case insensitive and the ``SIG'' pre-
fix is optional. By default all signals are trapped
except SIGCONT, SIGCHILD, SIGALRM and SIGKILL.
c\bco\bon\bnt\bt _\bi_\bn_\bt_\be_\bg_\be_\br
c\bco\bon\bnt\bt _\bs_\bi_\bg_\bn_\ba_\bl-_\bn_\ba_\bm_\be
Continue execution from where it stopped. If a signal
is specified, the process continues as though it
received the signal. Otherwise, the process is contin-
ued as though it had not been stopped.
Execution cannot be continued if the process has ``fin-
ished'', that is, called the standard procedure ``exit''.
_\bD_\bb_\bx does not allow the process to exit, thereby letting the
user to examine the program state.
Printed 7/9/88 January 12, 1986 3
DBX(1) UNIX Programmer's Manual DBX(1)
s\bst\bte\bep\bp Execute one source line.
n\bne\bex\bxt\bt Execute up to the next source line. The difference
between this and s\bst\bte\bep\bp is that if the line contains a
call to a procedure or function the s\bst\bte\bep\bp command will
stop at the beginning of that block, while the n\bne\bex\bxt\bt
command will not.
r\bre\bet\btu\bur\brn\bn [_\bp_\br_\bo_\bc_\be_\bd_\bu_\br_\be]
Continue until a return to _\bp_\br_\bo_\bc_\be_\bd_\bu_\br_\be is executed, or
until the current procedure returns if none is speci-
fied.
c\bca\bal\bll\bl _\bp_\br_\bo_\bc_\be_\bd_\bu_\br_\be(_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs)
Execute the object code associated with the named pro-
cedure or function.
P\bPr\bri\bin\bnt\bti\bin\bng\bg V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs a\ban\bnd\bd E\bEx\bxp\bpr\bre\bes\bss\bsi\bio\bon\bns\bs
Names are resolved first using the static scope of the
current function, then using the dynamic scope if the name
is not defined in the static scope. If static and dynamic
searches do not yield a result, an arbitrary symbol is
chosen and the message ``[using _\bq_\bu_\ba_\bl_\bi_\bf_\bi_\be_\bd _\bn_\ba_\bm_\be]'' is
printed. The name resolution procedure may be overridden by
qualifying an identifier with a block name, e.g.,
``_\bm_\bo_\bd_\bu_\bl_\be._\bv_\ba_\br_\bi_\ba_\bb_\bl_\be''. For C, source files are treated as
modules named by the file name without ``.c''.
Expressions are specified with an approximately common sub-
set of C and Pascal (or equivalently Modula-2) syntax.
Indirection can be denoted using either a prefix ``*'' or a
postfix ``^'' and array expressions are subscripted by
brackets (``[ ]''). The field reference operator (``.'')
can be used with pointers as well as records, making the C
operator ``->'' unnecessary (although it is supported).
Types of expressions are checked; the type of an expression
may be overridden by using ``_\bt_\by_\bp_\be-_\bn_\ba_\bm_\be(_\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn)''. When
there is no corresponding named type the special constructs
``&_\bt_\by_\bp_\be-_\bn_\ba_\bm_\be'' and ``$$_\bt_\ba_\bg-_\bn_\ba_\bm_\be'' can be used to represent a
pointer to a named type or C structure tag.
a\bas\bss\bsi\big\bgn\bn _\bv_\ba_\br_\bi_\ba_\bb_\bl_\be =\b= _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn
Assign the value of the expression to the variable.
d\bdu\bum\bmp\bp [_\bp_\br_\bo_\bc_\be_\bd_\bu_\br_\be] [>\b> _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be]
Print the names and values of variables in the given
procedure, or the current one if none is specified. If
Printed 7/9/88 January 12, 1986 4
DBX(1) UNIX Programmer's Manual DBX(1)
the procedure given is ``.'', then the all active vari-
ables are dumped.
p\bpr\bri\bin\bnt\bt _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn [,\b, _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn ...]
Print out the values of the expressions.
w\bwh\bha\bat\bti\bis\bs _\bn_\ba_\bm_\be
Print the declaration of the given name, which may be
qualified with block names as above.
w\bwh\bhi\bic\bch\bh _\bi_\bd_\be_\bn_\bt_\bi_\bf_\bi_\be_\br
Print the full qualification of the given identifer,
i.e. the outer blocks that the identifier is associ-
ated with.
u\bup\bp [_\bc_\bo_\bu_\bn_\bt]
d\bdo\bow\bwn\bn [_\bc_\bo_\bu_\bn_\bt]
Move the current function, which is used for resolving
names, up or down the stack _\bc_\bo_\bu_\bn_\bt levels. The default
_\bc_\bo_\bu_\bn_\bt is 1.
w\bwh\bhe\ber\bre\be
Print out a list of the active procedures and function.
w\bwh\bhe\ber\bre\bei\bis\bs _\bi_\bd_\be_\bn_\bt_\bi_\bf_\bi_\be_\br
Print the full qualification of all the symbols whose
name matches the given identifier. The order in which
the symbols are printed is not meaningful.
A\bAc\bcc\bce\bes\bss\bsi\bin\bng\bg S\bSo\bou\bur\brc\bce\be F\bFi\bil\ble\bes\bs
/_\br_\be_\bg_\bu_\bl_\ba_\br _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn[/]
?_\br_\be_\bg_\bu_\bl_\ba_\br _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn[?]
Search forward or backward in the current source file
for the given pattern.
e\bed\bdi\bit\bt [_\bf_\bi_\bl_\be_\bn_\ba_\bm_\be]
e\bed\bdi\bit\bt _\bp_\br_\bo_\bc_\be_\bd_\bu_\br_\be/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn-_\bn_\ba_\bm_\be
Invoke an editor on _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be or the current source file
if none is specified. If a _\bp_\br_\bo_\bc_\be_\bd_\bu_\br_\be or _\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn name
is specified, the editor is invoked on the file that
contains it. Which editor is invoked by default
depends on the installation. The default can be over-
ridden by setting the environment variable EDITOR to
the name of the desired editor.
f\bfi\bil\ble\be [_\bf_\bi_\bl_\be_\bn_\ba_\bm_\be]
Change the current source file name to _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be. If
none is specified then the current source file name is
printed.
Printed 7/9/88 January 12, 1986 5
DBX(1) UNIX Programmer's Manual DBX(1)
f\bfu\bun\bnc\bc [_\bp_\br_\bo_\bc_\be_\bd_\bu_\br_\be/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn]
Change the current function. If none is specified then
print the current function. Changing the current func-
tion implicitly changes the current source file to the
one that contains the function; it also changes the
current scope used for name resolution.
l\bli\bis\bst\bt [_\bs_\bo_\bu_\br_\bc_\be-_\bl_\bi_\bn_\be-_\bn_\bu_\bm_\bb_\be_\br [,\b, _\bs_\bo_\bu_\br_\bc_\be-_\bl_\bi_\bn_\be-_\bn_\bu_\bm_\bb_\be_\br]]
l\bli\bis\bst\bt _\bp_\br_\bo_\bc_\be_\bd_\bu_\br_\be/_\bf_\bu_\bn_\bc_\bt_\bi_\bo_\bn
List the lines in the current source file from the
first line number to the second inclusive. If no lines
are specified, the next 10 lines are listed. If the
name of a procedure or function is given lines _\bn-_\bk to
_\bn+_\bk are listed where _\bn is the first statement in the
procedure or function and _\bk is small.
u\bus\bse\be _\bd_\bi_\br_\be_\bc_\bt_\bo_\br_\by-_\bl_\bi_\bs_\bt
Set the list of directories to be searched when looking
for source files.
C\bCo\bom\bmm\bma\ban\bnd\bd A\bAl\bli\bia\bas\bse\bes\bs a\ban\bnd\bd V\bVa\bar\bri\bia\bab\bbl\ble\bes\bs
a\bal\bli\bia\bas\bs _\bn_\ba_\bm_\be _\bn_\ba_\bm_\be
a\bal\bli\bia\bas\bs _\bn_\ba_\bm_\be ``_\bs_\bt_\br_\bi_\bn_\bg''
a\bal\bli\bia\bas\bs _\bn_\ba_\bm_\be (_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br_\bs) ``_\bs_\bt_\br_\bi_\bn_\bg''
When commands are processed, dbx first checks to see if
the word is an alias for either a command or a string.
If it is an alias, then dbx treats the input as though
the corresponding string (with values substituted for
any parameters) had been entered. For example, to
define an alias ``rr'' for the command ``rerun'', one
can say
alias rr rerun
To define an alias called ``b'' that sets a stop at a
particular line one can say
alias b(x) ``stop at x''
Subsequently, the command ``b(12)'' will expand to
``stop at 12''.
s\bse\bet\bt _\bn_\ba_\bm_\be [= _\be_\bx_\bp_\br_\be_\bs_\bs_\bi_\bo_\bn]
The s\bse\bet\bt command defines values for debugger variables.
The names of these variables cannot conflict with names
in the program being debugged, and are expanded to the
corresponding expression within other commands. The
following variables have a special meaning:
Printed 7/9/88 January 12, 1986 6
DBX(1) UNIX Programmer's Manual DBX(1)
$frame
Setting this variable to an address causes dbx
to use the stack frame pointed to by the
address for doing stack traces and accessing
local variables. This facility is of particu-
lar use for kernel debugging.
$hexchars
$hexints
$hexoffsets
$hexstrings
When set, dbx prints out out characters,
integers, offsets from registers, or character
pointers respectively in hexadecimal.
$listwindow
The value of this variable specifies the number
of lines to list around a function or when the
l\bli\bis\bst\bt command is given without any parameters.
Its default value is 10.
$mapaddrs
Setting (unsetting) this variable causes dbx to
start (stop) mapping addresses. As with
``$frame'', this is useful for kernel debug-
ging.
$unsafecall
$unsafeassign
When ``$unsafecall'' is set, strict type check-
ing is turned off for arguments to subroutine
or function calls (_\be._\bg. in the c\bca\bal\bll\bl statement).
When ``$unsafeassign'' is set, strict type
checking between the two sides of an a\bas\bss\bsi\big\bgn\bn
statement is turned off. These variables
should be used only with great care, because
they severely limit dbx's usefulness for
detecting errors.
u\bun\bna\bal\bli\bia\bas\bs _\bn_\ba_\bm_\be
Remove the alias with the given name.
u\bun\bns\bse\bet\bt _\bn_\ba_\bm_\be
Delete the debugger variable associated with _\bn_\ba_\bm_\be.
Printed 7/9/88 January 12, 1986 7
DBX(1) UNIX Programmer's Manual DBX(1)
M\bMa\bac\bch\bhi\bin\bne\be L\bLe\bev\bve\bel\bl C\bCo\bom\bmm\bma\ban\bnd\bds\bs
t\btr\bra\bac\bce\bei\bi [_\ba_\bd_\bd_\br_\be_\bs_\bs] [i\bif\bf _\bc_\bo_\bn_\bd]
t\btr\bra\bac\bce\bei\bi [_\bv_\ba_\br_\bi_\ba_\bb_\bl_\be] [a\bat\bt _\ba_\bd_\bd_\br_\be_\bs_\bs] [i\bif\bf _\bc_\bo_\bn_\bd]
s\bst\bto\bop\bpi\bi [_\ba_\bd_\bd_\br_\be_\bs_\bs] [i\bif\bf _\bc_\bo_\bn_\bd]
s\bst\bto\bop\bpi\bi [a\bat\bt] [_\ba_\bd_\bd_\br_\be_\bs_\bs] [i\bif\bf _\bc_\bo_\bn_\bd]
Turn on tracing or set a stop using a machine instruc-
tion address.
s\bst\bte\bep\bpi\bi
n\bne\bex\bxt\bti\bi
Single step as in s\bst\bte\bep\bp or n\bne\bex\bxt\bt, but do a single
instruction rather than source line.
_\ba_\bd_\bd_\br_\be_\bs_\bs ,\b,_\ba_\bd_\bd_\br_\be_\bs_\bs/\b/ [_\bm_\bo_\bd_\be]
_\ba_\bd_\bd_\br_\be_\bs_\bs /\b/ [_\bc_\bo_\bu_\bn_\bt] [_\bm_\bo_\bd_\be]
Print the contents of memory starting at the first
_\ba_\bd_\bd_\br_\be_\bs_\bs and continuing up to the second _\ba_\bd_\bd_\br_\be_\bs_\bs or
until _\bc_\bo_\bu_\bn_\bt items are printed. If the address is
``.'', the address following the one printed most
recently is used. The _\bm_\bo_\bd_\be specifies how memory is to
be printed; if it is omitted the previous mode speci-
fied is used. The initial mode is ``X''. The follow-
ing modes are supported:
i\bi print the machine instruction
d\bd print a short word in decimal
D\bD print a long word in decimal
o\bo print a short word in octal
O\bO print a long word in octal
x\bx print a short word in hexadecimal
X\bX print a long word in hexadecimal
b\bb print a byte in octal
c\bc print a byte as a character
s\bs print a string of characters terminated by a null
byte
f\bf print a single precision real number
g\bg print a double precision real number
Symbolic addresses are specified by preceding the name with
an ``&''. Registers are denoted by ``$rN'' where N is the
number of the register. Addresses may be expressions made
up of other addresses and the operators ``+'', ``-'', and
indirection (unary ``*'').
Printed 7/9/88 January 12, 1986 8
DBX(1) UNIX Programmer's Manual DBX(1)
M\bMi\bis\bsc\bce\bel\bll\bla\ban\bne\beo\bou\bus\bs C\bCo\bom\bmm\bma\ban\bnd\bds\bs
g\bgr\bri\bip\bpe\be
Invoke a mail program to send a message to the person
in charge of _\bd_\bb_\bx.
h\bhe\bel\blp\bp Print out a synopsis of _\bd_\bb_\bx commands.
q\bqu\bui\bit\bt Exit _\bd_\bb_\bx.
s\bsh\bh _\bc_\bo_\bm_\bm_\ba_\bn_\bd-_\bl_\bi_\bn_\be
Pass the command line to the shell for execution. The
SHELL environment variable determines which shell is
used.
s\bso\bou\bur\brc\bce\be _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be
Read _\bd_\bb_\bx commands from the given _\bf_\bi_\bl_\be_\bn_\ba_\bm_\be.
F\bFI\bIL\bLE\bES\bS
a.out object file
.dbxinit initial commands
S\bSE\bEE\bE A\bAL\bLS\bSO\bO
cc(1), f77(1), pc(1), mod(l)
C\bCO\bOM\bMM\bME\bEN\bNT\bTS\bS
_\bD_\bb_\bx suffers from the same ``multiple include'' malady as did
_\bs_\bd_\bb. If you have a program consisting of a number of object
files and each is built from source files that include
header files, the symbolic information for the header files
is replicated in each object file. Since about one debugger
start-up is done for each link, having the linker (ld) re-
organize the symbol information would not save much time,
though it would reduce some of the disk space used.
This problem is an artifact of the unrestricted semantics of
#include's in C; for example an include file can contain
static declarations that are separate entities for each file
in which they are included. However, even with Modula-2
there is a substantial amount of duplication of symbol
information necessary for inter-module type checking.
Some problems remain with the support for individual
languages. Fortran problems include: inability to assign to
logical, logical*2, complex and double complex variables;
inability to represent parameter constants which are not
type integer or real; peculiar representation for the values
of dummy procedures (the value shown for a dummy procedure
is actually the first few bytes of the procedure text; to
find the location of the procedure, use ``&'' to take the
address of the variable).
Printed 7/9/88 January 12, 1986 9