ACM Home Page
Please provide us with feedback. Feedback
Divide-and-query and subterm dependency tracking in the mercury declarative debugger
Full text PdfPdf (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
Ian MacLarty  University of Melbourne, Australia
Zoltan Somogyi  University of Melbourne, Australia
Mark Brown  University of Melbourne, Australia
Sponsors
ACM: Association for Computing Machinery
SIGSOFT: ACM Special Interest Group on Software Engineering
SIGPLAN: ACM Special Interest Group on Programming Languages
Publisher
ACM  New York, NY, USA
Bibliometrics
Downloads (6 Weeks): 4,   Downloads (12 Months): 14,   Citation Count: 1
Additional Information:

abstract   references   cited by   index terms   collaborative colleagues  

Tools and Actions: Review this Article  
Save this Article to a Binder    Display Formats: BibTex  EndNote ACM Ref   
DOI Bookmark: Use this link to bookmark this Article: http://doi.acm.org/10.1145/1085130.1085138
What is a DOI?

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


Collaborative Colleagues:
Ian MacLarty: colleagues
Zoltan Somogyi: colleagues
Mark Brown: colleagues