The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
AIDA—a dynamic data flow anomaly detection system for Pascal programs
Software—Practice & Experience
The program dependence graph in static program testing
Information Processing Letters
PELAS-Program Error-Locating Assistant System
IEEE Transactions on Software Engineering
A review of automated debugging systems: knowledge, strategies and techniques
ICSE '88 Proceedings of the 10th international conference on Software engineering
Organized C: A unified method of handling data in CAD algorithms and databases
DAC '90 Proceedings of the 27th ACM/IEEE Design Automation Conference
Static detection of dynamic memory errors
PLDI '96 Proceedings of the ACM SIGPLAN 1996 conference on Programming language design and implementation
Computation of Dynamic Program Slices for Unstructured Programs
IEEE Transactions on Software Engineering
Symbolic pointer analysis for detecting memory leaks
PEPM '00 Proceedings of the 2000 ACM SIGPLAN workshop on Partial evaluation and semantics-based program manipulation
Data Flow Analysis in Software Reliability
ACM Computing Surveys (CSUR)
Programmers use slices when debugging
Communications of the ACM
A practical flow-sensitive and context-sensitive C and C++ memory leak detector
PLDI '03 Proceedings of the ACM SIGPLAN 2003 conference on Programming language design and implementation
Dynamic Detection of Access Errors and Illegal References in RTSJ
RTAS '02 Proceedings of the Eighth IEEE Real-Time and Embedded Technology and Applications Symposium (RTAS'02)
Autonomous Garbage Collection: Resolving Memory Leaks in Long Running Network Applications
IC3N '98 Proceedings of the International Conference on Computer Communications and Networks
Analysis of Dynamic Memory Access using Amorphous Slicing
ICSM '98 Proceedings of the International Conference on Software Maintenance
Redundant computation and its application in software performance analysis
Redundant computation and its application in software performance analysis
HICSS '97 Proceedings of the 30th Hawaii International Conference on System Sciences: Advanced Technology Track - Volume 5
Application of the operational profile in software performance analysis
WOSP '04 Proceedings of the 4th international workshop on Software and performance
Detection of Heap Management Flaws in Component-Based Software
EUROMICRO '04 Proceedings of the 30th EUROMICRO Conference
RCAT: A Performance Analysis Tool
Proceedings of the 19th IEEE international conference on Automated software engineering
An Execution Slice and Inter-Block Data Dependency-Based Approach for Fault Localization
APSEC '04 Proceedings of the 11th Asia-Pacific Software Engineering Conference
Development and Evaluation of a Slicing-Based C++ Debugger
ITCC '05 Proceedings of the International Conference on Information Technology: Coding and Computing (ITCC'05) - Volume II - Volume 02
Application of redundant computation in software performance analysis
Proceedings of the 5th international workshop on Software and performance
Design of HDTS System for Locating Logical Errors in Java Programs
Proceedings of the Fourth Annual ACIS International Conference on Computer and Information Science
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
Application of Computational Redundancy in Dangling Pointers Detection
ICSEA '06 Proceedings of the International Conference on Software Engineering Advances
Knowledge-Based Program Debugging Systems
IEEE Software
Using Redundancies to Find Errors
IEEE Transactions on Software Engineering
Static Data Flow Analysis of PL/I Programs with the PROBE System
IEEE Transactions on Software Engineering
Hi-index | 0.00 |
Programmers spend most of their time and resources in localizing program defects. On the other hand, they commit many errors by manipulating dynamic data improperly, which may produce dynamic memory problems, such as dangling pointer, memory leaks, and inaccessible objects. Dangling pointers can occur when a function returns a pointer to an automatic variable, or when trying to access a deleted object. Inaccessible objects occur when a pointer is assigned to point to another object, leaving the original object inaccessible, either by using the new operator or regular assignment operator. Memory leaks occur when a dynamic data is allocated but never de-allocated. The existence of such dynamic memory problems causes the programs to behave incorrectly. Improper usage of dynamic data is a common defect that is easy to commit, but is difficult to diagnose and discover. In this paper, we propose a dynamic approach that detects different types of program defects including those that occur as a result of misusing the dynamic data in computer programs. Our approach uses the notion of redundant computation to identify the suspicious locations in the program that may contain defects. Redundant computation is an execution of a program statement(s) that does not contribute to the program output. The notion of redundant computation is introduced as a potential indicator of defects in programs. We investigate the application of redundant computation in debugging programs. The detection of redundant computation indicates deficiency that may represent a bug in the program. The results of the experiment show that, the redundant computation detection can help the debuggers to localize the source(s) of the program defects.