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