Do I use the wrong definition?: DeFuse: definition-use invariants for detecting concurrency and sequential bugs
Valgrind: a framework for heavyweight dynamic binary instrumentation