JavaRush /Java Blog /Random-KO /Intellij IDEA 디버그: 초보자를 위한 가이드
Roman Beekeeper
레벨 35

Intellij IDEA 디버그: 초보자를 위한 가이드

Random-KO 그룹에 게시되었습니다
안녕하세요 여러분, JavaRush 커뮤니티입니다. 오늘은 디버깅에 대해 이야기하겠습니다. 디버깅이 무엇인지, Intellij IDEA에서 디버깅하는 방법은 무엇인가요? Intellij IDEA 디버그: 초보자를 위한 가이드 - 1이 기사는 이미 Java Core에 대해 최소한의 지식만 갖고 있는 사람들을 대상으로 작성되었습니다. 라이브러리 출판을 위한 프레임워크나 복잡한 프로세스는 없습니다. 쉬운 걷기. 그러니 편안하게 생각하시고 시작해 보세요!

디버그가 왜 필요한가요?

버그 없이는 코드가 없습니다... 이것이 인생이 작동하는 방식입니다. 그러므로 코드가 예상대로 작동하지 않는다고 해서 즉시 무기력해지고 모든 것을 포기해서는 안 됩니다. Intellij IDEA 디버그: 초보자를 위한 가이드 - 2하지만 무엇을 해야 할까요? 물론 System.out.println가능한 경우 지시한 다음 오류를 찾을 수 있기를 바라며 터미널의 출력을 긁어볼 수 있습니다. 그래도 가능합니다... 그들은 그렇게 하고 있으며 로깅을 사용하여 신중하게 수행합니다( 여기에서 읽을 수 있습니다 ). 그러나 로컬 머신에서 코드를 실행할 수 있다면 Debug 를 사용하는 것이 더 좋습니다 . 이 기사에서는 Intellij IDEA 내에서 프로젝트 디버깅을 고려할 것이라는 점을 즉시 언급하고 싶습니다. 원격 디버깅에 대해 읽고 싶다면 여기 리소스의 기사를 참조하세요 .

디버그란 무엇인가

Intellij IDEA 디버그: 초보자를 위한 가이드 - 3디버그는 코드를 디버깅(확인)하는 프로세스로, 실행 중에 지정된 위치에서 중지하고 실행 진행 상황을 볼 수 있습니다. 특정 장소의 프로그램 상태를 이해합니다. 마치 삶을 멈추고 모든 것을 외부에서 바라볼 수 있는 것과 똑같다. 멋지죠? 우리의 목표는 우리가 선호하는 개발 환경인 Intellij IDEA를 사용하여 애플리케이션을 디버깅하는 방법을 빠르고 쉽게 배우는 것입니다.

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

나는 무료 조언을 제공합니다. 기사를 읽는 동안 여기에 설명 될 모든 것을 수행하십시오. 다행히 이에 대한 모든 것이 있습니다. 뭐가 필요하세요:
  1. Intellij IDEA 개발 환경 버전 2019.3.1 이상. 혹시 갖고 있지 않은 분이 계시다면, 다운로드할 수 있는 링크를 알려드리겠습니다. 제가 사용할 것이기 때문에 Community Edition을 다운로드하세요.
  2. GitHub에서 프로젝트를 복제 하고 IDEA를 통해 가져옵니다.
IDEA 열기: 디버그 프리젠테이션Intellij IDEA 디버그: 초보자를 위한 가이드 - 4 프로젝트를 선택하고 확인을 클릭하여 다음을 가져옵니다. 외부 소스에서 가져오기 프로젝트인 Maven을 그대로 두고 마침을 클릭합니다 . 프로젝트를 가져온 후에는 실제 사례를 사용하여 프로세스를 설명할 수 있습니다. Intellij IDEA 디버그: 초보자를 위한 가이드 - 5

약간의 이론... 약속해요 :D

디버깅을 조금이라도 시작하려면 breakPoint가 무엇인지 이해 하고 시작하는 데 필요한 몇 가지 단축키를 이해해야 합니다. BreakPoint 는 애플리케이션이 중지되어야 하는 위치나 상태를 표시하는 특수 마커입니다. 왼쪽 사이드바를 마우스 왼쪽 버튼으로 클릭하거나 코드 위치를 클릭하고 Ctrl + F8을 눌러 중단점을 설정할 수 있습니다 . 중단점은 줄당 레이블, 변수당 레이블, 메서드당 레이블의 세 가지 유형으로 제공됩니다. 다음과 같습니다.
  • 줄당:

    Intellij IDEA 디버그: 초보자를 위한 가이드 - 6

    표현식에 람다가 있으면 IDEA는 표현식을 전체 줄에 배치할지 아니면 구체적으로 람다에 배치할지 선택할 수 있는 옵션을 제공합니다.

    Intellij IDEA 디버그: 초보자를 위한 가이드 - 7
  • 방법별:

    Intellij IDEA 디버그: 초보자를 위한 가이드 - 8
  • 수업당

    Intellij IDEA 디버그: 초보자를 위한 가이드 - 9
중단점을 추가할 때와 동일한 단계를 수행하여 제거할 수 있습니다. 비활성화(음소거)해야 하는 상황이 있습니다. 이렇게 하려면 디버그 섹션에서 Intellij IDEA 디버그: 초보자를 위한 가이드 - 10모든 중단점을 비활성화하는 아이콘을 찾을 수 있습니다. 어떤 중단점이 이미 설정되어 있는지 확인하려면 왼쪽 하단에 있는 디버그로 이동하여 아이콘을 찾 Intellij IDEA 디버그: 초보자를 위한 가이드 - 11거나 Ctrl+Shift+F8을 누르세요 . 중단점 목록으로 이동하면 다음을 Intellij IDEA 디버그: 초보자를 위한 가이드 - 12볼 수 있습니다. Intellij IDEA 디버그: 초보자를 위한 가이드 - 13여기:
  • Bee.java:24 - 24번째 줄의 Bee 클래스
  • Main.java:14 - 14번째 줄의 Main 클래스
프로젝트를 복제하면 이러한 BreakPoint가 없으므로 직접 설정해야 합니다. Java 예외 중단점 섹션 도 있습니다 . 매우 유용한 것입니다. 이를 사용하면 예외나 특정 예외가 발생하기 전에 프로그램이 중지되도록 암시적 중단점을 추가할 수 있습니다. RuntimeException에 대한 암시적 중단점을 추가해 보겠습니다. 이 작업은 쉽게 수행됩니다. 왼쪽 상단에 더하기 기호 "+"가 있습니다. 이를 클릭하고 Java 예외 중단점을 선택합니다 . Intellij IDEA 디버그: 초보자를 위한 가이드 - 14나타나는 창에서 추가해야 하는 예외의 이름을 쓰고 제안된 목록에서 선택하고 확인을 클릭합니다 . Intellij IDEA 디버그: 초보자를 위한 가이드 - 15이 교육 프로그램을 마치고 실습으로 이동합니다.

가자, 디버그의 세계로 들어가 보자

Intellij IDEA 디버그: 초보자를 위한 가이드 - 16저는 세습 양봉가이기 때문에 디버깅 프레젠테이션을 위해 꿀벌이 꿀을 수집하고, 꿀을 꿀로 가공하고, 벌통에서 꿀을 얻는 과정을 설명하는 프로젝트를 만들었습니다. 프로젝트의 루트에 있는 README 파일 의 문서를 기반으로 우리는 다음을 읽었습니다. 예상 동작 - 꿀이 수집되는 모든 꽃에서(이중 으로 ) 꿀의 양은 절반에 해당하는 양으로 수집됩니다. 수집된 꿀. 프로젝트에는 다음과 같은 클래스가 있습니다.
  • 꿀벌 - 평범한 일벌;
  • BeeQueen - 여왕벌;
  • 벌집 - 벌집;
  • HoneyPlant - 꿀을 수집하는 벌꿀 식물.
  • Main - public static void main()프로젝트가 시작되는 메소드가 있는 곳입니다.
메소드를 실행해 보면 main()꿀의 양이 계산되지 않을 뿐만 아니라 에러도 나오는데... Intellij IDEA 디버그: 초보자를 위한 가이드 - 17무엇이 문제인지 살펴봐야 합니다. 오른쪽 하단에 있는 스택 추적을 보면 에서 HoneyPlant.java:20RuntimeException이 발생하는 것을 볼 수 있습니다. Intellij IDEA 디버그: 초보자를 위한 가이드 - 18이것이 바로 우리의 경우입니다. RuntimeException이 있습니다. 위에서 설명한 대로 이러한 예외에 대한 검색을 추가하고 다음에서 main()메서드를 실행하겠습니다. 디버그 모드. 이렇게 하려면 Intellij IDEA에서 메서드 앞에 있는 녹색 삼각형 화살표를 클릭하세요 main(). Intellij IDEA 디버그: 초보자를 위한 가이드 - 19그러면 이 아이콘으로 예외가 발생하기 직전에 중지된 프로그램이 표시됩니다 Intellij IDEA 디버그: 초보자를 위한 가이드 - 20Intellij IDEA 디버그: 초보자를 위한 가이드 - 21. 완전한 정보를 얻으려면 디버그 섹션을 살펴봐야 합니다. 여기에는 애플리케이션의 이 부분에서 사용 가능한 모든 변수를 보여주는 Variables 가 있습니다 .
  • 꿀 = 1.0;
  • 꿀 용량 = -1.0.
꿀풀에 있는 꿀의 양은 음수일 수 없으므로 예외는 공정하게 처리됩니다. 그런데 왜 이런 일이 발생합니까? 결국, 꿀이 떨어지면 15-17행에 0 값이 반환되는지 확인하는 작업이 있습니다.
if ( nectar == 0 ) {
         return 0;
}
하지만 문제는 잘못된 변수를 확인하고 있다는 것입니다. 이는 코드의 버그입니다. nectarCapacity 변수 에 있는 꽃의 꿀 값을 확인하는 대신 프로그램은 메서드에 들어오는 nectar 값 과 꿀에서 가져오고 싶은 양을 확인합니다. 여기, 첫 번째 버그가 있습니다! 따라서 우리는 이를 올바르게 입력하고 다음과 같은 표현을 얻습니다.
if ( nectarCapacity == 0) {
         return 0;
}
main()다음으로, 일반 모드에서 메서드를 실행하면 (Run `Main.main()`)더 이상 오류가 없습니다. 프로그램이 작동했습니다. Intellij IDEA 디버그: 초보자를 위한 가이드 - 22응용 프로그램이 작동하고 대답을 제공했습니다. "33.0 꿀은 2개의 벌꿀 식물에서 7마리의 꿀벌에 의해 생산되었습니다 ." 모든 것이 괜찮을 것이지만 대답은 다음과 같습니다. 틀렸어... 문서 README 파일에 꿀이 2:1의 비율로 꿀로 변한다고 기록되어 있기 때문입니다.
## Documentation
Presentation based on honey getting process.

**Note**: 1 honey point = 2 nectar points
주요 방법에서 두 개의 꿀 식물, 즉 각각 30단위와 40단위의 꿀이 있다는 것을 알 수 있으므로 결국에는 35단위의 꿀을 얻어야 합니다. 그리고 그는 33이라고 적었습니다. 나머지 두 유닛은 어디로 갔나요?... ​​이제 알아 보겠습니다! 이를 위해서는 메소드가 Main.main()실행되는 28번 라인 에 중단점을 삽입하고 디버그 모드에서 메소드를 beeHive.populateHoney()실행 해야 합니다. 이 점을 자세히 살펴보겠습니다. 28번째 줄을 실행하기 전에 프로그램이 중지되었습니다. 하단에는 실행 중인 애플리케이션에 대한 모든 정보를 설명하는 디버그 섹션이 있습니다. 이미 언급한 대로 변수 부분에는 애플리케이션의 이 부분에서 액세스할 수 있는 모든 변수와 개체가 포함되어 있습니다. 프레임 부분에는 애플리케이션이 진행하는 단계가 표시되며, 이전 단계를 보고 모든 로컬 데이터를 얻을 수 있습니다. 프로그램이 계속 작동하려면 F9를 누르 거나 아래와 같이 녹색 아이콘을 누르면 됩니다. 프로그램을 중지하려면 빨간색 사각형을 클릭해야 합니다. 디버그 모드에서 애플리케이션을 다시 시작하려면 화살표를 클릭해야 합니다. 다음으로, 애플리케이션을 단계별로 진행하려면 다음 두 개의 키를 사용할 수 있습니다. mainIntellij IDEA 디버그: 초보자를 위한 가이드 - 23Intellij IDEA 디버그: 초보자를 위한 가이드 - 24Intellij IDEA 디버그: 초보자를 위한 가이드 - 25Intellij IDEA 디버그: 초보자를 위한 가이드 - 26
  • F8 - 코드 섹션을 살펴보고 내부 메서드로 이동하지 않습니다.
  • F7 - 코드 섹션을 살펴보고 내부 메소드를 입력합니다.
따라서 메소드를 작동하려면 beeHive.populateHoney()F7을 눌러야 하며 다음으로 넘어갑니다. 다음으로 이 메소드를 사용하여 F8을Intellij IDEA 디버그: 초보자를 위한 가이드 - 27 사용하여 디버그 모드를 끝까지 진행하고 이 메소드에서 어떤 일이 일어나는지 설명합니다.
  • 25행 - 스트림 API는 모든 꿀벌로부터 꿀을 수집하는 데 사용됩니다.
  • 26번째 라인 - 기존 라인에 꿀이 추가됩니다.
  • 27번째 라인 - 여왕에게 꿀 2개가 할당됩니다.
  • 28번째 줄 - 이 두 단위는 총 꿀량에서 제거됩니다.
  • 29행 - 자궁이 이 꿀을 먹습니다.
그곳이 바로 이 두 유닛이 간 곳이에요, 만세! 비즈니스 분석가와 대화한 후 문서 README 파일에 오류가 있으므로 업데이트해야 한다는 결론에 도달했습니다 . README 파일을 업데이트해 보겠습니다.
## Documentation
Presentation based on honey getting process.

**Note**:
*  1 honey point = 2 nectar points
*  2 honey point queen bee eats every time when beehive populates the honey.
그게 전부입니다. 발견된 모든 버그가 수정되었습니다. 우리는 스마트한 표정으로 침착하게 계속해서 커피를 마시고 JavaRush 허브 의 기사를 읽을 수 있습니다 :)

요약하다

이 기사에서 우리는 다음을 알아냈습니다.
  • 오류가 없는 작업은 없으며 디버깅은 오류를 해결하는 좋은 방법입니다.
  • 중단점은 무엇이며 어떤 유형이 존재합니까?
  • 예외 중단점을 구성하는 방법
  • 디버그 모드에서 탐색하는 방법.

읽어야 할 기사

내 다른 기사도 참조하십시오.
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION