Dynamic Query-Based Debugging
Raimondas Lencevicius, Urs Hölzle, and Ambuj K. Singh
Abstract: Program errors are hard to find because of
the cause-effect
gap between the time when an error occurs and the time when the error
becomes apparent to the programmer. Although debugging techniques such
as conditional and data breakpoints help to find error causes in simple
cases, they fail to effectively bridge the cause-effect gap in many
situations. Dynamic query-based debuggers offer programmers an effective
tool that provides instant error alert by continuously checking inter-object
relationships while the debugged program is running. To speed up dynamic query
evaluation, our debugger (implemented in portable Java) uses a combination
of program instrumentation, load-time code generation, query optimization,
and incremental reevaluation. Experiments and a query cost model show that
selection queries are efficient in most cases, while more costly join
queries are practical when query evaluations are infrequent or query
domains are small.
Keywords: Debugging, Breakpoints, Java, Queries, Class Loaders,
Instrumentation
Technical Report TRCS98-34, Computer Science Department, University
of California, Santa Barbara, December 1998. Published in the
Proceedings of the 13th European Conference on Object-Oriented
Programming'99, (ECOOP'99), Lisbon, Portugal, June 1999.
To get the PostScript file, click
here
! (PDF is here).