CodeGym /Java блог /Случаен /Отстраняване на грешки в IntelliJ IDEA: ръководство за на...
John Squirrels
Ниво
San Francisco

Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи

Публикувано в групата
Здравейте всички в общността на CodeGym! Днес нека поговорим за отстраняването на грешки — Howво е това и How да отстранявате грешки в IntelliJ IDEA. Тази статия е предназначена за хора, които вече имат минимални познания за Java Core. Няма да има рамки or сложни proceduresи за публикуване на библиотеки. Спокойна разходка. Така че настанете се удобно и да започваме! Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 1

Защо имате нужда от режим за отстраняване на грешки

Нека веднага да изясним нещо за себе си: няма code без грешки... Просто така работи животът. Така че не трябва да се разпадаме на парчета и да се отказваме, ако нашият code не работи Howто очакваме. Но Howво да правим? Е, можем да поставим System.out.printlnизрази навсякъде и след това да претърсим изхода на конзолата с надеждата да открием грешка. Въпреки това можете (и хората го правят) да отстранявате грешки, като използвате внимателно регистриране. Но ако можете да стартирате codeа си на локална машина, по-добре е да използвате режима за отстраняване на грешки . Искам веднага да отбележа, че в тази статия ще разгледаме отстраняването на грешки в проект с помощта на IntelliJ IDEA.

Какво представлява режимът за отстраняване на грешки?

Режимът за отстраняване на грешки е за отстраняване на грешки (проверка) на работещ code. Позволява ви да спрете изпълнението на определени места и да видите How се развиват нещата. Позволява ви да разберете състоянието на програмата на определено място в codeа. Това е като да можеш да спреш часовника и да погледнеш всичко отстрани. Готино, нали? Нашата цел е бързо и лесно да се научим How да отстраняваме грешки в applications с помощта на нашата любима среда за разработка IntelliJ IDEA.

Какво ви трябва, за да започнете отстраняване на грешки

Ето няколко безплатни съвета: докато четете тази статия, направете всичко, което ще бъде описано тук - имате всичко, което трябва да направите, за да следвате. От Howво имаш нужда:
  1. IntelliJ IDEA version 2019.3.1 or по-нова. В случай, че някой няма това, ето връзка, от която можете да го изтеглите . Изтеглете Community Edition — това е versionта, която ще използвам.
  2. Клонирайте този GitHub проект и го импортирайте чрез IDEA.
Отворете IDEA: Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 2Изберете проекта за представяне на грешки и натиснете OK . След това ще видите следния прозорец: Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 3Оставете избраните опции: Импортиране на проект от външни източници и Maven . Щракнете върху Готово . Сега, след като импортирахме проекта, можем да опишем останалата част от процеса с жив пример.

Само малко теория... обещавам :D

За да започнете дори малко да отстранявате грешки, трябва да разберете Howво е точка на прекъсване и да сте запознати с няколко горещи клавиша. Точката на прекъсване е специален маркер, който показва къде искате да спре изпълнението на приложението, вероятно въз основа на състоянието на приложението. Можете да зададете точка на прекъсване or като щракнете с левия бутон върху левия страничен панел, or като щракнете върху местоположението на codeа и натиснете Ctrl+F8 . Нека разгледаме три типа точки на прекъсване: точки на прекъсване на линия, точки на наблюдение на поле и точки на прекъсване на метод. Ето How изглежда:
  • На линия:

    Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 4

    Ако дадено изявление има ламбда израз, тогава IDEA ви подканва да изберете дали да поставите точката на прекъсване върху целия израз or конкретно върху ламбда израза:

    Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 5
  • По метод:

    Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 6
  • В клас:

    Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 7
Точките на прекъсване могат да бъдат премахнати, като следвате същите стъпки, използвани за добавянето им. Има ситуации, когато ще искате да ги деактивирате (заглушите). За да направите това, намерете Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 8иконата в раздела за отстраняване на грешки. Това ще заглуши всички точки на прекъсване. За да видите Howви точки на прекъсване са зададени, можете or да отидете в секцията за отстраняване на грешки в долния ляв ъгъл и да намерите иконата Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 9, or да натиснете Ctrl+Shift+F8 : Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 10Преминавайки към списъка с точки на прекъсване, ще видим следното: Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 11Има две точки на прекъсване тук:
  • Bee.java:24 — в класа Bee на ред 24
  • Main.java:14 — в главния клас на ред 14
Моля, обърнете внимание, че тези точки на прекъсване няма да бъдат зададени автоматично, ако сте клонирали проекта: ще трябва да ги зададете сами! Има и раздел Точки на прекъсване на изключения в Java . Много е полезно. Тук можете да добавите неявна точка на прекъсване, така че програмата да спре, преди да хвърли изключение or конкретно изключение. Ще добавим неявна точка на прекъсване за RuntimeException. Това се прави лесно. Намерете иконата "+" в горния ляв ъгъл. Щракнете върху него и изберете Точки на прекъсване на Java Exception : Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 12В прозореца, който се показва, напишете името на изключението, което искате да добавите, изберете от списъка и щракнете върху OK : Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 13Това приключва нашия пример за това How да настроим нещата, така че сега ние ще продължа с малко практика.

Хайде да направим това нещо, наречено отстраняване на грешки!

Произхождам от дълга линия семейни пчелари, така че проектът, който създадох, за да илюстрирам отстраняването на грешки, описва модели на процеса на събиране на нектар от пчелите, преработване на нектар в мед и след това получаване на мед от пчелния кошер. Според file README на documentацията , който може да бъде намерен в основната директория на проекта, очакваното поведение на всички цветя, от които се събира нектар, е количеството събран мед (което е под формата на двойно ) да бъде равно на половината от събрания нектар. Проектът има следните класове:
  • Пчела — обикновена пчела работничка
  • BeeQueen — пчелната майка
  • BeeHive — кошерът
  • HoneyPlant — медоносно растение (източник на нектар), от което се събира нектар
  • Основен — това е мястото, където намираме public static void main(), методът, от който започва изпълнението.
Ако изпълним main()метода, тогава откриваме, че нашата програма не само не изчислява количеството мед, но също така хвърля изключение... Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 14Трябва да проучим и да определим Howъв е проблемът. От стека за проследяване в долния десен ъгъл можем да видим, че в RuntimeException е хвърлено при HoneyPlant.java:20: Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 15Точно за това говорихме по-горе. Нека наблюдаваме това RuntimeException, като стартираме main()метода в режим на отстраняване на грешки. За да направите това, щракнете върху зелената триъгълна стрелка в IntelliJ IDEA до метода main(). Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 16В резултат на това програмата ще бъде спряна в момента точно преди изключението да бъде хвърлено и ще видим тази икона: Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 17Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 18За да получим цялата налична информация, трябва да погледнем в раздела за отстраняване на грешки. Има променливипанел, който показва всички променливи, налични в тази част на приложението:
  • нектар = 1,0;
  • нектарен капацитет = -1.0.
Изключението има смисъл, защото едно медоносно растение не може да има отрицателно количество нектар. Но защо се случва това? В края на краищата в редове 15-17 проверяваме дали запасът от нектар е изчерпан и връщаме нула, ако е:

	if (nectar == 0) {
   	     return 0;
}
Но проблемът е, че проверяваме грешната променлива. Това е грешка в codeа. Вместо да проверява наличното количество нектар в цветето (което се съхранява в променливата nectarCapacity ), програмата проверява стойността на параметъра за нектар на метода , което е количеството нектар, което искаме да вземем от цветето. Ето го! Първият ни бъг! След като поправим това, получаваме следния code:

	if (nectarCapacity == 0) {
   	     return 0;
}
Сега стартирайте main()метода по нормалния начин (Run 'Main.main()'). Няма изключение и програмата работи: Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 19Приложението се изпълнява до завършване и дава следния отговор:

"33.0 honey was produced by 7 bees from 2 honey plants"
Сега всичко би било наред, но този отговор е неправилен... Според file README на documentацията , нектарът се превръща в мед в съотношение 2 към 1:

## Documentation
Presentation based on honey production.

**Note**: 2 units of nectar = 1 unit of honey
Основният метод явно има две медоносни растения съответно с 30 и 40 единици нектар. Така че в крайна сметка трябва да имаме 35 единици мед. Но програмата ни казва, че получаваме 33. Къде отидоха другите две единици? Нека разберем! За да направите това, задайте точка на прекъсване в Main.main()метода на ред 28, където beeHive.populateHoney()се извиква и стартирайте main()метода в режим на отстраняване на грешки: Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 20Ще разгледаме тази точка по-подробно. Програмата спря да се изпълнява, преди да изпълни ред 28. В долната част виждаме секцията Debug, която показва цялата налична информация за работещото приложение. Както вече споменахме, прозорецът Variables съдържа всички променливи и обекти, налични от тази част на приложението. Панелът Frames показва стъпките, през които преминава приложението — можете да разгледате предишните стъпки (кадри) и да видите всички локални данни. За да продължите да изпълнявате програмата, можете да натиснете F9 or зелената икона, Howто е показано по-долу: Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 21За да спрете програмата, щракнете върху червения квадрат: Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 22За да рестартирате приложението в режим на отстраняване на грешки, щракнете върху стрелката: Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 23Освен това можете да продължите през приложение стъпка по стъпка с помощта на два ключа:
  • F8 — Преминава през codeа, без да навлиза в методите;
  • F7 — Преминаване през codeа и преминаване към методите.
В нашия случай трябва да натиснете F7, за да влезете в beeHive.populateHoney()метода. Влизайки в него, получаваме: Отстраняване на грешки в IntelliJ IDEA: ръководство за начинаещи - 24Сега ще използваме F8 , за да преминем през този метод и да опишем Howво се случва в него:
  • Ред 25 — Stream API се използва за събиране на нектар от всички пчели
  • Ред 26 — Новосъздаденият мед се добавя към съществуващия мед;
  • Ред 27 — за майката се отделят 2 единици мед
  • Ред 28 — Тези две единици се премахват от общото количество мед
  • Ред 29 — Кралицата яде този мед.
Значи там отидоха двете липсващи единици! ура! След разговор с бизнес анализатор заключаваме, че файлът README на documentацията съдържа грешка и трябва да бъде актуализиран. Нека актуализираме file README:

## Documentation
Presentation based on honey production.

**Note**:
* 2 units of nectar = 1 unit of honey
* The queen bee eats 2 units of honey every time when beehive is replenished with honey.
Ние сме готови. Поправихме всички грешки, които открихме. Можем спокойно да продължим със самодоволна визия, да отпием малко кафе и да четем статии в Stack Overflow CodeGym :)

Нека да обобщим

В тази статия научихме:
  • работата на всеки има грешки и отстраняването на грешки е чудесен начин да ги коригирате
  • Howво е точка на прекъсване и Howви видове точки на прекъсване има
  • How да зададете точка на прекъсване на изключение
  • How да преминете през code в режим на отстраняване на грешки

Статия за четене

Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION