내가 초심자이기 때문에 내가 이해할 수 있는 글을 써보려고 한다...
출처 : https://codegym.cc/ko/groups/posts/ko.243.intellij-ideaui-dibeoging-choboja-gaideu
예제 코드 : https://github.com/romankh3/debug-presentation
ㄴ 이 코드를 자기 레포지토리로 포크해준다.
※ 그리고 의존성 버전을 업데이트해줘야한다. ※
pom.xml 을 열어서 lombok 버전을 30으로 올려준다.
처음 코드를 받고 디버그 버튼과 실행 버튼이 없어서 당황했는데...
src폴더의 main 메서드가 있는 곳으로 이동해주면 자동으로 생기더라...
중단점
중단점이란 프로그램의 실행 흐름을 마킹할 수 있는 표시이다.
이 중단점을 토대로하여 프로그램의 흐름을 파악할 수 있다.
중단점은 응용 프로그램 상태에 따라 응용 프로그램 실행을 중지하려는 위치를 나타내는 특수 마커입니다. 왼쪽 패널을 마우스 왼쪽 버튼으로 클릭하거나 코드 위치를 클릭하고 Ctrl+F8을 눌러 중단점을 설정할 수 있습니다 . 줄 중단점, 필드 감시점 및 메서드 중단점의 세 가지 유형의 중단점을 살펴보겠습니다. 다음과 같이 표시됩니다.
이걸 누르면 모든 중단점이 취소된다는 모양이다.
RuntimeException을 모두 디버그해버리는 중단점을 추가해보자.
1. ctril + shif + 8을 눌러 디버깅 설정 창을 연다.
또는 디버깅 패널에서 아래처럼 동그라미 두개가 겹쳐진 버튼을 누른다.
여기에서 암시적 중단점을 추가하여 예외 또는 특정 예외를 발생시키기 전에 프로그램이 중지되도록 할 수 있습니다.
2.
Java예외 중단점 선택
확인하고자하는 Exception을 검색해준다.
이 외에도 각 파일을 찾아가서 '줄 중단점'을 추가해주자.
프로젝트 구조는 아래와 같다.
- 벌 — 평범한 일벌
- BeeQueen — 여왕벌
- BeeHive — 벌집
- HoneyPlant — 과즙을 수집하는 꿀 식물(과즙 공급원)
- public static void main()Main — 실행이 시작되는 메서드인 를 찾는 곳입니다 .
이제 디버깅을 시작해보자... 일단 이 프로젝트를 실행해보면 제대로 안 굴러간다는 것을 알 수 있는데...
이런 젠장 걍 안 굴러가는 프로젝트였다
어쩌란거임
lombok 버전 수정하면 굴러간다
정보만 정리해보겠다
결과적으로 예외가 발생하기 직전에 프로그램이 중지되고 다음 아이콘이 표시됩니다.
이런 코드가 있다면 23라인을 실행 전에 프로그램이 중단된다는 의미다.
이 때 디버깅 창에는 프로그램이 기억하고 있는 모든 변수의 값을 보여준다.
하단에는 실행 중인 애플리케이션에 대해 사용 가능한 모든 정보를 표시하는 디버그 섹션이 표시됩니다. 이미 언급한 대로 변수 창에는 응용 프로그램의 이 부분에서 사용할 수 있는 모든 변수와 개체가 포함되어 있습니다.
창에는 애플리케이션이 진행 중인 단계가 표시됩니다. 이전(프레임) 단계를 보고 모든 로컬 데이터를 볼 수 있습니다. 프로그램을 계속 실행하려면 F9 아니면 아래와 같은 화살표를 누른다.
응용 프로그램을 디버그 모드에서 다시 시작 하려면 이 아이콘을 누른
- F8 — 메서드를 실행하지 않고 코드를 실행합니다.
- F7 — 코드를 단계별로 실행하고 메서드를 단계별로 실행합니다.
우리의 경우 F7 키를 눌러 메서드를 시작해야 합니다 beeHive.populateHoney().
이제 F8을 사용 하여 이 메서드를 단계별로 실행하고 그 안에서 일어나는 일을 설명합니다.
- 25행 — Stream API는 모든 꿀벌로부터 꿀을 수집하는 데 사용됩니다.
- 26행 — 새로 생성된 꿀이 기존 꿀에 추가됩니다.
- 27행 — 꿀 2단위가 여왕에게 할당됩니다.
- 28행 — 이 두 단위는 총 꿀 양에서 제거됩니다.
- 29행 — 여왕이 이 꿀을 먹습니다.
https://jojoldu.tistory.com/149
(break가 된 상태에서만 사용 가능하다)
'【 개발 이야기 】' 카테고리의 다른 글
[kotlin] infix function (0) | 2025.06.17 |
---|---|
[Spring&kotlin] try catch와 exception 예외와 오류 그리고... throw (2) | 2025.06.16 |
IV (0) | 2025.06.02 |
[git] rebase 이해하기 (0) | 2025.06.02 |
볼만한 개발 블로그.. (0) | 2025.05.30 |