Abstract Debugging of Higher-Order Imperative Languages
Abstract interpretation is a formal method that enables the static
determination (i.e. at compile-time) of the dynamic properties (i.e. at
run-time) of programs. We present an abstract interpretation-based method,
called abstract debugging, which enables the static and formal
debugging of programs, prior to their execution, by finding the origin of
potential bugs as well as necessary conditions for these bugs not to occur at
run-time. We show how invariant assertions and intermittent
assertions, such as termination, can be used to formally debug programs.
Finally, we show how abstract debugging can be effectively and efficiently
applied to higher-order imperative programs with exceptions and jumps to
non-local labels, and present the Syntox system that enables the
abstract debugging of the Pascal language by the determination of the
range of the scalar variables of programs.
[PostScript, PDF, Software,
© 1993 ACM]
François Bourdoncle