TY - GEN
T1 - Generating sound and effective memory debuggers
AU - Wang, Yan
AU - Neamtiu, Iulian
AU - Gupta, Rajiv
PY - 2013
Y1 - 2013
N2 - We present a new approach for constructing debuggers based on declarative specification of bug conditions and root causes, and automatic generation of debugger code. We illustrate our approach on several classes of bugs, memory or otherwise. For each bug class, bug conditions and their root cause are specified declaratively, in First-order logic, using 1 to 4 predicates. We employ a low-level operational semantics and abstract traces to permit concise bug specification and prove soundness. To facilitate locating bugs, we introduce a new concept of value propagation chains that reduce programmer burden by narrowing the fault to a handful of executed instructions (1 to 16 in our experiments). We employ automatic translation to generate the debugger implementation, which runs on top of the Pin infrastructure. Experiments with using our system on 7 versions of 4 real-world programs show that our approach is expressive, effective at finding bugs and their causes, and efficient. We believe that, using our approach, other kinds of declaratively-specified, provably-correct, auto-generated debuggers can be constructed with little effort.
AB - We present a new approach for constructing debuggers based on declarative specification of bug conditions and root causes, and automatic generation of debugger code. We illustrate our approach on several classes of bugs, memory or otherwise. For each bug class, bug conditions and their root cause are specified declaratively, in First-order logic, using 1 to 4 predicates. We employ a low-level operational semantics and abstract traces to permit concise bug specification and prove soundness. To facilitate locating bugs, we introduce a new concept of value propagation chains that reduce programmer burden by narrowing the fault to a handful of executed instructions (1 to 16 in our experiments). We employ automatic translation to generate the debugger implementation, which runs on top of the Pin infrastructure. Experiments with using our system on 7 versions of 4 real-world programs show that our approach is expressive, effective at finding bugs and their causes, and efficient. We believe that, using our approach, other kinds of declaratively-specified, provably-correct, auto-generated debuggers can be constructed with little effort.
KW - Debugging
KW - Fault localization
KW - Logic specification
KW - Operational semantics
KW - Runtime monitoring
UR - http://www.scopus.com/inward/record.url?scp=84890514627&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84890514627&partnerID=8YFLogxK
U2 - 10.1145/2464157.2464159
DO - 10.1145/2464157.2464159
M3 - Conference contribution
AN - SCOPUS:84890514627
SN - 9781450321006
T3 - International Symposium on Memory Management, ISMM
SP - 51
EP - 62
BT - ISMM 2013 - Proceedings of the ACM SIGPLAN International Symposium on Memory Management
T2 - ACM SIGPLAN International Symposium on Memory Management, ISMM 2013
Y2 - 20 June 2013 through 20 June 2013
ER -