1. Баг
У программистов есть свой сленг, хотя многие считают, что это технический жаргон. В любом случае, вам не избежать ни знакомства с ним, ни детального изучения. Так что начинайте втягиваться.
Одним из первых слов, с которым вы познакомитесь, будет слово баг, от английского bug (жук). Это слово обозначает ошибку в программе, когда программа делает что-то не то или не так. Или просто странно работает.
Однако, если программист считает, что программа, хоть и работает странно, но именно так он и задумывал, обычно заявляет что-то типа «это не баг, это фича». Что породило кучу интернет-мемов.
![](https://cdn.javarush.com/images/article/c4e79517-547f-4ffd-81f1-96ad3e2e3cf5/original.jpeg)
В принципе причина неправильной работы может быть любая: ошибка в логике программы, опечатки, неверная архитектура программы, вплоть до проблем в компиляторе. В любом случае программистам нужно править и настоящие баги, и любые другие «недочеты», которые есть в программе.
История слова bug
Самой распространённой версией происхождения слова баг является такая легенда.
В сентябре 1947 года ученые Гарвардского Университета тестировали один из первых компьютеров — Mark II. Компьютер не работал, и в процессе проверки всех плат они нашли мотылька, застрявшего между контактами электромеханического реле.
Извлеченное насекомое было вклеено скотчем в технический дневник и сопровождено надписью, мол «баг найден и устранен».
Считается, что именно эта смешная история и послужила началом использования слова баг как обозначения ошибки, а слово дебаг (debug) стало синонимом устранения ошибок.
2. Отладка программы
Для устранения багов в своих программах программисты используют специальные программы-отладчики (debugger). Некоторые из этих программ умеют отлаживать даже машинный код.
Java-программисты для отладки (debugging) своих программ используют IDE. Такие как Intellij IDEA, Eclipse и Net Beans. IntelliJ IDEA на сегодняшний день является самой мощной IDE, поэтому мы рассмотрим процесс отладки на ее примере.
Intellij IDEA может запустить вашу программу в двух режимах:
Режимы запуска программы | Иконка на панели | Горячие клавиши |
---|---|---|
Обычное выполнение |
![]() |
Shift +F10 |
Запуск в режиме отладки |
![]() |
Shift +F9 |
С обычным режимом работы вы уже знакомы: программа запустится, отработает и завершится. А вот режим отладки несет для вас немало сюрпризов.
Режим отладки
Режим отладки позволяет пошагово выполнить всю вашу программу. Или правильнее будет сказать, построчно: строка за строкой. При этом вы можете наблюдать значения переменных на каждом шаге программы (после выполнения каждой строки кода). И даже менять их значения!
Чтобы минимально овладеть искусством отладки программы, вам нужно изучить три вещи:
- Точки остановки
- Пошаговое выполнение
- Просмотр значений переменных
3. Точки остановки (Break Points)
IDE позволяет вам разместить в коде специальные метки — точки остановки (break point). Каждый раз, когда программа, запущенная в режиме отладки, будет доходить до строки, отмеченной как break point, она будет становиться на паузу.
Чтобы поставить break point на определенной строке, нужно просто кликнуть в IDEA слева от этой строки. Пример:
![Точки остановки (Break Points)](https://cdn.javarush.com/images/article/64a09fcb-363d-4834-a842-c1967c083acb/original.png)
В результате строка будет отмечена точкой остановки (break point), и Intellij IDEA подсветит ее красным цветом:
![Точки остановки (Break Points) 2](https://cdn.javarush.com/images/article/410bb868-ec89-4a7e-bf4a-391fee43e4f6/original.png)
Повторный клик мышкой на панели слева от кода снимет установленную break point.
Также break point можно просто поставить на текущей строке с помощью горячей комбинации клавиш — Ctrl
+F8
. Повторное нажатие Ctrl
+F8
на строке, где уже есть break point, удаляет ее.
4. Запуск программы в режиме отладки (дебага)
Если у вас в программе есть хотя бы одна точка остановки, вы можете запускать программу в режиме отладки (Shift
+F9
или «иконка с жуком»).
После запуска в режиме отладки программа выполняется как обычно. Но как только она дойдет до выполнения строки кода, помеченного break point, встанет на паузу. Пример:
![Запуск программы в режиме отладки (дебага)](https://cdn.javarush.com/images/article/4e9aa459-e123-4d5e-9eed-9592f6afe369/original.png)
В верхней половине скриншота вы видите код программы с двумя точками остановки. Программа замерла на строке 5 — отмечена синей линией. Строка 5 еще не выполнилась: в консоль еще ничего не выводилось.
В нижней половине экрана вы видите панели режима отладки: панель Debugger, панель Console (вывод на экран), а также набор кнопок для режима отладки.
Вы можете снять вашу программу с паузы (продолжить ее выполнение), если нажмете кнопку Resume Program на панели слева снизу (или нажмете клавишу F9
).
![Запуск программы в режиме отладки (дебага) 3](https://cdn.javarush.com/images/article/31abc1f1-4196-4a6b-84f3-5fed763833b5/original.png)
Если нажать такую кнопку (или F9
), программа продолжит работу, пока не встретит следующую точку остановки или не завершится. Вот что мы увидим после нажатия такой кнопки:
![Запуск программы в режиме отладки (дебага) 4](https://cdn.javarush.com/images/article/e8d645b6-e3b9-4b9c-abd3-badd709a6dfe/original.png)
Программа остановилась на второй точке остановки, а в консоль выведены слова Привет
и И
– признак того, что из трех строк вывода на экран выполнились только две.
5. Пошаговое выполнение
Если ваша программа работает в режиме отладки, вы также можете выполнять ее пошагово: один шаг — одна строчка. Для пошагового выполнения есть две горячие клавиши: F7
и F8
: каждая из них приводит к выполнению текущей строки кода. Но сначала вам нужно будет все же остановить вашу программу с помощью break point.
Если вы хотите выполнять вашу программу построчно, вам нужно поставить break point в самом начале метода main()
и запустить ее в режиме отладки.
Когда программа остановится, вы сможете начать построчное ее выполнение. Одно нажатие клавиши F8
– одна строка.
Вот как будет выглядеть наша программа после остановки и нажатия клавиши F8
один раз:
![Запуск программы в режиме отладки (дебага).Пошаговое выполнение](https://cdn.javarush.com/images/article/01779dc7-bf27-489a-9cbb-d53cff2c90cb/original.png)
Первая строка метода main уже выполнилась, и текущая строка — вторая. Вы также можете видеть в нижней части скриншота, что на экран уже вывелось слово Привет
.
6. Пошаговое выполнение с заходом в методы
Если у вас есть в программе собственные методы, и вы хотите, чтобы в режиме отладки ваша программа не просто выполнялась пошагово, но и заходила внутрь ваших методов, для «захода в метод» вам нужно нажимать не клавишу F8
, а клавишу F7
.
Допустим, вы пошагово выполняете программу и сейчас остановились на 4-й строке. Если вы нажмете кнопку F8
, IDEA просто выполнит четвертую строку и перейдет к пятой.
![Пошаговое выполнение с заходом в методы](https://cdn.javarush.com/images/article/c30966f6-7f59-4b06-80d0-f5f6dd6f0fc8/original.png)
А вот если вы нажмете F7
, IDEA будет пошагово выполнять метод main2()
:
![Пошаговое выполнение с заходом в методы 2](https://cdn.javarush.com/images/article/604000ea-0a28-4d01-875e-a672b0974c45/original.png)
Все очень просто. Если вам не сильно важно, что и как происходит внутри метода, вы нажимаете F8
, если важно — F7
и пошагово выполняете весь его код.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ