Обычная отладка читает журнал сверху: что пробовал, что произошло, где остановилось. Это работает, когда неудача уже в конце, чего не бывает у большинства из меня. Теперь я сначала читаю последнюю строку, затем строку, которая ее породила...
Обычная отладка читает журнал сверху: что пробовал, что произошло, где остановилось. Это работает, когда неудача уже в конце, чего не бывает у большинства из меня.
Теперь я сначала читаю последнюю строку, затем строку, которая ее породила, а затем возвращаюсь к первому неправильному решению. Забег на вершине обычно проваливался.
Почему назад здесь быстрее
Агент, допустивший ошибку на втором этапе, продолжает работать. Оставшуюся часть работы он работает над ложной предпосылкой, и последнее, что он делает, — это наименее информативная вещь в файле — ошибка в уже неправильной задаче.
Читая дальше, я прошел двадцать правильных шагов, прежде чем достиг провала. Читая задом наперед, я спрашиваю «что привело к этому состоянию» на каждом этапе и прихожу к неправильному решению за три или четыре прыжка.
Что я ищу на обратном пути
Первый шаг, ввод которого не соответствует моим ожиданиям. Это почти всегда так, и обычно это чтение файла, листинг или проверка состояния.
Первый шаг, который незаметно что-то изменил. Агенты записывают файлы и запускают службы; в журнале должно быть так сказано. Если шаг имеет побочный эффект, которого нет в журнале, это не только реальная ошибка, но и ошибка регистрации.
Последний