CSI: Haskell: Fault-Localization in Lazy Languages using Runtime Tracing
Fault-localization is an important element in software debugging. Establishing the chain of events that led to the failure is an effective way to investigate and fix bugs. However, error reporting focuses on error values being \emph{produced}, whereas it is often the case that faults stems from the data being \emph{consumed} being wrong. In non-lazy languages, the origin of the consumed data can be hard to realize, requiring sophisticated data-flow analysis. In lazy languages however, data being consumed is often unevaluated until right before the error! By extending GHC’s Haskell Program Coverage with CSI: Haskell, we can trace recently evaluated locations and establish where the data being consumed originates. This lets us establish the chain of events and locate the origin of the fault.
Matthías Páll Gissurarson is a PhD student at Chalmers University of Technology. His interests include functional programming, typed-holes, program synthesis, compilers, security, and repair.