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.