I’m not sure why, but one of the most slept-on techniques I know of is “reversible debugging”, or time-travel debugging (TTD). The idea has been around for quite a while, but it seems the best free way to experiment with it is using the venerable windbg.