# 4 - Bugs
Что можно сделать если часть программы должна работать, но не работает:
- Подышать свежим воздухом и выпить кофе
- Воспринимай bug как интересную енигму, решение которой приносящее хорошее настроение занятие*
- Проверить при каких условиях баг возникает, а когда нет (Некое подобие bsearch) *****
- Подробно записать его сущность
- Выписать вероятные причины возникновения
- Составить четкий план действий
- Трассировка*
- ЧТО? КОГДА? ГДЕ? ПОЧЕМУ? КАК?
- Разные цвета, установка рамок, &ca.
- Прочитать программу по порядку (даже если и так знаешь что там происходит!)*
- Прототип
- Backup и переписать с нуля
- Проверить каждую составную часть
- Проверить их взаимодействие
- Поменять входные данные
- Хорошо если есть с чем сравнить. При пошаговом отслеживании можно найти место, в котором что-то не так.*
- Другой человек - другой подход
- Проверить, не искажен ли резуьтат другим местом кода
- Поменять порядок вызова функций
- Backup и переписать с нуля совсем по другому
- Получил сообщение об ошибке? - Скорми ее gO_Ogle!
- Может на самом деле это не баг, а много багов? **
- Все ли ресурсы были отданы обратно? Особенно неявные (g2.dispose(), блокировки &са.) *
- Автоматическое исполнение нужных операций
- Полистать доступные методы используемых классов
- Предположить что на самом деле как раз именно это часть все делает правильно
- Спросить в инете
- Найти баг - значит знать какая строчка кода его вызывает и какой байт вывода из-за этого неправелен *
- К сожалению если баг не удаеться воссоздать, это еще не значит что он исправлен. ("Видишь сулика? - а он есть")
P.S.S. * - это сколько раз помогло