Results 11 - 20
of
38
Lazy Algorithmic Debugging: Ideas for Practical Implementation
- Automated and Algorithmic Debugging, volume 749 of Lecture Notes in Computer Science
, 1993
"... . Lazy functional languages have non-strict semantics and are purely declarative, i.e. they support the notion of referential transparency and are devoid of side effects. Traditional debugging techniques are, however, not suited for lazy functional languages since computations generally do not take ..."
Abstract
-
Cited by 6 (2 self)
- Add to MetaCart
. Lazy functional languages have non-strict semantics and are purely declarative, i.e. they support the notion of referential transparency and are devoid of side effects. Traditional debugging techniques are, however, not suited for lazy functional languages since computations generally do not take place in the order one might expect. Since algorithmic debugging allows the user to concentrate on the declarative aspects of program semantics, and will semi-automatically find functions containing bugs, we propose to use this technique for debugging lazy functional programs. Our earlier work showed that this is a promising approach. However, the current version of our debugger has severe implementational problems, e.g. too large trace size and too many questions asked. This paper suggests a number of techniques for overcoming these problems, at least partially. The key techniques are immediate strictification and piecemeal tracing. 1 Introduction Debugging has always been a costly part of...
Classifying ECG Waveforms in Prolog
, 1996
"... . The basic idea of the presented system (PECG) is to integrate an ECG classifier program (implemented in Prolog) with the IDT algorithmic debugger module and a graphic viewer. If the ECG classifier cannot analyze the input then the user is helped by the built-in IDT (Interactive Diagnosis and Testi ..."
Abstract
-
Cited by 6 (6 self)
- Add to MetaCart
. The basic idea of the presented system (PECG) is to integrate an ECG classifier program (implemented in Prolog) with the IDT algorithmic debugger module and a graphic viewer. If the ECG classifier cannot analyze the input then the user is helped by the built-in IDT (Interactive Diagnosis and Testing) debugger to find the place of the error. The IDT improves the Shapiro's original debugging method and can be used both in the debugging and in the testing of Prolog programs. In the PECG system the algorithmic debugger IDT has been extended with a graphic viewer. This graphic module shows the ECG waveform is being analyzed, in this way it gives an effective assistance to the user to answer the questions invoked by the debugger. 1 Introduction In the civilized world, more and more people suffer from heart disease. In the diagnosis of heart diseases the ECG is one of the simplest method. ECG is the graph of the potential difference induced by the heart muscle activity. These waveforms giv...
Debugging and Testing of Prolog Programs
"... . In this paper the IDTS (Integrated Debugging, Testing and Slicing), method is presented for the algorithmic debugging and functional testing of Prolog programs. This method integrates Shapiro's Interactive Diagnosis Algorithm with the Category-Partition Testing Method and a slicing technique. ..."
Abstract
-
Cited by 5 (0 self)
- Add to MetaCart
. In this paper the IDTS (Integrated Debugging, Testing and Slicing), method is presented for the algorithmic debugging and functional testing of Prolog programs. This method integrates Shapiro's Interactive Diagnosis Algorithm with the Category-Partition Testing Method and a slicing technique. Shapiro's original method demands a lot of user interactions during the debugging process. The IDTS method can avoid irrelevant questions to the user by categorizing input parameters, and match them against test cases and test database. In addition, a slicing method is used to compute which parts of the program are relevant for the search. The IDTS method has since been used in a large ECG classifier program and in an interactive learner. 1 1 Introduction In this paper we present a method, called IDTS (Integrated Debugging, Testing and Slicing) for the algorithmic debugging and functional testing of Prolog programs. This method not only integrates Shapiro's Interactive Diagnosis Alg...
Analyzing and Learning ECG Waveforms
, 1996
"... . In this paper we present a system which integrates an ECG waveform classifier (called PECG) with an interactive learner (called IMPUT). The PECG system is based on an attribute grammar specification of ECGs that has been transformed to Prolog. The IMPUT system combines the interactive debugging te ..."
Abstract
-
Cited by 5 (4 self)
- Add to MetaCart
. In this paper we present a system which integrates an ECG waveform classifier (called PECG) with an interactive learner (called IMPUT). The PECG system is based on an attribute grammar specification of ECGs that has been transformed to Prolog. The IMPUT system combines the interactive debugging technique IDT with the unfolding algorithm introduced in SPECTRE. The main result achieved in the new version of the PECG system is that an ILP method can be used to improve the effectiveness of a real size Prolog application. Applying the IMPUT method, the extended PECG system is able to suggest a correct solution to the user to replace the buggy clause recognized during the debugging process. 4 1 Introduction In this paper we present a system which integrates an ECG waveform classifier (called PECG) with an interactive learner (called IMPUT). The PECG system contains three main parts: the ECG processing, the IDT and graphic viewer modules. It is based on an attribute grammar approach of EC...
Static Slicing of JAVA Programs
- University
, 1996
"... This paper devotes itself to the problem of interprocedural static slicing of JAVA programs. We present a method which focuses on special JAVA features, which can improve the efficiency of a general object-oriented slicing algorithm. In our approach the representation of the hierarchy of JAVA cla ..."
Abstract
-
Cited by 5 (0 self)
- Add to MetaCart
This paper devotes itself to the problem of interprocedural static slicing of JAVA programs. We present a method which focuses on special JAVA features, which can improve the efficiency of a general object-oriented slicing algorithm. In our approach the representation of the hierarchy of JAVA classes is simplified. The method proposed can handle static variables, multiple packages and interfaces. In addition we introduce a new representation in system dependence graphs for polymorphic calls. This approach reduces the number of extra vertices required for handling polymorphism. 1 Introduction The concept of program slicing was originally introduced by Weiser in [Wei84]. In the Weiser concept a slice consists of all statements and predicates that might affect the variables in a set V at a program point p. The pair V and p is defined by a slicing criterion, and in some cases [HBR90] it is supposed that the variables in V have to occur at a program point p. Slicing can be applied ...
Animators for Generated Programming Environments
- Proceedings of the First International Workshop on Automated and Algorithmic Debugging AADEBUG'93, LNCS
, 1993
"... . Animation of execution is a necessary feature of source-level debuggers. We present a framework where animators are generated from existing algebraic specifications of interpreters. To this end, a patternmatching mechanism is used in conjunction with origin tracking, a generic tracing techniqu ..."
Abstract
-
Cited by 5 (2 self)
- Add to MetaCart
. Animation of execution is a necessary feature of source-level debuggers. We present a framework where animators are generated from existing algebraic specifications of interpreters. To this end, a patternmatching mechanism is used in conjunction with origin tracking, a generic tracing technique. The generation of animators is illustrated using an example language named CLaX, a Pascal relative. We study how our approach can be extended to the generation of source-level debuggers and algorithmic debuggers from specifications of interpreters. 1 Introduction We study animators for generated programming environments. An animator is a tool which visualizes program execution; typically, it highlights the statement that is currently executing. Animators are especially useful for (automated) debugging and tutoring. We use the ASF+SDF Meta-environment [14] to generate programming environments, consisting of syntax-directed editors, type-checkers, and interpreters, from algebraic spec...
Application of Inductive Logic Programming for Learning ECG Waveforms
, 1997
"... . In this paper a learning system is presented which integrates an ECG waveform classifier (called PECG) with an interactive learner (called IMPUT). The PECG system is based on an attribute grammar specification of ECGs that has been transformed to Prolog. The IMPUT system combines the interacti ..."
Abstract
-
Cited by 4 (1 self)
- Add to MetaCart
. In this paper a learning system is presented which integrates an ECG waveform classifier (called PECG) with an interactive learner (called IMPUT). The PECG system is based on an attribute grammar specification of ECGs that has been transformed to Prolog. The IMPUT system combines the interactive debugging technique IDT with the unfolding algorithm introduced in SPECTRE. Using the IMPUT system we can effectively assist in preparing the correct description of the basic structures of ECG waveforms. 4 Keywords: inductive logic programming, program specialization, syntactic pattern recognition 1 Introduction In this paper a complex system is presented that is able to classify ECG waveforms described as a combination of primitives. The system helps the user to improve the classifier program if it cannot recognize correctly the given input waveforms. The system integrates an ECG waveform classifier (called PECG) with an interactive learner (called IMPUT). The PECG system is ba...
Practical declarative debugging of Mercury programs
, 2005
"... Despite these expected benefits, declarative debugging is not yet widely used in practice to find real bugs. There are three main reasons for this: 1. Most previous declarative debuggers only support a subset of the features of their target language that is not sufficient to express real programs. 2 ..."
Abstract
-
Cited by 4 (1 self)
- Add to MetaCart
Despite these expected benefits, declarative debugging is not yet widely used in practice to find real bugs. There are three main reasons for this: 1. Most previous declarative debuggers only support a subset of the features of their target language that is not sufficient to express real programs. 2. Previous declarative debuggers do not scale well when applied to problems with large search spaces. 3. Previous declarative debuggers do not do enough to make the questions easier for the user to answer. The declarative nature of Mercury makes it relatively easy to implement a declarative debugger that can handle the full language. The version of the Mercury declarative debugger that was the starting point for this thesis already handled almost all of Mercury. By extending it to handle exceptions we made it handle the full language

