
디버깅
프로그램은 멈추지 않고 지나가는데 디버그 모드는 break point를 잡으면 프로그램을 멈추고 상태를 잡아 어디가 문제인지 확인할 수 있다.
breaking point : 해당 line의 코드가 실행되기 직전의 상태에서 멈춘다.
strack trace: 어떻게 된건지 스택이 쌓여있음.
Variables → 지역 스코프에 존재하는 변수들이 나옴.
Resume → 브레이크 포인트 내에서 다음 브레이크 직전까지 쭉 실행
Step Over → 브레이크 포인트에 국한되지 않고 다음라인 직전까지 실행
Step Into → 그 실행 줄에서 실행되는 메서드들 안으로 한단계 들어가는 것
Factory factory = new Factory()
//에서 new Factory로 들어가서
public class Factory{
public User User(){
retrun new User(connectionMaker());
}
}
//위는 기본 생성자가 숨겨져 있기 때문에 기본생성자 실행 됨.
//이때는 Step Over을 눌러도 실행될 메서드가 없기 때문에 원래 breakpoint로 돌아온다
//돌아오면 다시
Factory factory = new Factory()
//가 실행되는데 이때는 이미 new가 실행됐기 때문에 Step Into를 눌러도 다음줄이 실행된다.
Step Out → Step Into의 정 반대 개념 스택에서 나오는데, 실행을 시킨 후 나온다. 즉, 실행 시키고 다음으로 넘어감.
Drop Frame → Step Out이랑 기능상 동일하지만 실행되지 않고 나온다는 차이가 있다.
Run to Cursor → breakpoint를 설정하지 않아도 커서가 있는 곳에서 resume 된다.
break point 우클릭 condition → 원하는 값을 설정가능. 반복문 일 때 원하는 조건만 사용할 수 있기 때문에 유용하다.
Evaluate → 실행가능한 모든걸 실행해 볼 수 있다. 하지만 실제로 실행되니 조회만 사용할 것!! 제어의 역전 상황일 때 사용하면 좋다.
Watch → 현재 스코프 내에서 내가 브레이크 포인트 걸릴 때 마다 evaluate 해보고 싶은걸 미리 지정해놓을 수 있음. Variables에서 확인 가능!
StackTrace
- 실행 경로를 나타내는 메서드 호출 목록
- 예외 발생시 출력된 StrackTrace를 통해 발생된 예외를 디버깅 가능
- 아래에서 부터 이유라고 생각하면 편할 것 같음.
해당 예외까지 오게된 실행경로(메서드가 선언된 클래스, 메서드 이름, 메서드가 있는 파일 명, 메서드 라인 넘버) 를 표시한다!
Caused by: CarException 과 같이 Caused by가 붙으면 에외 이유를 나타낸다고 생각하면 될 것 같다.
Throwable.printStackTrace()에서 Suppressed Exception:
- 해당 쓰레드에서 Catch된 예외
- 원래는 Stact Trace에 출력되지 않음
- try-with-resourse 시 발생하는 에러는 자동 Suppressed 등록
- Thread.addSuppressed() 를 통해 비록 사라졌지만 등록가능
- 메인 예외를 던질 때, 함께 발생한 보조 예외가 사라지지 않도록 예외 객체에 첨부된 것
참고.
https://www.youtube.com/watch?v=gkutTlwi70s
http://youtube.com/watch?v=JSVvhwwOvAY&feature=youtu.be
https://www.youtube.com/watch?v=leIwlemLWNc&feature=youtu.be
'우테코' 카테고리의 다른 글
| 우테코8기 최종 코테 후기 + 근황 (0) | 2026.03.14 |
|---|---|
| [우테코 프리코스] 2주차 미션 회고 (0) | 2025.10.31 |
| [우테코 8기 프리코스] TDD 이해하기 (0) | 2025.10.24 |
| [우테코 8기 프리코스] 2주차 NsTest 공부하기 (0) | 2025.10.23 |
| 우테코 8기 신청 + 1주차 프리코스 후기 및 회고 (0) | 2025.10.23 |