Dbx is the standard source-level debugger on most Unix1 workstations. Over the past six years Dbx has grown from a debugger for interpreted Pascal programs to a debugger for compiled C, C++, FORTRAN, Pascal, and Modula-2 programs. Dbx also has been retargetted to a variety of architectures, including VAX2, Motorola 680003, MIPS, IBM RT-PC4, IBM 370, Sun SPARC, and Intel 80386. This paper describes the evolution of Dbx and examines how the organization of Dbx has enhanced its portability and extensibility. The strucDbx is based on a set of abstractions that define what a debugger must do, not on a decomposition by language or machine. These abstractions provide greater flexibility in handling the unexpected problems associated with retargetting a program.
Mark A. Linton