debugging

5 posts

Ваша main ветка сломана. Вам нужно перебрать 200 коммитов.

Git bisect превращает ручной поиск коммитов в автоматизированный бинарный поиск. Вот как найти точный коммит, в котором появился баг, не переключаясь на каждый по отдельности.

Ваш CI красный на main, но вчера был зелёный. Где-то между тем и сейчас прокралась бага. Вы могли бы прокрутить 200 коммитов, читая диффы и угадывая. Вы могли…

Ваш трекер ошибок знает, где всё упало. Это не поможет вам воспроизвести баг.

Стектрейсы говорят, где произошёл краш, а не что его вызвало. Вот паттерн захвата и воспроизведения, который превращает продакшен-краши в локальные тест-кейсы, которые можно реально отладить.

Вы точно знаете, где упал продакшен. Стектрейс указывает на строку 147 в . Исключение — на . Вы вытягиваете код, запускаете тесты, всё проходит. Вы бьёте…

Корреляции крашей лгут. Вот как заставить их указывать на реальный баг.

Statistical debugging находит predicates, коррелированные с крашами, но корреляция — это не файл и номер строки. Вот как ранжировать, фильтровать и триангулировать свой путь от корреляционного score к реальному месту бага.

Statistical debugging даёт вам отсортированный список predicates, а не root cause. Вы инструментируете каждую ветку и null check, запускаете сто тысяч…

Statistical debugging должен был покончить с отладкой через printf. Большинство команд так и не заставило его работать.

Statistical debugging обещал точно находить баги, коррелируя поведение программы с отказами. Вот почему эта идея так и не перешла из научных статей в продакшен-системы.

Statistical debugging должен был покончить с эпохой . Инструментируйте ваш код, собирайте трейсы из тысяч прогонов, запускайте корреляционный анализ и…

Как убить выжившего мутанта, когда вы не понимаете, что он изменил

Мутационное тестирование нашло выжившего, и вы понятия не имеете, что делает мутация. Вот пошаговый метод написания правильного теста без предварительного понимания мутанта.

Ваш отчёт о мутационном тестировании полон выживших, и хотя бы один из них для вас бессмысленен. Инструмент говорит, что он заменил на в строке 47, или…