cdb is a simple, source-level debugger for ANSI/ISO C programs compile
d by lcc, a retargetable C compiler. cdb Is completely independent of
its target architecture. This independence is achieved by embedding a
small amount of itself - a 'nub' - in the program to be debugged and b
y having the compiler emit machine-independent symbol-table data and r
elated code. This paper describes the design of a nub interface for de
bugging, a target-independent implementation of this interface for cdb
, and the implementation of cdb itself. When compared to platform-spec
ific debuggers, cdb's implementation is minuscule: the nub, debugger,
and associated communications routines take about 1500 lines of C, and
fewer than 600 lines were added to Ice's front end to emit symbol tab
les and breakpoint hooks. All this code is machine independent.