Casper: Using Ghosts to Debug Null Deferences with Dynamic Causality Traces
Benoit Cornu · 2015
Fixing software errors requires understanding their root cause. In this paper, we introduce "causality traces'', they are specially crafted execution traces augmented with the information needed to reconstruct a causal chain from a root cause to an execution error. We propose an approach and a tool, called Casper, for dynamically constructing causality traces for null dereference errors. The core idea of Casper is to inject special values, called "ghosts", into the execution stream to construct the causality trace at runtime. We evaluate our contribution by providing and assessing the causality traces of 14 real null dereference bugs collected over six large, popular open-source projects.