A debugging algorithm in equivalent transformation (ET) model is proposed. The proposed algorithm returns a bug rule in a program by receiving new rules from oracles (oracle rules). We construct theory about correctne...
详细信息
A debugging algorithm in equivalent transformation (ET) model is proposed. The proposed algorithm returns a bug rule in a program by receiving new rules from oracles (oracle rules). We construct theory about correctness of the proposed algorithm, present two strategies with respect to the requests of oracle rules, report examples to show the property of the proposed algorithm, and compare the proposed algorithm with the other debugging algorithms in the ET model.
algorithmic debugging is a semi-automatic debugging technique that abstracts the operational details of computations, allowing the programmers to debug their code from an abstract point of view. However, its use in pr...
详细信息
algorithmic debugging is a semi-automatic debugging technique that abstracts the operational details of computations, allowing the programmers to debug their code from an abstract point of view. However, its use in practice is still marginal, and one of the reasons is the lack of precision of this technique when reporting errors (current algorithmic debuggers do not point an expression or line as buggy, but they point a whole procedure/function/method as containing the bug). In this paper, we make a step forward to overcome this problem. We identify two specific causes of that problem in the standard formulation and implementations of algorithmic debugging, and we present a reformulation to solve both problems. We show that the novel ideas included in the reformulation proposed cannot be supported by the standard internal data structures (such as the Execution Tree) used in this technique and, hence, a generalisation of the standard definitions and algorithms is needed. The reformulation has been done in a language independent manner to make it useful and reusable in different programming languages. (C) 2018 Elsevier Inc. All rights reserved.
Existing algorithmic debuggers for Haskell require a transformation of all modules in a program, even libraries that the user does not want to debug and which may use language features not supported by the debugger. T...
详细信息
ISBN:
(纸本)9781450334686
Existing algorithmic debuggers for Haskell require a transformation of all modules in a program, even libraries that the user does not want to debug and which may use language features not supported by the debugger. This is a pity, because a promising approach to debugging is therefore not applicable to many real-world programs. We use the cost centre stack from the Glasgow Haskell Compiler profiling environment together with runtime value observations as provided by the Haskell Object Observation Debugger (HOOD) to collect enough information for algorithmic debugging. Program annotations are in suspected modules only. With this technique algorithmic debugging is applicable to a much larger set of Haskell programs. This demonstrates that for functional languages in general a simple stack trace extension is useful to support tasks such as profiling and debugging.
This paper proposes a new environment for high-level VLSI design specification validation using ''algorithmic debugging'' and evaluates its benefits on three significant examples (a protocol processor,...
详细信息
This paper proposes a new environment for high-level VLSI design specification validation using ''algorithmic debugging'' and evaluates its benefits on three significant examples (a protocol processor, an 8-bit CPU, and a Prolog processor). A design is specified at a high-level using the structured analysis (SA) method, which is useful for analyzing and understanding the functionality to be realized. The specification written in SA is transformed into a logic programming language and is simulated in it. The errors (which terminate with an incorrect output in the simulation) included in the three large examples are efficiently located by answering junt a few queries from the algorithmic debugger. The number of interactions between the designer and the debugger is reduced by a factor of ten to a hundred compared to conventional simulation based validation methodologies. The correct SA specification can be automatically translated into a Register Transfer Level (RTL) specification suitable for logic synthesis. In this environment, a designer is freed from the tedious task of debugging a RTL specification, and can concentrate on the design itself. This environment promises to be an important step towards efficient high-level VLSI design specification validation.
algorithmic debugging is a debugging technique that has been extended to practically all programming paradigms. Roughly speaking, the technique constructs an internal representation of all (sub)computations performed ...
详细信息
algorithmic debugging is a debugging technique that has been extended to practically all programming paradigms. Roughly speaking, the technique constructs an internal representation of all (sub)computations performed during the execution of a buggy program;and then, it asks the programmer about the correctness of such computations. The answers of the programmer guide the search for the bug until it is isolated by discarding correct parts of the program. After twenty years of research in algorithmic debugging many different techniques have appeared to improve the original proposal. Surprisingly, no study exists that joins together all these techniques and compares their advantages and their performance. This article presents a study that compares all current algorithmic debugging techniques and analyzes their differences and their costs. The research identifies the dimensions on which each strategy relies. This information allows us to combine the strong points of different strategies. (c) 2011 Elsevier Ltd. All rights reserved.
debugging has always been a costly part of software development and software maintenance, which makes it important to find methods and tools to support this activity. algorithmic program debugging is an interactive pr...
详细信息
debugging has always been a costly part of software development and software maintenance, which makes it important to find methods and tools to support this activity. algorithmic program debugging is an interactive process where the debugging system acquires knowledge about the intended behavior of the debugged program and uses this knowledge to localize errors semi-automatically. This knowledge is a set of partial specifications collected by the debugging system through a number of questions to the user. Although in theory the specifications about the intended program behavior can be stored in advance, this is still an error-prone task in practice. Thus, knowledge collection during debugging is a necessity. A major drawback of this method is the large number of user interactions during bug localization. An important improvement would be to supply the debugging system with some information which can reduce this number. This is achieved by combining program slicing with algorithmic debugging. Program slicing improves the search method by eliminating many irrelevant questions to the user during bug localization. (C) 1998 Elsevier Science B.V. All rights reserved.
There is no doubt about the relevance of debugging in the software development process. However, the scientific community has put little attention on this task and the same debugging techniques used twenty years ago a...
详细信息
There is no doubt about the relevance of debugging in the software development process. However, the scientific community has put little attention on this task and the same debugging techniques used twenty years ago are still being used today. The thesis firstly studies and compares current debugging techniques and then it proposes new methods for the debugging of declarative languages putting special attention on profiling, program slicing and algorithmic debugging.
algorithmic debugging is a semi-automatic debugging technique which is based on the answers of an oracle (usually the programmer) to a series of questions generated automatically by the algorithmic debugger. The techn...
详细信息
algorithmic debugging is a semi-automatic debugging technique which is based on the answers of an oracle (usually the programmer) to a series of questions generated automatically by the algorithmic debugger. The technique typically traverses a record of the execution-the so-called execution tree-which only captures the declarative aspects of the execution and hides operational details. In this work we review and compare the most important algorithmic debuggers of different programming paradigms. In the study we analyze the features incorporated by current algorithmic debuggers, and we identify some features not supported yet by any debugger. We then compare all the debuggers giving rise to a map of the state of the practice in algorithmic debugging.
We propose a higher-order logical framework for declarative programming as an extension to the setting of the simply typed lambda calculus of a first-order rewriting logic, where programs are now presented by conditio...
详细信息
ISBN:
(纸本)9781605585680
We propose a higher-order logical framework for declarative programming as an extension to the setting of the simply typed lambda calculus of a first-order rewriting logic, where programs are now presented by conditional pattern rewrite systems on lambda abstractions. We use this new logical framework to obtain a natural model-theoretic semantics from traditional theories in higher-order declarative (functional and logic) programming, and we provide a fixpoint semantics that matches the pattern model of a program as the least fixpoint of an operator defined over pattern algebras. We use this higher-order semantic framework as a basis for the verification of declarative programs and the development of efficient algorithmic debugging techniques. Our debugging approach proceeds by exploring an abridged computational tree built on a higher-order proof calculus with A-abstractions that provides a purely declarative view of the computation, in order to detect a function rule that is incorrect in the intended model of the program's semantics. For verification purposes, our higher-order logical framework can be mapped into higher-order logic programming, and we can use this translation as a starting point to explore how to prove properties valid in the least pattern model of a program by means of different existing interactive proof assistants, as the Isabelle theorem prover.
Program logic controllers are widely used in industry either to control the manufacturing process or the processing plant. Thus, any faulty behavior in the program logic controller will have a crucial effect on both o...
详细信息
ISBN:
(纸本)9781728118208
Program logic controllers are widely used in industry either to control the manufacturing process or the processing plant. Thus, any faulty behavior in the program logic controller will have a crucial effect on both of the industry or/and labors. Therefore, it is important to be able to detect and diagnose any fault in the program logic controller. This paper introduces a new debugging technique;it combines both of the program slicing and the algorithmic debugging techniques. This is attained by making use of the instruction list programming to perform the debugging techniques and then it is converted into a control flow graph before applying the new combination between the slicing and algorithmic debugging. Through the use of these techniques, the debugger can utilize the feedback from the user to detcet the fault and find the source of this fault.
暂无评论