1) Back-in-time debuggers record an execution's complete history to provide more context than a standard call stack when debugging errors. However, this large amount of data can slow programs and overwhelm developers.
2) Flow-centric debugging visualizes object flows through an execution to help developers understand where objects originate. It maps object flows to the execution trace to aid root cause analysis.
3) The Compass debugger implements flow-centric debugging by tracking object flows during program execution and providing a frontend that surfaces this flow data to help developers navigate traces and pinpoint bugs.