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 , 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