У GDB есть новая версия, которая поддерживает обратную отладку (см. http://www.gnu.org/software/gdb/news/reversible.html). Мне интересно, как это работает.
Чтобы получить обратную отладочную работу, мне кажется, что вам нужно сохранить все состояние машины, включая память для каждого шага. Это сделало бы производительность невероятно медленной, не говоря уже об использовании большого количества памяти. Как решаются эти проблемы?