🔥 포스팅 계기
이클립스 디버깅 모드에서 특정 지점까지만 실행하고 메서드를 강제 리턴하는 방법을 알아보자
📍 로직 예시와 포스팅 이유
👉🏻 이런 로직이 있다고 치자
package com.puppy.test;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
Test test = new Test();
int cnt = 0;
System.out.println("before cnt: " + cnt);
System.out.println("여기 브레이크 포인트를 걸어 봐요");
System.out.println("대충 이 아래부터는 update, insert 등의 로직이 있다고 칩시다");
cnt = test.updateMyInfoCnt(cnt); // mainDao.updateMyInfoCnt(cnt); 의 느낌이겠죠?
System.out.println("after cnt: " + cnt);
}
public int updateMyInfoCnt(int cnt) {
cnt++;
return cnt;
}
}
👉🏻 이클립스에서 자주 쓰는 디버깅은 특정 위치에서 객체의 값을 확인하기 위해 주로 사용하는데 값 확인 후 디버깅을 멈출 때 보통 아래 2가지 방법을 사용함
1️⃣ F8 클릭하여 로직을 모두 태운 후 종료
2️⃣ 톰캣 종료하여 메소드 진행을 강제 종료
👉🏻 1️⃣의 경우, 불필요하게 UPDATE/INSERT문까지 실행해야 함
👉🏻 2️⃣의 경우, 톰캣을 재시작해야 하는 번거로움과 시간 낭비가 있음
⚡️ 톰캣 재시작 없이 현재 로직에서 디버깅 끝내고 강제 RETURN 시키는 법은 없을까?
📍 Breakpoint + Force Return 사용
👉🏻 기존 예시 로직은 아래와 같이 진행될 것
👉🏻 브레이크포인트를 걸면 아래와 같이 잡히는데
👉🏻 중요한 건 Variables 탭에 this가 잡히는 부분이 있어야 함!
👉🏻 this가 보이는 상태에서 Ctrl + Alt + R(Force Return 단축키) 클릭 시 메소드를 빠져나오고
👉🏻 이후 직힌 콘솔에도 update 없이 그대로임을 확인할 수 있음
🆘 1️⃣ this가 Variables 창에 안 보일 때
보통 this는 인스턴스 메서드에서만 보이는데, 만약
- 메서드가 static이면 this가 없음 → Force Return 불가능
- 브레이크포인트를 너무 초기화되기 전(메서드 진입 전)에 걸었을 경우도 this가 안 보일 수 있음
🔹 해결 방법
- 브레이크포인트를 메서드 내부 코드(A 실행 후 B 실행 직전)에 설정
- 디버깅 멈춘 상태에서 Variables 창에 this가 있는지 확인
- 그래도 안 보이면 Step Into (F5) 또는 Step Over (F6)로 한 줄씩 실행해 보기
- this가 보이면 우클릭 → "Force Return" 실행
// 이건 안 됩니다 (static 메소드 내부)
public class Test {
public static void main(String[] args) {
int cnt = 0;
System.out.println("cnt: " + cnt);
System.out.println("여기 브레이크 포인트를 걸어 봐요");
System.out.println("대충 이 아래부터는 update, insert 등의 로직이 있다고 칩시다");
cnt++;
System.out.println("cnt: " + cnt);
}
}
// 이렇게 변경해 주세요 (새로운 메소드 생성)
public class Test {
public static void main(String[] args) {
Test test = new Test();
test.updateMyInfoCnt();
}
public void updateMyInfoCnt() {
int cnt = 0;
System.out.println("대충 여기부터는 update, insert 등의 로직이 있다고 칩시다");
}
}
🆘 2️⃣ Ctrl + Alt + R (Force Return 단축키)가 안 될 때
이클립스 버전에 따라 기본적으로 Force Return 단축키가 활성화되지 않을 수도 있음
🔹 해결 방법
- 단축키 직접 설정하기
- Window → Preferences → General → Keys
- Force Return 검색 후 Ctrl + Alt + R으로 설정
- 설정 후 Apply and Close
- 단축키 대신 수동으로 실행하기
- 디버깅 멈춘 상태에서
- Variables 창에서 메서드 컨텍스트(= this 객체) 우클릭 → "Force Return" 클릭
더보기
챗지피티와 나의 땀이 섞인 캡처본