| Divide-and-query and subterm dependency tracking in the mercury declarative debugger |
| Full text |
Pdf
(232 KB)
|
| Source
|
Proceedings of the sixth international symposium on Automated analysis-driven debugging
table of contents
Monterey, California, USA
Pages: 59 - 68
Year of Publication: 2005
ISBN:1-59593-050-7
|
|
Authors
|
|
| Sponsors |
|
| Publisher |
|
| Bibliometrics |
Downloads (6 Weeks): 4, Downloads (12 Months): 14, Citation Count: 1
|
|
|
ABSTRACT
We have implemented a declarative debugger for Mercury that is capable of finding bugs in large, long-running programs. This debugger implements several search strategies. We discuss the implementation of two of these strategies and the conditions under which each strategy is useful.The divide and query strategy tries to minimize the number of questions asked of the user. While divide and query can reduce the number of questions to roughly logarithmic in the size of the computation, implementing it presents practical difficulties for computations whose representations do not fit into memory. We discuss how we get around this problem, making divide and query practical.Our declarative debugger allows users to specify exactly which part of an atom is wrong. The subterm dependency tracking strategy exploits this extra information to jump directly to the part of the program that computed the wrong subterm. In many cases, only a few such jumps are required to arrive at the bug. Subterm dependency tracking can converge on the bug even more quickly than divide and query, and it tends to yield question sequences that are easier for users to answer.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
Mark Brown and Zoltan Somogyi. Annotated event traces for declarative debugging. Available from http://www.cs.mu.oz.au/mercury/, 2003.
|
| |
2
|
Lawrence Byrd. Understanding the control flow of Prolog programs. In Proceedings of the 1980 Logic Programming Workshop, pages 127--138, Debrecen, Hungary, July 1980.
|
 |
3
|
|
| |
4
|
Bil Lewis. Debugging backwards in time. In Proceedings of AADEBUG '03, Ghent, Belgium, September 2003.
|
| |
5
|
Lee Naish. A declarative debugging scheme. Journal of Functional and Logic Programming, 1997(3), April 1997.
|
| |
6
|
Lee Naish. A three-valued declarative debugging scheme. Australian Computer Science Communications, 22(1):166--173, January 2000.
|
| |
7
|
|
| |
8
|
|
| |
9
|
D. A. Plaisted. An efficient bug location algorithm. In Proceedings of ICLP '84, pages 151--158, Uppsala, Sweden, July 1984.
|
| |
10
|
|
| |
11
|
|
| |
12
|
Zoltan Somogyi. Idempotent I/O for safe time travel. In Proceedings of AADEBUG '03, pages 13--24, Ghent, Belgium, September 2003.
|
| |
13
|
Zoltan Somogyi and Fergus Henderson. The implementation technology of the Mercury debugger. In Proceedings of the Tenth Workshop on Logic Programming Environments, pages 35--49, Las Cruces, New Mexico, November 1999.
|
| |
14
|
Zoltan Somogyi, Fergus Henderson, and Thomas Conway. The execution algorithm of Mercury, an efficient purely declarative logic programming language. Journal of Logic Programming, 26(1-3):17--64, October-December 1996.
|
| |
15
|
|
| |
16
|
|
|