THESIS
2013
xi, 106 pages : illustrations ; 30 cm
Abstract
Software crash reproduction is a necessary first step for debugging. Unfortunately, crash reproduction
is often difficult and labor intensive. To automate crash reproduction, many approaches have
been proposed including record-replay approaches and post-failure-process approaches. Record-replay
approaches record software executions and reliably reproduce the recorded executions.
However, they usually incur substantial performance overhead, thus, not commonly deployed in
practice. Alternatively, post-failure-process approaches perform analysis on crashes only after
they have occurred. Therefore they do not incur performance overhead. However, existing post-failure-process approaches still cannot reproduce many crashes in practice due to scalability issues
and object creation chall...[
Read more ]
Software crash reproduction is a necessary first step for debugging. Unfortunately, crash reproduction
is often difficult and labor intensive. To automate crash reproduction, many approaches have
been proposed including record-replay approaches and post-failure-process approaches. Record-replay
approaches record software executions and reliably reproduce the recorded executions.
However, they usually incur substantial performance overhead, thus, not commonly deployed in
practice. Alternatively, post-failure-process approaches perform analysis on crashes only after
they have occurred. Therefore they do not incur performance overhead. However, existing post-failure-process approaches still cannot reproduce many crashes in practice due to scalability issues
and object creation challenge. In this paper, we propose an automatic crash reproduction framework
using collected crash stack traces. The proposed approach combines an efficient backward
symbolic execution and a novel method sequence composition approach to generate unit test cases
that can reproduce the original crashes without incurring additional runtime overhead. Our evaluation
study shows that our approach successfully exploited 38 (59.4%) out of 64 crashes in four
open source projects. Among these exploitable crashes, 25 (39.1%) are useful reproductions of
the original crashes to reveal the crash triggering bugs. A comparison study also demonstrates
that our approach can effectively outperform existing crash reproduction approaches.
Post a Comment