Company
교육 철학

디버깅

[디버깅]

디버깅(Debugging)은 프로그램의 버그(오류)를 찾아서 수정하는 과정을 말합니다.
일반적으로 프로그램을 실행하면 코드가 위에서 아래로 순차적으로 빠르게 실행됩니다. 이런 방식은 프로그램을 빠르게 실행할 수 있지만, 프로그램이 예상과 다르게 동작하거나 오류가 발생했을 때 정확히 어느 부분에서 문제가 생긴 것인지 파악하기 매우 어렵습니다.
이 문제를 해결하기 위해 디버깅 기능을 사용합니다. 디버깅 모드에서는 프로그램을 한 줄씩 천천히 실행하면서 각 시점의 변수 값을 확인할 수 있습니다. 이를 통해 코드가 어떤 순서로 실행되는지, 각 변수에 어떤 값이 들어가는지 직접 눈으로 확인하면서 문제를 찾아낼 수 있습니다.
Visual Studio에서 디버깅을 위해 자주 사용하는 단축키는 다음과 같습니다.
F5 - 디버깅 모드로 프로그램 실행하기. 브레이크 포인트가 설정되어 있으면 그 위치에서 멈추고, 없으면 끝까지 실행됩니다.
F9 - 현재 커서가 있는 줄에 브레이크 포인트(중단점) 설정하기. 브레이크 포인트가 있는 줄에서 프로그램이 멈춥니다. 같은 줄에서 F9를 다시 누르면 브레이크 포인트가 해제됩니다.
Ctrl + Shift + F9 - 설정된 모든 브레이크 포인트를 한 번에 제거합니다.
F10 - 한 줄씩 실행하기. 디버깅에서 가장 많이 사용하는 기능입니다. 함수 호출이 있어도 함수 안으로 들어가지 않고 다음 줄로 넘어갑니다.
Ctrl + F10 - 현재 커서가 있는 줄까지 한 번에 실행하고 멈춥니다. 브레이크 포인트를 설정하지 않고 특정 위치까지 빠르게 이동할 때 유용합니다.
F11 - 함수 안으로 들어가서 실행하기. 함수 호출 부분에서 F11을 누르면 그 함수의 내부로 들어가서 한 줄씩 실행할 수 있습니다.
Shift + F11 - 현재 함수를 끝까지 실행하고 함수를 호출한 곳으로 돌아갑니다.
F12 - 함수나 변수가 선언된 부분으로 바로 이동합니다. 코드를 읽을 때 유용합니다.
디버깅에서 가장 중요한 원칙이 있습니다. 절대 머릿속으로 코드를 실행하지 마세요.
초보 프로그래머들이 자주 하는 실수는 코드를 눈으로 읽으면서 "이 변수에는 이런 값이 들어갈 거야"라고 머릿속으로 추측하는 것입니다. 하지만 사람의 추측은 틀릴 수 있고, 특히 코드가 복잡해질수록 머릿속으로 모든 변수의 값을 추적하는 것은 불가능해집니다.
반드시 조사식 창을 활용해서 변수의 실제 값을 눈으로 직접 확인해야 합니다. 조사식 창에 확인하고 싶은 변수를 등록하면, 코드를 한 줄씩 실행할 때마다 그 변수의 값이 실시간으로 업데이트되는 것을 볼 수 있습니다.
코드를 한 줄 실행하기 전에 "이 줄을 실행하면 변수 a의 값이 어떻게 바뀔까?"라고 예상해보세요. 그리고 F10을 눌러 실제로 실행한 후 조사식 창에서 예상이 맞았는지 확인하세요. 만약 예상과 다르다면, 그 이유를 생각해보세요. 이런 과정을 반복하면 코드를 정확하게 이해하는 능력이 빠르게 향상됩니다.

[디버깅을 하는 이유]

머릿속으로만 코드를 분석하는 것은 매우 위험합니다. 특히 코드가 복잡해질수록 사람의 머리로는 모든 변수의 상태를 정확하게 추적하기 어렵습니다. 작은 실수나 놓친 부분이 나중에 큰 버그로 이어질 수 있습니다.
프로그래머에게 디버깅 능력은 필수입니다. 실무에서는 내가 작성한 코드뿐만 아니라 다른 사람이 작성한 코드도 읽고 수정해야 하는 경우가 많습니다. 이때 디버깅 기술이 없다면 코드를 이해하는 데 엄청난 시간이 걸립니다.
코드를 작성한 후에는 반드시 F10을 눌러 한 줄씩 실행하면서 확인하는 습관을 들이세요. 처음에는 번거롭게 느껴질 수 있지만, 이 습관이 나중에 수많은 시간을 절약해줍니다. 버그를 찾는 데 몇 시간씩 고생하는 것보다, 처음부터 디버깅하면서 정확하게 코드를 작성하는 것이 훨씬 효율적입니다.