[net.ai] Expert systems for software debugging?

Newman.es@PARC-MAXC.ARPA (01/17/84)

From:  Ron Newman <Newman.es@PARC-MAXC.ARPA>

Debugging is a black art, not at all algorithmic, but almost totally
heuristic.  There is a lot of expert knowledge around about how to debug
faulty programs, but it is rarely written down or systemetized.  Usually
it seems to reside solely in the minds of a few "debugging whizzes".

Does anyone know of an expert system that assists in software debugging?
Or any attempts (now or in the past) to produce such an expert?

/Ron

robison@eosp1.UUCP (Tobias D. Robison) (01/18/84)

There is a good possibility in this area.  One of the toughest kinds of
debugging is to read a dump of a program that crashed, looking for
bad data, and trying to make associations to explain what caused the
data to go bad.  A computer program should be able to work
interactively with a person to try out hypotheses like these on
memory areas containing incorrect data:

- what kind of garbge is this? (e.g., ascii, floating point,
instructions,  intermediate output from part of this program,
the kind of data produced by the linking loader, etc.)

- what kind of software errors can allow this kind of overwrite to
occur? (pointer error, overflowing array boundaries, etc.)

- what similarity is there between this dump and the last one?

- what parts of the dump can be ignored, so the human can concentrate
on the problem areas?

A good programmer does this kind of analysis by calling upon his
pattern matching, experience of crashes, and knowledge of data types.
Although a compuiter will be deficient in all these areas, it will
excel the human in its ability to examine many data items tirelessly.
				  - Toby Robison
			          decvax!ittvax!eosp1!robison
				  or:   allegra!eosp1!robison
				  (maybe: princeton!eosp1!robison)

broome%brl-bmd@sri-unix.UUCP (01/20/84)

From:  Paul Broome <broome@brl-bmd>


        Debugging is a black art, not at all algorithmic, but almost totally
        heuristic.  There is a lot of expert knowledge around about how
        to debug faulty programs, but it is rarely written down or
        systemetized.  Usually it seems to reside solely in the minds of
        a few "debugging whizzes".

        Does anyone know of an expert system that assists in software
        debugging? Or any attempts (now or in the past) to produce such
        an expert?

There are some good ideas and a Prolog implementation in Ehud Shapiro's
Algorithmic Program Debugging, which is published as an ACM distinguished
dissertation by MIT Press, 1983.  One of his ideas is "divide-and-query:
a query-optimal diagnosis algorithm," which is essentially a simple binary
bug search.  If the program is incorrect on some input then the program
is divided into two roughly equal subtrees and the computation backtracks
to the midpoint.  If this intermediate result is correct then the
first subtree is ignored and the bug search is repeated on the second
subtree.   If the intermediate result is incorrect then the search
continues instead on the first subtree.