Налаживаем отладку или улучшаем свой скилл дебаггинга

Все пишут код, который в какой-то момент крашится. Важно учиться на ошибках и не допускать их. Разбираемся, как улучшить скилл дебаггинга.

log-trouble

Один из самых неблагоприятных сценариев, с которым вы можете столкнуться, когда ваша программа падает – отсутствие ошибок в логе. Первый шаг – определить, сбой происходит во время старта или в рантайме. Это можно сделать, распечатав в консоли что-либо произвольное из разных участков кода.

Если вы не видите сообщения журнала, программа, скорее всего, аварийно завершается при старте из-за проблем со сборкой или зависимостями.

Если вы видите свое сообщение, то снова размещайте произвольный вывод в консоль ближе к предположительным местам сбоя. Затем все, что вам нужно сделать – увидеть, какие сообщения напечатались.

Эксепшены, связанные с фронтэндом, обычно отображаются в UI или консоли разработчика. Иногда эти сообщения видны на сервере – в терминале или в логах. Независимо от того, где происходят эти ошибки, новички слишком растеряны из-за сбоя, чтобы смотреть в логи.

Это основная причина того, почему отладка занимает много времени у большинства разработчиков. Уделяйте особое внимание ошибкам и логам, читайте их внимательно погружаясь в каждую строку сообщения.

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

tracing

Трассировка – это отслеживание потока данных программы. Написание «трассирующих блоков» во всех функционально важных кусках кода помогает упростить процесс дебага. Данный тип логгирования облегчает отслеживание выполнения программы во время работы приложения.

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

Модульные тесты сильно помогают обнаружить большое количество ошибок. Чаще всего работающий код ломается после рефакторинга при низком тестовом покрытии, что свидетельствует об отсутствии автоматического тестирования.

Если не удается определить основную причину проблемы, необходимо использовать метод исключения. Закомментируйте новые блоки кода, чтобы увидеть, прекратятся ли ошибки. Такой подход к диагностике кода поможет приблизиться к источнику проблемы.

скилл дебаггинга

Часто разработчики бездумно используют код из интернета, не понимая, что он делает. Это плохая привычка. Важно обращать внимание на то, что происходит в вашем приложении.

Когда задаете вопрос на StackOverflow или других ресурсах, пытайтесь качественно сформулировать его, и в конечном счете ответ сам придет.

Если у вас есть команда, используйте метод «второй пары ушей» – разговаривайте с коллегами и ответ не заставит себя долго ждать. Это подстегивает задуматься над решением.

Считается, что один из самых успешных методов отладки – это снова и снова пытаться повторно реализовать определенный функционал с нуля. Это заставляет вас находить потенциальные проблемы, воссоздавая реализацию.

Если вы изолируете симптомы сбоя в определенной области, можно начать подниматься по стеку вызовов для проверки всех переменных и ожидаемых значений. Это может быстро привести к обнаружению частей программы, в которых происходит непредвиденное поведение.

Лучший вклад в скилл дебаггинга, который вы можете внести, – это научиться пользоваться отладчиком. Все IDE поставляются с мощными отладчиками. Они позволяют остановить выполнение приложения при запуске или в любой другой части кода. Есть также масса сторонних инструментов для отладки, если по каким-то причинам встроенный вам не нравится.

Оригинал

proglib.io

Добавить комментарий

Ваш e-mail не будет опубликован.

20 − семь =