Results 1 - 10
of
13
Debugging with Dynamic Slicing and Backtracking
- Software Practice and Experience
, 1993
"... this paper we present a debugging model, based on dynamic program slicing and execution backtracking techniques, that easily lends itself to automation. This model is based on experience with using these techniques to debug software. We also present a prototype debugging tool, SPYDER, that explicitl ..."
Abstract
-
Cited by 80 (0 self)
- Add to MetaCart
this paper we present a debugging model, based on dynamic program slicing and execution backtracking techniques, that easily lends itself to automation. This model is based on experience with using these techniques to debug software. We also present a prototype debugging tool, SPYDER, that explicitly supports the proposed model, and with which we are performing further debugging research
A Retargetable Debugger
, 1992
"... Debuggers are specific to the machines, operating systems, and languages that they support. Much of a debugger has to be re-implemented for each new machine, so debuggers that work with a variety of machines and operating systems can get unwieldy. Improvements to debuggers may be lost unless they ar ..."
Abstract
-
Cited by 43 (14 self)
- Add to MetaCart
Debuggers are specific to the machines, operating systems, and languages that they support. Much of a debugger has to be re-implemented for each new machine, so debuggers that work with a variety of machines and operating systems can get unwieldy. Improvements to debuggers may be lost unless they are re-implemented as users move to new machines. If retargeting debuggers were easier, other improvements would be more valuable. This thesis describes the design and implementation of ldb, a prototype retargetable debugger. Dealing with symbol-table formats is one of the most machine-dependent aspects of debuggers. ldb eliminates this machine dependence by using one format on all machines. The format is a language---a dialect of PostScript, which is extensible and can represent procedures. ldb reduces retargeting effort associated with variations in run-time support by controlling its target process using a debug nub, which is a small piece of object code linked with the target program. Mu...
A Dataflow Approach to Event-based Debugging
- Software - Practice and Experience
, 1991
"... This paper describes a novel approach to event-based debugging. The approach is based on a (coarsegrained) dataflow view of events: a high-level event is recognized when an appropriate combination of lower-level events on which it depends has occurred. Event recognition is controlled using familiar ..."
Abstract
-
Cited by 34 (0 self)
- Add to MetaCart
This paper describes a novel approach to event-based debugging. The approach is based on a (coarsegrained) dataflow view of events: a high-level event is recognized when an appropriate combination of lower-level events on which it depends has occurred. Event recognition is controlled using familiar programming language constructs. This approach is more flexible and powerful than current ones. It allows arbitrary debugger language commands to be executed when attempting to form higher-level events. It also allows users to specify event recognition in much the same way that they write programs. This paper also describes a prototype, Dalek, that employs the dataflow approach for debugging sequential programs. Dalek demonstrates the feasibility and attractiveness of the dataflow approach. One important motivation for this work is that current sequential debugging tools are inadequate. Dalek contributes toward remedying such inadequacies by providing events and a powerful debugging language
Towards Automatic Debugging of Computer Programs
, 1991
"... Programmers spend considerable time debugging code. Symbolic debuggers provide some help but the task still remains complex and difficult. Other than breakpoints and tracing, these tools provide little high level help. Programmers must perform many tasks manually that the tools could perform automat ..."
Abstract
-
Cited by 27 (3 self)
- Add to MetaCart
Programmers spend considerable time debugging code. Symbolic debuggers provide some help but the task still remains complex and difficult. Other than breakpoints and tracing, these tools provide little high level help. Programmers must perform many tasks manually that the tools could perform automatically, such as finding which statements in the program affect the value of an output variable under a given testcase, what was the value of a given variable when the control last reached a given program location, and what does the program do differently under one testcase it does not do under another. If the debugging tools provided explicit support for such tasks, the whole debugging process would be automated to a large extent.
A Debugging Tool for Software Evolution
- CASE-95, 7th International Workshop on Computer-Aided Software Engineering
, 1995
"... This paper describes a tool for debugging programs which have been developed using evolutionary software techniques. The tool enhances the traditional debugging approach by automating the comparison of data structures between two running programs. Using this technique, it is possible to use early ve ..."
Abstract
-
Cited by 19 (9 self)
- Add to MetaCart
This paper describes a tool for debugging programs which have been developed using evolutionary software techniques. The tool enhances the traditional debugging approach by automating the comparison of data structures between two running programs. Using this technique, it is possible to use early versions of a program which are known to operate correctly to generate values for comparison with the new program under development. The tool allows the reference code and the program being developed to execute on different computer systems by using open distributed systems techniques. A simple visualisation system allows the user to view the differences in data structures. By using the data flow of the code, it is possible to locate faulty sections of code rapidly. A small case study of finding an error in a scientific code is given. 1. INTRODUCTION The high cost of software development, in combination with advances in software engineering, has caused the emergence of a software development m...
A Debugger for Distributed Programs
, 1994
"... this paper supports dynamic roll back and replay of distributed programs. This feature is implemented entirely at the user level without modifying the operating system kernel, and without using synchronized clocks. DPD also implements a graphical user interface (GUI) that abstracts processes, events ..."
Abstract
-
Cited by 10 (0 self)
- Add to MetaCart
this paper supports dynamic roll back and replay of distributed programs. This feature is implemented entirely at the user level without modifying the operating system kernel, and without using synchronized clocks. DPD also implements a graphical user interface (GUI) that abstracts processes, events, and messages into a graph that helps the user in event analysis. The GUI combined with the dynamic roll back and replay feature provides a powerful tool for finding bugs in a distributed program
Efficient Debugging with Slicing and Backtracking
, 1990
"... Programmers spend considerable time debugging code. Several tools are available to help them in this task, varying from hexadecimal dumps of program state to window- and mouse-based interactive debuggers, but the task still remains complex and difficult. Most of these conventional debuggers provid ..."
Abstract
-
Cited by 5 (1 self)
- Add to MetaCart
Programmers spend considerable time debugging code. Several tools are available to help them in this task, varying from hexadecimal dumps of program state to window- and mouse-based interactive debuggers, but the task still remains complex and difficult. Most of these conventional debuggers provide breakpoints and traces as their main debugging aids. These features have changed little in the past 15--20 years despite the increased complexity of software systems on which debuggers are used. In this paper we present a prototype tool that enables users to follow their "natural" thought process while debugging. It combines dynamic program slicing and execution backtracking techniques in a novel way. With the help of this powerful combination, program bugs may be localized and removed very quickly. Examples are given to show how our debugger may be used, and how it relates to other research in the area. Keywords: program debugging, execution backtracking, reverse program execution...
A Survey of Support For Implementing Debuggers
, 1990
"... The degree to which hardware and operating systems support debugging strongly influences the caliber of service that a debugger can provide. We survey the different forms in which such support is available. We limit our survey to lower-level debugger design issues such as accessing the debugged prog ..."
Abstract
-
Cited by 2 (0 self)
- Add to MetaCart
The degree to which hardware and operating systems support debugging strongly influences the caliber of service that a debugger can provide. We survey the different forms in which such support is available. We limit our survey to lower-level debugger design issues such as accessing the debugged program's state and controlling its execution. The study concentrates on those types of support that make overall debugger performance efficient and that support debugger features for ferreting out hard-to-find bugs. We conclude with an overview of state-of-the-art debuggers and a proposal for a new debugger design.
Apportioning: A technique for efficient reachability analysis of concurrent object-oriented programs
"... The object-oriented paradigm in software engineering provides support for the construction of modular and reusable program components, and is attractive for the design of large and complex distributed systems. Reachability analysis is an important and well-known tool for static analysis of critical ..."
Abstract
-
Cited by 2 (1 self)
- Add to MetaCart
The object-oriented paradigm in software engineering provides support for the construction of modular and reusable program components, and is attractive for the design of large and complex distributed systems. Reachability analysis is an important and well-known tool for static analysis of critical properties in concurrent programs, such as deadlock freedom. It involves the systematic enumeration of all possible global states of program execution and provides the same level of assurance as formal veri cation, for properties of the synchronization structure in concurrent programs. However, direct application of traditional reachability analysis to concurrent object-oriented programs has many problems, such as incomplete analysis for reusable classes (not safe) and increased computational complexity (not ecient). We have proposed a novel technique called apportioning, for safe and ecient reachability analysis of concurrent object-oriented programs, that is based upon a simple ...

