Pernosco can trace dataflow backwards in time, from where a variable has an incorrect value back to where that variable was set — instantly. Clicking on a displayed value opens a "dataflow" view showing where the value came from. When the value set was simply copied from some other memory or register location, Pernosco displays the copy step and then automatically continues the explanation by following the source of the copy further backward in time. Helping the user skip over trivial copy steps accelerates the debugging process, especially for move-intensive code like Rust and some modern C++. On the other hand, some moves are important, e.g. "print" functions that copy data into output buffers, and Pernosco has heuristics to highlight those.
Because Pernosco is aware of all program state across all recorded processes, it can even track data backwards through system constructs like pipes and sockets. A data value can be followed through a pair of read and write operations on a socket and back to its ultimate origin.