I've been looking at the idea of developing a Time Travel Debugger utility.
It would take a debug target and have a few options such as stack depth and disclude system code.
The debugger would either be started from an external tool, or triggered from a line of code inserted into a method that I want to record.
The debugger would execute the code from start to end and record the full stack on each step to the configured depth.