← Вернуться к карте тем
Alterna · глава 40 · страница 40.1

Трассировка и поиск ошибок

Отладка начинается с воспроизводимого входа, ожидаемого результата и первого шага, где фактическое состояние отличается.

Отладка начинается с воспроизводимого входа, ожидаемого результата и первого шага, где фактическое состояние отличается.

суть и практика11 классОГЭ №6/16ЕГЭ №16/17/23–27
01

Как это устроено

Отладка — это не случайная перестановка строк. Сначала воспроизводят вход, затем находят первое состояние, которое нарушает контракт программы.

Синтаксис. Код не разбирается: пропущен символ, нарушен отступ или структура языка.

Выполнение. Код стартует, но получает исключение: ZeroDivisionError, IndexError, KeyError и другие.

Логика. Программа завершается, но результат нарушает условие.

Сложность. Решение верно на малом входе, но не проходит ограничение времени или памяти.

02

Один пример в исполнении

Запусти короткую программу и переходи по строкам. Визуализатор показывает только код, текущую строку, переменные и вывод.

Минимальный контрпример — самый простой вход, на котором ошибка воспроизводится. Он сокращает трассу и делает причину заметной. assert проверяет предположение прямо в коде: при ложном условии возникает AssertionError. Перед сдачей отладочный print и assert обычно удаляют, если формат вывода должен быть строгим.

Карта алгоритмаЧитай слева направо, затем запускай код.
  1. 1Начало
  2. 2Зафиксировать вход
  3. 3Выполнить одну строку
  4. 4Сравнить с ожидаемым состоянием
  5. 5Найти первый сбой
03

Запомнить

Синтаксис этой страницы
assert condition, message

Останавливает программу с AssertionError, если condition ложно.

len(values)

Позволяет проверить размер данных.

enumerate

Помогает печатать индекс и состояние в диагностической трассе.

print

Временно показывает состояние; не оставляй лишний вывод в строгом формате.

try / except

Перехватывает ожидаемое исключение, но не должен скрывать ошибку контракта.

max

Встроенный максимум; для ручной отладки полезно сравнить с собственным алгоритмом.

return

Возвращает результат для отдельного тестирования функции.