Jak działa debugowanie odwrotne?

GDB ma nową wersję, która obsługuje odwrotne debugowanie (patrz http://www.gnu.org/software/gdb/news/reversible.html ). Zacząłem się zastanawiać, jak to działa. Wydaje mi się, że aby uruchomić debugowanie wsteczne, musisz przechowywać cały stan maszyny, w tym pamięć dla każdego kroku....