나를 기록하다
article thumbnail
반응형

1. 디버깅은 왜 중요할까?

1) 디버깅의 중요성

  • 코딩 테스트에서 떨어졌을 때의 유형
    • 학생1) index 범위 1개 차이로 떨어졌어!!
    • 학생2) 계속 답이 나오지 않아 몇 시간 동안 헤맸는데, 알고보니 int를 long으로만 바꾸면 되는거였어!!
    • → 디버깅을 제대로 했다면 아마 코딩 테스트에 통과했을 것!
  • 디버깅은 코딩 테스트에 필요한 기술이고, 그냥 알아두기만 하면 되는 것이 아니라 문제를 풀면서 반드시 해야 하는 과정이다. 반드시 디버깅을 익힌 후에 코딩 테스트에 응시하라!

2) 디버깅하는 법

방법

  • 코드에서 디버깅하고자 하는 줄에 중단점(break point)을 설정하고, IDE의 디버깅 기능을 실행해 진행하면 된다. 구체적인 방법은 다음과 같다.
    1. 코드에서 디버깅하고자 하는 줄에 중단점을 설정. 이때 중단점은 여러 개 설정 가능
    2. IDE의 디버깅 기능을 실행하면 코드를 1줄씩 실행하거나 다음 중단점까지 실행할 수 있고, 이 과정에서 추적할 변숫값도 지정 가능
      → 이 방법으로 변숫값이 자신이 의도한 대로 바뀌는지 파악
    3. 변숫값 이외에도 원하는 수식을 입력해 논리 오류를 파악할 수도 있다.

2. 디버깅 활용 사례

예시

import java.util.Scanner;

public class 디버깅오류 {
    public static void main(String[] args) {
        // TODO 배열에서 주어진 범위의 합을 구하는 프로그램을 구하시오
        Scanner sc = new Scanner(System.in);
        int testcase = sc.nextInt();
        int answer = 0;
        int A[] = new int[10001];
        int S[] = new int[10001];

        for (int i = 1 ; i < 10000 ; i++) {
            A[i] = (int) (Math.random() * Integer.MAX_VALUE);
            S[i] = S[i - 1] + A[i];
        }

        for (int t = 1 ; t < testcase ; t++) {
            int query = sc.nextInt();
            for (int i = 0 ; i < query ; i++) {
                int start = sc.nextInt();
                int end = sc.nextInt();
                answer += S[end] - S[start - 1];
                System.out.println(testcase + " " + answer);
            }
        }
    }
}
  • 버튼 설명

1. Debug(^D)

Debug

디버그 모드 시작

 

2. Step Over(F8)

Step Over

현재 break 된 파일에서 다음 라인으로 이동

3. Step Into(F7)

Step Into

현재 break 된 라인에서 실행하고 있는 라인으로 이동

 

4. Step Out(⇧F8)

Step Out

현재 break 된 라인에서 호출한 곳으로 이동

 

5. Resume Program(⌥⌘R)

Resume Program

다음 break point로 이동

 

6. Run to Cursor(⌥F9)

Run to Cursor

포커스 되어 있는 라인으로 이동

 

  • 초기 상태

초기 상태

  • 디버깅 모드 시작 - testcase 5 입력

디버깅 모드 시작

  • 실행값

실행값

  • Evaluate expression에 값 입력

Evaluate expression 활용

  • testcase 결과값

testcase 출력 결과값

로그를 찍는 것보다 디버깅을 추천하는 이유

  • 로그로 찍으면 숲이 아니라 나무를 보게 된다.
    • 한번 찍고 나서 다시 실행할 때 시간이 오래 걸림.
    • 문제가 있는 부분을 예상했을 때 그 부분이 아니라 다른 부분이 문제일 수도 있다.
  • 디버깅은 전체적으로 스캔이 가능하다.
  • 일반적으로 디버깅이 속도가 더 빠르다.
  • 코테에서는 한번에 문제를 못 풀었다면 얼마나 빨리 고치냐의 싸움이기에 디버깅이 중요

3) 코딩 테스트를 진행하며 실수하기 쉬운 4가지 오류

1. 변수 초기화 오류 찾아보기

2. 반복문에서 인덱스 범위 지정 오류 찾아보기

3. 잘못된 변수 사용 오류 찾아보기

4. 자료형 범위 오류 찾아보기

 

오늘은 디버그를 공부했는데, 솔직히 아직 이해가 제대로 되지 않는다. 우선 디버그를 사용해본 경험이 없어서 사용 방법을 정확하게 모르겠다. 공부를 계속하면서 디버그와 관련된 강의와 문서를 참고하여 공부하고 추후에 또 디버그 관련 정리글을 올릴 수 있도록 하겠다.

반응형
profile

나를 기록하다

@prao

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...