Abstract:
Research on engaging young children in computer programming to develop high-level cognitive skills has suggested that debugging is among the most important actions leading to the development of logical thinking, problem solving, and social interaction skills. Although there have been a significant amount of studies done in this area, the debugging tools and techniques have been developed only as models and instructional methodologies outside of the tool itself. This work presents the design and analysis of debugging abilities embedded into a tangible programming system called Robo-Blocks. Students create a program by connecting physical command blocks, which then wirelessly controls the motion of a floor robot. Debugging is achieved by allowing children to run their program in a step-by-step manner and use passive objects to recognize and identify problems.Keywords:
Algorithmic program debugging
The process of program debugging is essentially an intelligence intensive process. It is thought viable to develop a knowledge-based tool to help programmer perform this process. This paper presents the design of such a system. Unlike other knowledge-based debugging tools which are mostly based on formal program specification and automatic program understanding, this tool is based on debugging heuristic. This tool is a debugging assistant which only suggests the programmer in program debugging what and where to examine using the debugging heuristic stored in the knowledge base. In this paper, a umber of useful heuristic debugging knowledge are explained and their usage in debugging process are described. The, a scheme to organize the knowledge in the knowledge base and an intelligent program debugging assistant using the knowledge are proposed and discussed.
Algorithmic program debugging
Programmer
Cite
Citations (0)
Debugging is a critical step in the development of any parallel program. However, the traditional interactive debugging model, where users manually step through code and inspect their application, does not scale well even for current supercomputers due its centralized nature. While lightweight debugging models, which have been proposed as an alternative, scale well, they can currently only debug a subset of bug classes. We therefore propose a new model, which we call prescriptive debugging, to fill this gap between these two approaches. This user-guided model allows programmers to express and test their debugging intuition in a way that helps to reduce the error space. Based on this debugging model we introduce a prototype implementation embodying this model, the DySectAPI, allowing programmers to construct probe trees for automatic, event-driven debugging at scale. In this paper we introduce the concepts behind DySectAPI and, using both experimental results and analytical modelling, we show that the DySectAPI implementation can run with a low overhead on current systems. We achieve a logarithmic scaling of the prototype and show predictions that even for a large system the overhead of the prescriptive debugging model will be small.
Algorithmic program debugging
Intuition
Cite
Citations (2)
Abstract The sections in this article are Some Definitions Categories of Bugs Preventing Bugs Testing Versus Debugging The Debugging Process Stages of Debugging Debugging Algorithm Debugging Principles Debugging Approaches Use of Debugging Aids Basics of Debuggers Software Engineering Perspective on Debugging Debugging Versus Proving Program Correctness State‐Based Approach to Debugging Debugging of Concurrent Programs Nonfunctional Debugging Conclusion
Algorithmic program debugging
Software bug
Cite
Citations (1)
During the teaching of program debugging.students always have no idea where to begin with.They think program debugging is more difficult than program designing.The article starts with the fields in avoiding the mistakes,the use of program debugging and the techniques of mastering program debugging to present the program debugging.
Algorithmic program debugging
Cite
Citations (0)
Aiming at the debugging difficulty of image processing programming under the condition of Visual C++6.0, without the routine debugging method of single step and breakpoint, the debugging process is visualized and the algorithm process is displayed in the screen dynamically. In this way, not only the debugging is made simple but it is easier to find the error, so as to speed up the debugging of the program.
Algorithmic program debugging
Cite
Citations (0)
The automatic debugging system discussed here is not limited to a specific computer or programming system; it is adaptable to use with most general purpose computer systems. Automatic debugging of programs offers two main advantages. First, the programmer must consider more closely the conditions under which he can state with assurance that his program is in reality debugged. Secondly, automatic debugging can substantially reduce the lead time required between the coding of a complex problem and the achievement of effective production runs.
Algorithmic program debugging
Programmer
Automatic programming
Cite
Citations (3)
One reason debugging is the most time-consuming part of software development is because developers struggle to map their questions about a program's behavior onto debugging tools' limited support for analyzing code. Interrogative debugging is a new debugging paradigm that allows developers to ask questions directly about their programs' output, helping them to more efficiently and accurately determine what parts of the system to understand. An interrogative debugging prototype called the Whyline is described, which has been shown to reduce debugging time by a factor of eight. Several extensions and generalizations to it are proposed, including plans for evaluating their effectiveness.
Algorithmic program debugging
Interrogative
Software bug
Code (set theory)
Cite
Citations (11)
The design of a high-level debugger that tailors optimizations to conform to desired debugging capabilities is presented. In this scheme, debugging requests are specified before program execution and viewed as changes that inhibit optimizations in ways similar to program edits invalidating optimizations. Debugging requests are honored by detecting and temporarily disabling those optimizations that prohibit correct debugging response. An intermediate program representation keeps a history of all optimizations possible prior to debugging. Any modifications to debugging requests are incrementally incorporated into this representation which is then used to generate optimized code tailored to the new desired debugging capabilities. When debugging requests have little effect on optimizations, code closely related to the final optimized code is debugged. Execution time and debugging accuracy are always comparable to debugging unoptimized code as no additional analysis or optimization history is needed at run time.< >
Algorithmic program debugging
Debugger
Code (set theory)
Representation
Cite
Citations (13)
When a program fails to accomplish its intended task, debugging is conducted to identify and remove any bugs. The debugging operation itself is not immune to flaws. Empirical evidence suggests many bugs are found after shipping, which calls into question the effectiveness of the present debugging operation. When failing to accomplish its mission, the debugging operation itself needs to be debugged. Challenging the traditional view on debugging, this paper identifies misdirection and inadequacies of the present program debugging operation. To improve debugging, it critically reviews selected aspects of the debugging operation and the system development life cycle, and explores linkages connecting debugging to other environments (e.g. auditing, business, and education). Suggestions for improvement of debugging are made.
Algorithmic program debugging
Cite
Citations (0)
Debugger
Algorithmic program debugging
TRACE (psycholinguistics)
Plug-in
Cite
Citations (0)