Ru
08.02.2023 13:59

Что такое дебаггинг? Руководство для начинающих на 2023 год

News image

Привет!

Всем нам знакомо это чувство. Вы следуете учебнику на YouTube и кодируете. Ваш код работает так, как ожидалось. Затем, в какой-то момент обучения, вы замечаете, что получаете результат, отличный от результата учителя. Но вы следовали за ним и написали каждую строчку кода так же, как и он! Откуда взялась ошибка?

Вы перематываете видео и удаляете последний код. Затем вы переписываете последнюю часть – та же ошибка. Вы чувствуете, как внутри нарастает разочарование. К счастью, в видео на YouTube есть репозиторий Github, к которому вы можете обратиться.

Вы заходите на URL репозитория и проверяете свой код. И тут вы видите это – пропущенную точку с запятой! Вы чувствуете себя счастливым, но немного глупым.

То, что вы сделали, называется «дебаггинг» – поиск ошибок в вашем коде. Если вы заинтересованны в изучении веб-разработки, то мы советуем вам обратить свое внимание на курс от образовательной платформы Netology «Веб-разработчик с нуля».

Вы научитесь программировать на JavaScript и PHP – сможете создавать сайты и веб-приложения, соберёте портфолио из 9 проектов, сможете начать работать по специальности уже через 6 месяцев обучения.

Что такое дебаггинг?

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

Программа – это набор «инструкций», которые указывают компьютеру, что ему нужно делать. Например, когда вы загружаете компьютер и нажимаете на браузер, такой как Google Chrome, он открывается.

Программист написал инструкции для компьютера, которым он должен следовать каждый раз, когда кто-то нажимает на значок браузера. Почему исправление ошибок в программе называется «дебаггинг»? Давайте совершим прогулку в прошлое.

Краткий взгляд на историю

Термин «баг» ранее использовался для описания механических неисправностей. Первым человеком, который использовал его для обозначения проблем с вычислительной техникой, была адмирал Грейс Мюррей Хоппер в 1940-х годах.

Она работала в военно-морском флоте, была пионером компьютерной техники и работала над компьютерами Mark II и Mark III. Мюррей Хоппер впервые использовала этот термин, когда она и ее команда обнаружили внутри своего компьютера моль, которая мешала его работе. Таким образом, термин имеет очень буквальное происхождение!

Типы ошибок

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

Синтаксические ошибки

Синтаксис относится к «правилам», которые определяют язык программирования. Синтаксические ошибки, следовательно, являются результатом «нарушения» «правил» языка программирования.

К синтаксическим ошибкам относятся опечатки или пропуск точки с запятой.

Логические ошибки

Логическая ошибка возникает, когда ваша программа работает не так, как должна. Тем не менее, программа может выполняться.

Ошибки времени выполнения

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

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

Фух! Это было много новых понятий! Теперь, когда мы ответили на вопрос «Что такое отладка?», давайте узнаем о различных ее видах.

Типы отладки

Отладку можно в основном разделить на два типа: реактивную и проактивную. Давайте копнем глубже и узнаем о них немного больше.

Реактивная отладка

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

Проактивная отладка

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

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

Несколько слов об удаленной отладке

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

Удаленная отладка – это когда вы находите ошибки в приложении, которое не работает на вашем локальном компьютере. Насколько это круто? Мы более подробно рассмотрим типы отладки, когда будем говорить о методах.

Пять шагов отладки

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

Давайте обсудим пять простых шагов для этого:

Шаг 1: Соберите информацию об ошибке

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

Еще одна вещь, которую вам необходимо делать, - это читать сообщения об ошибках и пытаться понять их.

Если вы работаете с какими-либо данными, например, пользовательскими, проверьте и их. Возможно, вы забыли выполнить проверку достоверности данных.

Шаг 2: Изолировать ошибку

На этом этапе цель состоит в том, чтобы попытаться определить источник ошибки. Возможно, вам придется «воссоздать» ошибку, чтобы узнать, когда она возникает. Можно также закомментировать часть кода и продолжать проверять, какая часть программы может быть причиной ошибки.

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

Шаг 3: Определите ошибку

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

Шаг 4: Определите, как исправить ошибку

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

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

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

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

А теперь, когда у нас есть ChatGPT, вы также можете попросить его помочь вам найти ошибку в вашем коде и как ее исправить.

Шаг 5: Применить и протестировать

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

Иногда вы не можете понять, как исправить ошибку, несмотря на все ваши усилия и даже усилия ваших коллег. В таких ситуациях вам придется довольствоваться обходным решением, которое позволит сохранить работоспособность программы, пока вы продолжаете искать способы полностью избавиться от ошибки.

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

Методы отладки

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

Активная отладка

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

Добавление операторов печати

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

Использование отладчика

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

Некоторые IDE (интегрированные среды разработки) и текстовые редакторы имеют встроенные отладчики. IDE и текстовые редакторы – это просто большие слова для обозначения места, где вы пишете свой код. Некоторые IDE и текстовые редакторы включают Atom, Visual Studio Code (VS Code), Android Studio, PyCharm или Arduino IDE.

IDE или текстовый редактор, который вы используете, зависит от языка, на котором вы пишете программу, или от платформы, для которой вы создаете программу – веб, Android, iOS или даже IoT.

VS Code, например, имеет встроенный отладчик, который поможет вам найти ошибки в приложениях Node.js. Он также работает с JavaScript, TypeScript и другими языками, которые могут быть преобразованы в JavaScript. Для других языков вам потребуется установить расширения из VS Code Marketplace.

Использование точек остановки

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

Это буквально «пауза» в коде, чтобы вы могли найти ошибки.

Вы можете добавить точки останова в IDE, текстовом редакторе или даже в инструментах разработчика вашего браузера (в Chrome это можно сделать, нажав F12 в Windows и Linux, и Cmd + Opt + I в macOS).

Написание тестов

Все техники, которые мы рассмотрели до сих пор, можно отнести к категории «реактивной отладки». Написание тестов – это проактивная отладка.

При написании тестов разработчики пишут простую программу, которая имитирует действия более крупной программы. Эта программа и называется «тестом».

Затем они запускают ее (используя библиотеку типа Mocha или Jasmine для JavaScript), чтобы увидеть все ошибки, которые могут возникнуть. Затем ошибки исправляются до тех пор, пока код не заработает. По сути, вы создали «пример» кода, который вы должны написать.

Разработчики должны писать тесты еще до того, как они начнут писать код. Это стандартная практика. На начальном уровне вы будете писать в основном модульные тесты. Проактивная отладка не является надежной, поэтому нам все еще нужны методы реактивной отладки.

Подведение итогов

В этой статье мы подробно ответили на все вопросы о том, что такое отладка. Мы рассмотрели ее происхождение, три основных типа ошибок, которые вы можете обнаружить, и даже два основных типа отладки.

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

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

До новых встреч!


0 комментарии