<aside> 💡
디버깅을 해본적이 없는 저는 illegalArgumentException 에 메시지를 부여하는 방법으로 어떤 오류가 났는지 check했습니다. 위의 메뉴에서 어디 부분에서 앱이 종료된지 확인할 수 있다는 것을 깨달았습니다.
</aside>
이런식으로 checkPoint를 설정해두고 어느 부분에서 오류가 나는지 점검했습니다. 위와 같은 상황은 checkPoint2와 checkPoint3 사이에서 오류가 나는 것을 확인할 수 있었습니다. 이를 계속 세분화하고 출력값등을 점검하면서 디버깅을 했습니다.
이 과정에서 다른 디버깅 방법들과 어떻게 에러를 잡아나가야 하는지에 대한 추가 공부가 필요해 보였습니다.
<aside> 💡
BreakPoint를 설정하고 어플리케이션을 끊어서 실행하며 어떻게 실행되고 있는지 체크할 수 있다
Print 시키는 것 보다 더 편하게 이용할 수 있다.
마우스 우클릭시 조건에 따라서 Debug 할 수도 있다.
</aside>
<aside> 💡
직관적인 기능들에 비해서 화살표로 된 기능들에 대해서 추가적으로 dig-in 해보았다.
아래는 단순한 자바 프로그램으로, 디버깅 예시에 사용할 코드입니다.
java
코드 복사
public class DebugExample {
public static void main(String[] args) {
int a = 5;
int b = 10;
int sum = add(a, b); // Line 6
System.out.println("Sum: " + sum); // Line 7
}
public static int add(int x, int y) {
int result = x + y; // Line 11
return result; // Line 12
}
}
Step Over는 현재 코드 줄에서 함수 호출을 건너뛰고 그다음 줄로 이동합니다. 함수 내부로 들어가지 않고, 함수 호출이 끝날 때까지 실행됩니다.
int sum = add(a, b);
)에서 중단된 상태입니다.add(a, b)
가 호출되지만, 디버거는 함수 내부로 들어가지 않고 Line 7으로 바로 이동합니다.Step Over 동작 순서:
System.out.println
을 실행.Step Into는 함수 호출 시 그 함수 내부로 들어가서, 함수의 실행 흐름을 한 줄씩 디버깅합니다.
int sum = add(a, b);
)에서 중단된 상태입니다.add(a, b)
가 호출될 때 Line 11로 이동하여, 함수 내부에서의 실행을 한 줄씩 디버깅할 수 있습니다.Step Into 동작 순서:
add(a, b)
호출 → 함수 내부로 이동(Line 11) → 함수 내부를 한 줄씩 실행(Line 12) → 다시 호출된 곳(Line 7)으로 돌아옴.Step Out은 현재 실행 중인 함수에서 나와서 함수 호출이 끝난 후의 코드로 돌아갑니다.
add(a, b)
내부(Line 11)에 중단된 상태입니다.Step Out 동작 순서: