Cauder: A causal-consistent reversible debugger for erlang