> For the complete documentation index, see [llms.txt](https://interlink.gitbook.io/process/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://interlink.gitbook.io/process/dev/development/debugging.md).

# Отладка

**Отладка расчетных функций**

Сложность отладки многоуровневых расчетных функций заключается в том, что данные проходят множество трансформаций и даже если заметна ошибка в результате не всегда понятно на какой именно фазе обработки она возникла. Для идентификации точки возникновения проблем используют: Условия срабатывания точек отладки (conditional breakpoints) которые поддерживают некоторые IDE; Отладка с использованием конструкций if (условие) внутри которой ставится точка остановки. Добавляя условия и перемещая точки отладки в разные уровни программы сможете сужать количество возможных вариантов и локализуете ошибку.

Помните, что лучше всего разрабатывать подобные алгоритмы при помощи тестов. Тестирование, в частности TDD, при правильном его использовании позволяет полностью отказаться от процесса отладки в силу того, что при использовании этого подхода вы всегда решаете только одну конкретную задачу (сфокусированы прохождение условия неработающего теста) в том время как другие тесты проверяют отсутствие деградаций.

Особенности реализации в некоторых языках могут усложнять отладку. Некоторые реализации хешей (например в Go) возвращают значение при циклическом проходе [в случайном порядке](https://golang.org/doc/go1#iteration).

#### **Отладка последовательности перерисовки элементов в UI фреймворках**

Repaint Rainbow - функция отладки приложения которая выделяет цветами перерисовываемые элементы экрана; Позволяет идентифицировать и оптимизировать места в которых происходит нежелательная перерисовка (refresh) элементов экрана.

**Отладка JavaScript/TypeScript в браузере**

Для активации режима отладки в браузере при использовании транспиляторов (например TypeScript) или полифилов необходимо подключить Source Maps. Для включение режима отладки в IDE JetBrains необходимо в режиме отладки добавить и настроить конфигурацию JavaScript Debug которая запустит браузер в режиме отладки, сам веб сервис может быть запущен параллельно из любой среды выполнения (поддержка отладки со стороны сервера не требуется).
