Question: gdb implemented support for [reverse debugging](http://en.wikipedia.org/wiki/Reverse_debugging) in 2009 (with gdb 7.0). I never heard about it until 2012. Now I find it extremely useful for certain types of debugging problems. I wished that I heard of it before.

Correct me if I'm wrong but my impression is that the technique is still rarely used and most people don't know that it exists. Why?

Do you know of any programming communities where the use of reverse debugging is common?

Background information:

* [Stackoverflow: How does reverse debugging work?](https://stackoverflow.com/questions/1470434/how-does-reverse-debugging-work)
* gdb uses the term "reverse debugging" but other vendors use other terms for identical or similar techniques:
	+ Microsoft calls it [IntelliTrace](http://msdn.microsoft.com/en-us/library/vstudio/dd264915.aspx) or "Historical Debugging"
	+ There's a Java reverse debugger called [Omniscient Debugger](http://www.lambdacs.com/debugger/), though it probably no longer works in Java 6
	+ There are other Java reverse debuggers
	+ OCaml's debugger (ocamldebug) calls it [time travel](http://caml.inria.fr/pub/docs/manual-ocaml-4.00/manual030.html)

Answer: 
For one, running in debug mode with recording on is **very** expensive compared to even normal debug mode; it also consumes a lot more memory. 

It is easier to decrease the granularity from line level to function call level. For example, the standard debugger in eclipse allows you to "drop to frame," which is essentially a jump back to the start of the function with a reset of all the parameters (nothing done on the heap is reverted, and `finally` blocks are not executed, so it is not a true reverse debugger; be careful about that). 

Note that this has been available for several years now and works hand in hand with hot-code replacement.
From my experience as a sales engineer for TotalView debugger, people do know that it exists but they don't think it works, regardless of the (acceptable or not) slowdown.

University of Cambridge recently did a survey entitled ["Failure to Adopt Reverse Debugging Costs Global Economy $41 Billion Annually"](http://www.prweb.com/releases/2013/1/prweb10298185.htm).

And coming back to GDB, I've heard (a lot) that slowdown makes it quite unusable on a "real-life" application.

I'd personally love to hear back from more people using reverse debugging on applications others than "Hello world!"