CodeGym/Java Blog/무작위의/IntelliJ IDEA의 디버깅: 초보자 가이드
John Squirrels
레벨 41
San Francisco

IntelliJ IDEA의 디버깅: 초보자 가이드

무작위의 그룹에 게시되었습니다
회원
CodeGym 커뮤니티의 여러분 안녕하세요! 오늘은 디버깅에 대해 이야기해 보겠습니다. 디버깅이란 무엇이며 IntelliJ IDEA에서 디버깅하는 방법입니다. 이 문서는 이미 Java Core에 대한 최소한의 지식이 있는 사람들을 대상으로 합니다. 라이브러리를 게시하기 위한 프레임워크나 복잡한 절차가 없습니다. 여유로운 산책. 그러니 편안하게 쉬고 시작합시다! IntelliJ IDEA에서 디버깅: 초보자 가이드 - 1

디버그 모드가 필요한 이유

버그가 없는 코드는 없습니다... 이것이 인생이 작동하는 방식입니다. 따라서 코드가 예상대로 작동하지 않는다고 해서 산산조각이 나거나 포기해서는 안 됩니다. 하지만 우리는 어떻게 해야 합니까? 글쎄, 우리는 모든 곳에 명령문을 넣은 System.out.println다음 오류를 찾기 위해 콘솔 출력을 샅샅이 뒤질 수 있습니다. 즉, 신중한 로깅을 사용하여 디버깅할 수 있습니다. 그러나 로컬 컴퓨터에서 코드를 실행할 수 있다면 디버그 모드를 사용하는 것이 좋습니다 . 이 기사에서는 IntelliJ IDEA를 사용하여 프로젝트를 디버깅하는 것을 고려할 것입니다.

디버그 모드란 무엇입니까?

디버그 모드는 실행 중인 코드를 디버깅(확인)하기 위한 모드입니다. 지정된 장소에서 실행을 중지하고 진행 상황을 확인할 수 있습니다. 코드의 특정 위치에서 프로그램의 상태를 이해할 수 있습니다. 시계를 멈추고 옆에서 모든 것을 볼 수 있는 것과 같습니다. 멋지죠? 우리의 목표는 사랑하는 IntelliJ IDEA 개발 환경을 사용하여 애플리케이션을 디버깅하는 방법을 빠르고 쉽게 배우는 것입니다.

디버깅을 시작하기 위해 필요한 것

다음은 몇 가지 무료 조언입니다. 이 기사를 읽는 동안 여기에 설명된 모든 작업을 수행하십시오. 따라야 할 모든 작업이 있습니다. 필요한 것:
  1. IntelliJ IDEA 버전 2019.3.1 이상. 누군가 이것을 가지고 있지 않은 경우 다운로드할 수 있는 링크가 있습니다 . Community Edition을 다운로드하십시오. 제가 사용할 버전입니다.
  2. 이 GitHub 프로젝트를 복제 하고 IDEA를 통해 가져옵니다.
IDEA 열기: debug-presentationIntelliJ IDEA에서 디버깅: 초보자 가이드 - 2 프로젝트를 선택 하고 확인을 누릅니다 . 그러면 다음 창이 표시됩니다. 선택한 옵션을 그대로 둡니다. 외부 소스 및 Maven 에서 프로젝트 가져오기 . 마침 을 클릭합니다 . 이제 프로젝트를 가져왔으므로 실제 예제를 사용하여 프로세스의 나머지 부분을 설명할 수 있습니다. IntelliJ IDEA에서 디버깅: 초보자 가이드 - 3

약간의 이론... 약속합니다 :D

디버깅을 조금이라도 시작하려면 중단점이 무엇 인지 이해하고 몇 가지 단축키에 익숙해져야 합니다. 중단점은 응용 프로그램 상태에 따라 응용 프로그램 실행을 중지하려는 위치를 나타내는 특수 마커입니다. 왼쪽 패널을 마우스 왼쪽 버튼으로 클릭하거나 코드 위치를 클릭하고 Ctrl+F8을 눌러 중단점을 설정할 수 있습니다 . 줄 중단점, 필드 감시점 및 메서드 중단점의 세 가지 유형의 중단점을 살펴보겠습니다. 다음과 같이 표시됩니다.
  • 라인에서:

    IntelliJ IDEA에서 디버깅: 초보자 가이드 - 4

    명령문에 람다 표현식이 있는 경우 IDEA는 중단점을 전체 명령문에 둘지 또는 특별히 람다 표현식에 둘지 선택하라는 메시지를 표시합니다.

    IntelliJ IDEA에서 디버깅: 초보자 가이드 - 5
  • 방법:

    IntelliJ IDEA에서 디버깅: 초보자 가이드 - 6
  • 수업에서:

    IntelliJ IDEA에서 디버깅: 초보자 가이드 - 7
중단점을 추가하는 데 사용한 것과 동일한 단계에 따라 중단점을 제거할 수 있습니다. 비활성화(음소거)하려는 상황이 있습니다. 이렇게 하려면 IntelliJ IDEA의 디버깅: 초보자 가이드 - 8디버그 섹션에서 아이콘을 찾으십시오. 이렇게 하면 모든 중단점이 음소거됩니다. 설정된 중단점을 확인하려면 왼쪽 하단의 디버그 섹션으로 이동하여 아이콘을 찾 IntelliJ IDEA에서 디버깅: 초보자 가이드 - 9거나 Ctrl+Shift+F8을 누릅니다 . IntelliJ IDEA에서 디버깅: 초보자 가이드 - 10중단점 목록으로 이동하면 다음과 같은 내용이 표시됩니다. IntelliJ IDEA에서 디버깅: 초보자 가이드 - 11두 개의 중단점이 있습니다. 여기:
  • Bee.java:24 — 24행의 Bee 클래스
  • Main.java:14 — 14행의 Main 클래스에서
프로젝트를 복제한 경우 이러한 중단점은 자동으로 설정되지 않습니다. 직접 설정해야 합니다! Java 예외 중단점 섹션 도 있습니다 . 매우 유용합니다. 여기에서 암시적 중단점을 추가하여 예외 또는 특정 예외를 발생시키기 전에 프로그램이 중지되도록 할 수 있습니다. RuntimeException에 대한 암시적 중단점을 추가합니다. 이것은 하기 쉽습니다. 왼쪽 상단 모서리에서 "+" 아이콘을 찾습니다. 클릭하고 Java Exception Breakpoints를 선택합니다 . IntelliJ IDEA에서 디버깅: 초보자 가이드 - 12표시되는 창에서 추가하려는 예외의 이름을 쓰고 목록에서 선택한 다음 확인을 클릭합니다 . IntelliJ IDEA의 디버깅: 초보자 가이드 - 13설정 방법에 대한 입문서를 마치므로 이제 ' 몇 가지 연습을 이동합니다.

디버깅이라는 일을 하러 갑시다!

저는 양봉가 집안 출신이기 때문에 디버깅을 설명하기 위해 만든 프로젝트는 꿀벌이 꿀을 모으고, 꿀을 처리하여 벌집에서 꿀을 얻는 과정을 모델로 설명합니다. 프로젝트의 루트 디렉토리에서 찾을 수 있는 문서 README 파일 에 따르면 , 꿀을 수집하는 모든 꽃의 예상 동작은 수집된 꿀의 양( double 형태를 취함 )이 수집한 꿀. 프로젝트에는 다음과 같은 클래스가 있습니다.
  • 벌 — 평범한 일벌
  • BeeQueen — 여왕벌
  • BeeHive — 벌집
  • HoneyPlant — 과즙을 수집하는 꿀 식물(과즙 공급원)
  • public static void main()Main — 실행이 시작되는 메서드인 를 찾는 곳입니다 .
메서드 를 실행하면 main()프로그램이 꿀의 양을 계산하지 않을 뿐만 아니라 예외도 발생한다는 사실을 알게 됩니다. IntelliJ IDEA의 디버깅: 초보자 가이드 - 14문제가 무엇인지 조사하고 확인해야 합니다. 오른쪽 아래 모서리에 있는 추적 스택에서 다음 위치에 RuntimeException이 발생했음을 알 수 있습니다 HoneyPlant.java:20. IntelliJ IDEA의 디버깅: 초보자 가이드 - 15바로 위에서 이야기한 내용입니다. main()디버그 모드에서 메서드를 실행하여 이 RuntimeException을 살펴보겠습니다 . 이렇게 하려면 main()메서드 옆에 있는 IntelliJ IDEA의 녹색 삼각형 화살표를 클릭합니다. IntelliJ IDEA의 디버깅: 초보자 가이드 - 16결과적으로 예외가 발생하기 직전에 프로그램이 중지되고 다음 아이콘이 표시됩니다. IntelliJ IDEA의 디버깅: 초보자 가이드 - 17IntelliJ IDEA의 디버깅: 초보자 가이드 - 18사용 가능한 모든 정보를 얻으려면 디버그 섹션을 살펴봐야 합니다. 변수 가 있습니다응용 프로그램의 이 부분에서 사용할 수 있는 모든 변수를 표시하는 창:
  • 넥타 = 1.0;
  • 과즙 용량 = -1.0.
예외를 던지는 것은 의미가 있습니다. 벌꿀 식물은 마이너스 양의 꿀을 가질 수 없기 때문입니다. 그런데 왜 이런 일이 발생합니까? 결국 15-17행에서 꿀 공급이 소진되었는지 확인하고 다음과 같은 경우 0을 반환합니다.
if (nectar == 0) {
   	     return 0;
}
하지만 문제는 우리가 잘못된 변수를 확인하고 있다는 것입니다. 이것은 코드의 오류입니다. 꽃에서 사용할 수 있는 꿀의 양( nectarCapacity 변수에 저장됨)을 확인하는 대신 프로그램은 메서드의 매개 변수 값(꽃에서 가져오고자 하는 꿀의 양)을 확인합니다. 여기있어! 첫 번째 버그! 이를 수정한 후 다음 코드를 얻습니다.
if (nectarCapacity == 0) {
   	     return 0;
}
이제 main()일반적인 방법으로 메서드를 실행합니다 (Run 'Main.main()'). 예외가 발생하지 않고 프로그램이 작동합니다. IntelliJ IDEA의 디버깅: 초보자 가이드 - 19애플리케이션이 완료될 때까지 실행되고 다음과 같은 답변이 제공됩니다.
"33.0 honey was produced by 7 bees from 2 honey plants"
지금은 모든 것이 괜찮겠지만 이 대답은 틀렸습니다... 문서 README 파일에 따르면 과즙은 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행을 실행하기 전에 실행을 중지했습니다. 하단에는 실행 중인 애플리케이션에 대해 사용 가능한 모든 정보를 표시하는 디버그 섹션이 표시됩니다. 이미 언급한 대로 변수 창에는 응용 프로그램의 이 부분에서 사용할 수 있는 모든 변수와 개체가 포함되어 있습니다. 프레임 창에는 애플리케이션이 진행 중인 단계가 표시됩니다. 이전(프레임) 단계를 보고 모든 로컬 데이터를 볼 수 있습니다. 프로그램을 계속 실행하려면 아래와 같이 F9IntelliJ IDEA에서 디버깅: 초보자 가이드 - 21 또는 녹색 아이콘을 누르십시오. 프로그램을 중지하려면 빨간색 사각형을 클릭하십시오. 응용 프로그램을 디버그 모드에서 다시 시작 하려면 IntelliJ IDEA에서 디버깅: 초보자 가이드 - 22화살표를 클릭하십시오. IntelliJ IDEA의 디버깅: 초보자 가이드 - 23두 개의 키를 사용하여 단계별로 애플리케이션:
  • F8 — 메서드를 실행하지 않고 코드를 실행합니다.
  • F7 — 코드를 단계별로 실행하고 메서드를 단계별로 실행합니다.
우리의 경우 F7 키를 눌러 메서드를 시작해야 합니다 beeHive.populateHoney(). IntelliJ IDEA의 디버깅: 초보자 가이드 - 24이제 F8을 사용 하여 이 메서드를 단계별로 실행하고 그 안에서 일어나는 일을 설명합니다.
  • 25행 — Stream API는 모든 꿀벌로부터 꿀을 수집하는 데 사용됩니다.
  • 26행 — 새로 생성된 꿀이 기존 꿀에 추가됩니다.
  • 27행 — 꿀 2단위가 여왕에게 할당됩니다.
  • 28행 — 이 두 단위는 총 꿀 양에서 제거됩니다.
  • 29행 — 여왕이 이 꿀을 먹습니다.
그래서 두 개의 누락된 유닛이 어디로 갔는지! 만세! 비즈니스 분석가와 이야기한 후 설명서 README 파일에 오류가 있어 업데이트해야 한다는 결론을 내렸습니다 . 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에서 기사를 읽을 수 있습니다 :)

요약하자

이 기사에서 우리는 다음을 배웠습니다.
  • 모든 사람의 작업에는 오류가 있으며 디버깅은 오류를 수정하는 좋은 방법입니다.
  • 중단점이란 무엇이며 중단점의 유형은 무엇입니까?
  • 예외 중단점을 설정하는 방법
  • 디버그 모드에서 코드를 단계별로 실행하는 방법

읽을 기사

코멘트
  • 인기
  • 신규
  • 이전
코멘트를 남기려면 로그인 해야 합니다
이 페이지에는 아직 코멘트가 없습니다