4.3BSD-Tahoe/usr/src/ucb/dbx/History
Dbx is a descendant of pdx, a debugger that I wrote to work with
Berkeley Pascal as my master's project at Berkeley. Pdx was released
in the fall of 1981. While pdx was being completed, a version with
different machine, process, and runtime modules was developed to run
on VAX compiled code.
In the spring of '82, the use of the string table for storing type encodings
was designed and the VAX C compiler was modified to generate the new
symbol information. In the fall of '82, the modifications to the C compiler
and a new version of the debugger, by now named dbx, were installed locally
at Berkeley. In early '83, dbx was installed on the 4.1c release of
Berkeley UNIX.
In the spring of '83, Alistair Fyfe, a graduate student at Berkeley,
modified dbx and the f77 compiler to enable dbx to debug FORTRAN programs.
During this time, dbx was also ported to the Sun.
In the fall of '83, dbx was released with 4.2. During that winter and
the spring of '84, dbx was extended to work with Modula-2 in conjunction
with the development of the Modula-2 compiler at DEC Western Research Lab.
In June of '84, a collection of updates reflected the current status
of dbx, including bug fixes and support for Modula-2, was sent to net.sources.
Below are some short notes on versions that have been installed since then.
Mark Linton
6/1 2.0 release to net.sources
internal releases
7/2 2.5 rewrote name resolution, particularly for procedure nesting
7/17 2.6 single stepping through certain kinds of loops,
tracing through code compiled for profiling
support for Pascal installed on the side but not tested
(nor is the associated support in pc)
7/19 2.7 open arrays
7/31 2.8 print <proc>, qualified names in backtrace,
curevent to avoid some "missing trids",
8/1 2.9 increased maximum number of arguments from 100 to 1000,
increased maximum line size to 1024 to 10240
8/23 2.10 support for Pascal and test cases for modified pc,
code for -k (kernel debugging) added but not debugged,
qualified names in traces
no longer fatal to not link with -g -- assumes first global
is equivalent to -lg
better resolution of externals
reports when a core image is being used
8/25 2.11 fixed some problems with Pascal, e.g., enumerations,
increased maximum number of functions from 1001 to 4001,
fixed a nasty bug for C (and elsewhere?) having to do
with processing types for "known" global variables,
changed the syntax/semantics of "print x" where x is
a function so that it no longer tries to call it --
"print x()" must be used instead
added/fixed syntax for type renaming so that term's can
be renamed
8/26 2.12 fixed problem with multiple imports (EXTREF's),
added dynamic name lookup if static lookup fails before picking
at random
8/27 2.13 fixed problem in dynamic lookup that caused an infinite loop,
if it picks one at random it now prints a message specifying
the fully qualified name of the symbol that was picked
8/27 2.15 first attack at fixing problem with type renames (loopholes)
9/16 2.16 major attempt to fix loopholes by revising node representation
and command grammar -- basic need was to make more sense
out of when to do indirection
changed identifier resolution in object and stabstring so
that globals are no longer in top scope (since they could
conflict with a module name)
9/18 2.17 another problem related to expressions having to do with
handling pointers to arrays
...
1/1 2.25 made more inroads into kernel debugging,
added macros (aliases with arguments), and settable variables
1/7 2.26 fixed bug where only mapped first address of block read,
have to map each page (still wrong though)
1/13 2.27 fixed some user reported problems -- down in runtime
didn't work correctly if "curframe" wasn't already set,
the process instruction cache had to be flushed when
a process is killed (this caused a problem when an
object file was remade)
1/14 2.28 fixed problem with mapping addresses under -k,
added -c option for command files other than .dbxinit
fixed occasional problem with testing for end of stack frames
(symptom was infinite loop calling nextframe)
1/15 2.29 fixed problem with printing dynamic arrays inside aggregates
fixed type compatibility for builtin true and false