Proceedings of the 28th International Conference on Software Engineering 2006
DOI: 10.1145/1134285.1134324
|View full text |Cite
|
Sign up to set email alerts
|

Locating faults through automated predicate switching

Abstract: Typically debugging begins when during a program execution a point is reached at which an obviously incorrect value is observed. A general and powerful approach to automated debugging can be based upon identifying modifications to the program state that will bring the execution to a successful conclusion. However, searching for arbitrary changes to the program state is difficult due to the extremely large search space. In this paper we demonstrate that by forcibly switching a predicate's outcome at runtime and… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

1
188
0

Year Published

2008
2008
2023
2023

Publication Types

Select...
4
4
1

Relationship

1
8

Authors

Journals

citations
Cited by 222 publications
(189 citation statements)
references
References 26 publications
1
188
0
Order By: Relevance
“…Nopol [36] only targets conditional expressions, and uses a form of angelic debugging [3], [37] to reconstruct the expected value of a condition in passing vs. failing runs; based on it, it synthesizes a new conditional expression using an SMT solver. SPR [16] also combines condition synthesis with a dynamic analysis of the value each abstract conditional expression should take to make all tests pass, which helps aggressively prune the search space when no plausible repair exists.…”
Section: Related Workmentioning
confidence: 99%
“…Nopol [36] only targets conditional expressions, and uses a form of angelic debugging [3], [37] to reconstruct the expected value of a condition in passing vs. failing runs; based on it, it synthesizes a new conditional expression using an SMT solver. SPR [16] also combines condition synthesis with a dynamic analysis of the value each abstract conditional expression should take to make all tests pass, which helps aggressively prune the search space when no plausible repair exists.…”
Section: Related Workmentioning
confidence: 99%
“…Besides the preceding approaches, Zhang et al [18] explored the effectiveness of three dynamic slicing techniques (data slicing, full slicing and relevant slicing) on fault localization. Their later work [19] proposed the concept of critical predicates, and uses critical predicates with other slicing techniques to locate faults. Different from these automated approaches, our approaches are interactive, which combine the test information and feedback information from the developer in the fault-localization process.…”
Section: Related Workmentioning
confidence: 99%
“…Dynamic compilers are commonly used to speed up interpreted code (e.g., all JVMs are dynamic compilers) and used for on-the-fly program optimizations [2]. Dynamic compilers also have been used to ensure a program does not allow unauthorized control transfers [14], to locate faults by dynamically switching predicates [27], and to perform coverage analysis [18] and impact analysis [4].…”
Section: The Rugrat Testing Processmentioning
confidence: 99%
“…Note that RUGRAT offers more accuracy and benefits than simply changing branch predicates [27] to execute the error handling code. RUGRAT selectively fails a particular call by changing the return value and, possibly, modifying other variables as side effects of the function.…”
Section: Testing For Error Handlingmentioning
confidence: 99%