
완전히 모르는건 아니지만, 이번기회에 확실히 짚고 넘어가고자 공부해봤습니다.
기본적으로 자바에서 System.out.println()을 이용한 디버깅은 가장 기본적이면서도 빠르고 효과적인 방법입니다.
System.out.println() 디버깅 기본 사용법가장 기본적인 사용법입니다. 변수가 내가 예상한 값을 가지고 있는지 확인합니다. 글자는 “” 쌍따옴표안에 입력하고 +를 추가하여 함수에 대한 값도 출력할 수 있습니다.
팁: 그냥 변수만 출력하기보다, 어떤 변수인지 알아볼 수 있게 문자열을 함께 출력하는 것이 좋습니다.
public class DebugExample {
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i;
// 반복문이 돌 때마다 i와 sum의 값을 확인
System.out.println("현재 i 값: " + i + ", 현재 sum 값: " + sum);
}
System.out.println("최종 결과: " + sum);
}
}
출력 결과
현재 i 값: 1, 현재 sum 값: 1
현재 i 값: 2, 현재 sum 값: 3
...
최종 결과: 55
if문이나 특정 로직이 제대로 실행되는지, 아니면 건너뛰는지 확인할 때 유용합니다.
int score = 75;
if (score >= 90) {
System.out.println("A 등급 블록 실행됨");
// ... 로직 ...
} else if (score >= 80) {
System.out.println("B 등급 블록 실행됨");
// ... 로직 ...
} else {
System.out.println("B 등급 미만 블록 실행됨"); // 이 부분이 실행될 것을 예상
// ... 로직 ...
}
출력 결과
B 등급 미만 블록 실행됨
함수(메서드)를 디버깅할 때는 입력(파라미터)과 출력(반환 값)을 확인하는 것이 가장 중요합니다.
아래 calculateSum 함수를 디버깅하는 예시입니다.
public class FunctionDebug {
// 두 숫자를 더하는 간단한 함수
public static int calculateSum(int a, int b) {
// 1. 함수 시작과 파라미터 값 확인
System.out.println("--- calculateSum() 함수 시작 ---");
System.out.println("입력받은 파라미터 a: " + a);
System.out.println("입력받은 파라미터 b: " + b);
// 2. 주요 로직 중간 결과 확인
int result = a + b;
System.out.println("중간 계산 결과(result): " + result);
// 3. 반환 직전의 최종 값 확인
System.out.println("반환될 값: " + result);
System.out.println("--- calculateSum() 함수 종료 ---");
return result;
}
public static void main(String[] args) {
int num1 = 10;
int num2 = 20;
int finalResult = calculateSum(num1, num2);
System.out.println("main에서 받은 최종 결과: " + finalResult);
}
}
출력 결과
--- calculateSum() 함수 시작 ---
입력받은 파라미터 a: 10
입력받은 파라미터 b: 20
중간 계산 결과(result): 30
반환될 값: 30
--- calculateSum() 함수 종료 ---
main에서 받은 최종 결과: 30
이렇게 함수의 시작, 파라미터, 중간 과정, 최종 반환 값을 모두 출력하면 어디서 문제가 발생했는지 정확하게 파악할 수 있습니다.
만약에, 디버깅이 끝났다면 주석처리를 하여 원하는 결과값만 출력하면 됩니다.