# Задача 09 — отладка: найти и исправить дефекты (gdb) В `crash.c` лежит программа, которая падает на части входов и портит память. Задача — не переписать её с нуля, а **найти дефекты отладчиком и починить минимально**. Ожидаемое поведение после починки: - `./crash` (без аргумента) печатает `len=5` и завершается с кодом 0; - `./crash <слово>` печатает `len=<длина слова>` и завершается с кодом 0; - `./crash ""` печатает `len=0` и завершается с кодом 0; - сборка с `-fsanitize=address,undefined` не даёт ни одного сообщения об ошибке. Что сделать: 1. Собрать с отладочной информацией и санитайзерами: `gcc -g -O0 -fsanitize=address,undefined crash.c -o crash` 2. Разобраться, что именно портит память, а что приводит к падению при выходе. Полезно: `gdb ./crash`, `run`, `bt`, `frame`, `info locals`, `watch`. 3. Исправить `crash.c` (минимальные правки, стиль сохранить). 4. Заполнить `answer.txt`: сколько дефектов нашёл, какие именно, какими командами отладчика это подтвердил (по шагам), почему падало именно так. Проверка: `python3 grade.py 09` — компилирует `crash.c` (компилятор C, gcc) с ASAN/UBSAN и прогоняет 5 входов. `answer.txt` проверяется ревью (это часть оценки: важен ход разбора, а не только результат).