전체 코드

1. 디버깅이란?

디버깅(Debugging) 은 코드에 있는 오류(Bug)를 찾아 수정하는 과정입니다.
버그가 발생하는 원인을 분석하고, 실행 흐름을 파악하여 원하는 대로 코드가 동작하도록 만듭니다.

디버깅을 효과적으로 하기 위한 기본 자세

  • 문제를 눈으로 찾기보다는 디버깅을 활용하여 빠르게 분석
  • Break Point(중단점)와 조사식 활용
  • 호출 스택(Call Stack)을 통해 함수 실행 순서 추적
  • 코드 흐름을 제어하여 특정 지점부터 다시 실행

2. 디버깅 단축키 정리

단축키기능
F5중단점까지 실행 (Break Point까지 실행 후 멈춤)
Shift + F5디버깅 중지
F10프로시저 단위 실행 (Step Over) – 함수 내부로 들어가지 않고 실행
F11한 단계씩 코드 실행 (Step Into) – 함수 내부로 진입
F9중단점 (Break Point) 설정/해제

3. 기본 디버깅 예제

#include <iostream>
using namespace std;

int MultiplyBy(int a, int b)
{
    return a * b;
}

int main()
{
    int a = 3;
    int b = 5;
    int result = MultiplyBy(b, a);

    cout << "Result: " << result << endl;
    return 0;
}

디버깅 실행 방법
1. F9 를 눌러 MultiplyBy(b, a); 라인에 중단점(Breakpoint) 설정.
2. F5 를 눌러 디버깅 시작 → 중단점에서 코드 멈춤.
3. F10 (Step Over) → MultiplyBy() 함수로 가지 않고 result를 계산.
4. F11 (Step Into) → MultiplyBy() 함수 내부로 진입.


4. 디버깅 도구 활용

(1) 조사식 (Watch)

조사식(Watches) 는 프로그램이 실행 중일 때 변수 값을 확인하고 변경할 수 있는 기능입니다.

사용법
1. 디버깅 중 F5 를 누르면 조사식 창(Watches Window) 이 나타남.
2. 변수의 현재 값 을 확인할 수 있음.
3. 직접 변수 값을 변경하고, 결과를 실시간으로 확인 가능.

예제

  • result 변수의 값을 조사식 창에서 변경하면 프로그램 실행 중 결과가 바뀌는 것을 확인할 수 있음.

(2) 호출 스택 (Call Stack)

호출 스택(Call Stack) 은 프로그램이 실행되는 동안 함수 호출 순서를 보여줍니다.

사용법
1. F5 를 눌러 디버깅 시작 후 F11 로 함수 내부로 들어감.
2. Visual Studio의 "호출 스택(Call Stack)" 창을 확인하여 어떤 함수가 어떤 순서로 실행되었는지 추적.

예제

  • MultiplyBy() 함수가 main()에서 호출됨을 호출 스택에서 확인 가능.

(3) 중단점 (Break Point)

중단점(Breakpoint) 을 사용하면 코드가 특정 지점에서 멈춰, 실행 흐름을 분석할 수 있습니다.

사용법
1. 중단점 설정F9 를 눌러 특정 코드 라인에 중단점을 추가.
2. 디버깅 실행F5 를 누르면 중단점에서 코드 실행이 멈춤.
3. F10 (Step Over) 또는 F11 (Step Into) 를 사용해 한 줄씩 코드 실행.

예제

int main()
{
    int a = 3;
    int b = 5;
    int result = MultiplyBy(b, a);  // 여기서 F9를 눌러 중단점 설정

    cout << "Result: " << result << endl;
    return 0;
}

중단점 관리

  • 모든 중단점을 보고 관리하려면 Ctrl + Alt + B 를 누르면 중단점(Breakpoints) 창이 열림.
  • 중단점을 삭제하려면 Delete 키를 사용.

5. 조건부 중단점 (Conditional Breakpoints)

조건부 중단점을 사용하면 특정 조건이 만족될 때만 실행을 멈출 수 있습니다.

사용법
1. 중단점을 추가한 후, 오른쪽 클릭 → "조건..." (Condition...) 선택.
2. 예를 들어 a == 5 일 때만 중단점을 활성화하려면 a == 5 입력.
3. "확인(OK)"을 눌러 설정 완료.

예제

int main()
{
    for (int i = 0; i < 10; i++)
    {
        cout << "i: " << i << endl;
    }
}
  • F9 를 눌러 cout << "i: " << i << endl; 라인에 중단점 추가.
  • 조건으로 i == 5 설정하면 i 값이 5일 때만 중단됨.

6. 디버깅 로그 찍기 (Breakpoint Actions)

중단점을 설정했지만 프로그램이 멈추지 않고 로그만 출력되도록 설정할 수 있음.

사용법
1. 중단점에서 우클릭 → "동작(Set Action)" 클릭.
2. "메시지 인쇄(Print a message)" 를 선택 후 "Hello Debug!" 입력.
3. "디버깅 계속(Continue debugging)" 옵션을 선택하면 프로그램 실행이 멈추지 않고 로그만 출력됨.

출력 예시

Hello Debug!
Hello Debug!
Hello Debug!

7. 코드 흐름 제어 (Set Next Statement)

프로그램 실행 중 특정 코드 위치로 점프하여 실행할 수 있습니다.

사용법
1. 디버깅 도중 중단점에서 노란색 실행 화살표(▶) 를 원하는 줄로 드래그.
2. 프로그램이 해당 줄부터 다시 실행됨.

예제

int main()
{
    int a = 3;
    int b = 5;
    int result = MultiplyBy(b, a);  // 실행 화살표를 이 줄로 옮겨 다시 실행 가능

    cout << "Result: " << result << endl;
    return 0;
}

🚀 실제 활용 예시

  • 특정 코드 블록을 건너뛰고 실행
  • 과거 코드 상태를 다시 실행하여 새로운 결과 확인

profile
李家네_공부방

0개의 댓글