rr записывает выполнение программы под Linux целиком, а потом проигрывает эту запись сколько угодно раз — с точностью до инструкции. Тот самый неудачный запуск можно пересматривать, ставить точки останова задним числом и двигаться по времени назад.
rr record ./program записывает выполнение вместе со всем, что программа получила извне;rr replay открывает запись в GDB, где работают привычные команды;reverse-cont продолжает выполнение назад — от места падения к причине;watch -l ставит аппаратную точку наблюдения за адресом, после чего можно откатиться к предыдущей записи в него;run проигрывает тот же след заново, сохраняя расставленные точки останова;rr pack делает след самодостаточным, чтобы передать его коллеге;Ограничения честные: только Linux и только на процессорах с подходящими счётчиками производительности. Обычные GDB и LLDB переносимее, но обратной отладки не дают.
10,6 тысячи звёзд. Язык: C++. Лицензия: MIT.
@prog_tools

