FlowTracker, a Java agent that tracks data flowing through Java programs.
It helps you understand where any program got its output from, what it means, and why it wrote it.
Watch the video or explore the live demo yourself, and read how it works at https://github.com/coekie/flowtracker
For instrumentation, instead of an instrumenting agent it uses a fork of the official Clojure compiler (in Clojure you can easily swap compilers at dev) that adds extra bytecode. What is interesting about recording Clojure programs execution is that most values are immutable, so you can snapshot them by just retaining the pointers.
Edit: Since the OP demo is about exploring a web app for people interested in this topics I'm leaving a demo of FlowStorm debugging a web app also https://www.youtube.com/watch?v=h8AFpZkAwPo