#prog
Одной из самых впечатляющих разновидностей программ являются отладчики с записью и перемоткой потока состояния программы, такие, как
rr. Записываешь выполнение программы один раз, сохраняешь на диск — и перезапускаешь сколько угодно раз. Благодаря тому, что путь исполнения записывается целиком, становится возможных
исполнение назад во времени. Конкретно rr выделяется среди подобных отладчиков очень низким оверхедом на запись.
Можно ли сделать лучше? Определённо, да! Идея всезнающего отладчика (Omniscient Debugging) состоит в том, чтобы сохранить запись состояния программы в структурированном виде — в некоторой базе данных — чтобы иметь возможность делать по этому состоянию запросы, т. е. иметь картину исполнения программы целиком, а не только в конкретный момент исполнения. Впервые этот подход был применён в
ODB. К сожалению, этот отладчик работает только на JVM и имеет заметный оверхед на запись состояния (масштаба двух порядков).
Новый отладчик
Pernosco от разработчиков rr использует rr для записи состояния программы с низким оверхедом и сохраняет в структурированном виде, позволяя делать...
Очень много. Серьёзно, посмотрите сами, там колоссальное количество крутых фич. Пожалуй, одна из самых впечатляющих — это возможность инспектировать стеки вызовов программ с оптимизациями (такими, как встраивание функций и элиминация хвостовой рекурсии) и код, над которым поработал JIT-компилятор — то, перед чем пасуют традиционные компиляторы.
К сожалению, отладчик не бесплатный и не с открытым исходным кодом, но авторы уверяют, что уже предоставляют его на коммерческой основе. Учитывая весь набор фич — пожалуй, справедливо.