디버거란 무엇인가요?
개발자로서 작업하다 보면 언제든지 이렇게 자문하게 되는 순간이 있습니다.
내 코드가 왜 작동하지 않을까요?
이 질문은 개발자에게 있어 일상입니다. 가장 짧은 시간 내에 실패를 최소화하면서 버그를 찾아 수정하는 데 익숙해지는 것이 핵심입니다. 프로그램에 버그가 있는 경우 일반적으로 모든 사용자가 이 문제를 처리하는 고유한 방법을 가지게 됩니다.
이러한 디버깅 방법 중 하나 이상을 직접 시도했을 것입니다.
- 프로그램이 ‘작동해야’ 하므로 프로그램을 다시 실행해 봅니다.
- 고무 오리 인형에게 문제를 설명합니다.
- 문제를 찾기 위해 코드를 다시 읽어봅니다.
- 산책하면서 머리를 식힙니다.
- 코드에서 몇 개의
Console.WriteLine("here")메시지를 무의미하게 채웁니다.
이러한 방법은 효과적일 수도 있고 그렇지 않을 수도 있습니다. 일반적으로 가장 효과적인 방법은 디버거를 사용하는 것입니다. 하지만 디버거란 무엇일까요?
디버거는 분석 방법으로 프로그램의 실행 흐름을 관찰하고 제어하는 데 사용할 수 있는 소프트웨어 도구입니다. 설계 목표는 버그의 근본 원인을 찾고 해결하도록 돕는 것입니다. 디버거는 자체 실행 프로세스에서 프로그램을 호스팅하거나 .NET과 같이 실행 중인 프로그램에 연결된 별도의 프로세스로 실행되는 방식으로 작동합니다.
디버거는 다양한 버전으로 제공되며 일부는 명령줄에서 직접 작동하는 반면, 다른 일부는 그래픽 사용자 인터페이스와 함께 제공됩니다. 이 모듈에서는 Visual Studio Code의 통합 그래픽 디버거를 사용합니다.
디버거를 사용하는 이유
디버거를 통해 코드를 실행하지 않는 경우 프로그램에서 발생하는 상황을 ‘추측’하는 것일 수 있습니다. 디버거를 사용할 경우의 주요 혜택은 프로그램 실행을 ‘조사’할 수 있다는 것입니다. 프로그램 실행을 한 번에 코드 한 줄씩 추적할 수 있으며, 이러한 방식을 통해 잘못된 추측을 방지합니다.
모든 디버거에는 고유한 기능 세트가 있습니다. 거의 모든 디버거와 함께 제공되는 가장 중요한 기능 두 가지는 다음과 같습니다.
- 프로그램 실행 제어: 프로그램을 일시 중지하고 단계별로 실행할 수 있으므로 실행 중인 코드와 프로그램 상태에 미치는 영향을 확인할 수 있습니다.
- 프로그램 상태 관찰: 예를 들어 코드 실행 중 언제든지 변수 및 함수 매개 변수의 값을 확인할 수 있습니다.
숙련된 디버거 사용은 개발자의 중요한 기술이지만 간과되는 경우가 많습니다. 이를 통해 코드의 버그를 보다 효율적으로 헌팅할 수 있으며 프로그램의 작동 방식을 빠르게 이해할 수 있습니다.
이에 대해서는 다음 단원에서 살펴보겠습니다.