초창기 컴퓨터 안에 들어간 벌레를 잡아 고장을 해결한 이래로 프로그램의 문제를 찾고 해결하는 과정을 디버그(=삽질)라고 부르게 되었다. 현재는 프로그램 개발뿐만 아니라 악성코드를 분석하거나 취약점을 찾기 위해 코드를 한 줄씩 따라가는 것도 디버깅이라고 부른다. 디버깅을 하지 못한다면 문제가 발생했을 때 남에게 의존할 수밖에 없으므로 힘들더라도 부딪히는 습관을 들이자.
프로그래밍을 하다 보면 에러가 발생하거나 내 생각과는 다르게 동작할 때가 있다. 에러가 발생했다면 문법에 맞게 그 부분만 고치면 된다. 하지만 다른 결과 값이 나왔다면 나의 알고리즘이 틀렸음을 의미하기 때문에 문제를 찾아가는 디버깅이라는 과정이 필요하다.
팁을 주자면 에러가 발생할 곳을 미리 찾고 막아야 한다. 사용자는 내가 원하는 대로 프로그램을 실행시키지 않는다. 생년월일을 입력하는 곳에 이름을 입력하고 자신의 나이를 음수로 입력한다. 미리 막지 않는다면 어느 날 버그가 발견될 것이고 잠자다 밤에 불려 가 패치를 하기 위해 디버깅의 늪에 빠지는 고통이 따를 것이다.
프로그래밍 실력은 디버깅 시간과 비례한다고 생각한다. 디버깅을 많이 하다 보면 문제를 빠르게 찾고 코딩 속도가 향상된다. 그리고 어느 순간부터 디버깅이 필요 없어지고 머리로만 알고리즘을 생각할 수 있는 실력이 되어 있을 것이다.
초급 자라면? 정말 많은 시간을 디버깅을 위해 투자해야 한다. 아니 투자할 수밖에 없다. 그리고 다들 이때 프로그래밍을 포기하게 된다. 문제를 해결하기 위해 바친 시간이 아까울 수 있고 진전이 없기 때문에 답답할 수 있다. 하지만 그 경험들이 쌓여 훌륭한 개발자가 되는 것이기 때문에 긍정적으로 생각했으면 좋겠다. 그래도 지금은 디버깅을 도와주는 괜찮은 프로그램이 많으니 나에게 적합한 프로그램을 찾아 익숙해지자.
IDE라는 통합개발환경 프로그램을 설치하면 쉽게 프로그래밍, 디버깅을 할 수 있다. 언어마다 여러 종류의 IDE가 있기 때문에 나에게 잘 맞는 IDE를 하나 선택해서 익숙해지는 것이 좋다. 좋은 IDE가 많지만 여기에서는 C++ 언어에서 많이 쓰이는 Visual Studio에 대해 간단히 소개하고 설치방법을 보여주고자 한다.
구글에 Visual Studio 검색하고 최신 버전의 Visual Studio Community를 설치하자. 그림 순서대로 따라 하면서 설치하면 된다.
간단하게 프로젝트를 만들어보고 기능을 알아보자
Visaul Studio를 실행시키면 처음 보는 단어들을 사용하면서 로그인을 하라고 한다. 가볍게 무시하고 나중에 로그인을 클릭한다. Azure 크레딧, 프라이빗 Git, 리포지토리... 이런 단어들은 추후에 설명하도록 하겠다.
코드를 작성해서 프로그램을 만들 때 원하는 결과물이 있을 것이다. 실행파일일 수도 있고 라이브러리일 수도 있다. 그때 필요한 소스코드, 이미지, 라이브러리 등을 모아서 관리하는데 이 집합을 프로젝트라고 한다.
우리가 만들려는 프로그램은 Hello World라는 문자열을 출력하는 아주 간단한 프로그램이다. 빈 프로젝트를 생성해주자. 다른 템플릿은 GUI라고 우리가 알고 있는 일반적인 마우스를 이용한 프로그램을 만들기 위해 사용된다.
프로젝트 이름은 우리가 원하는 최종 결과물을 잘 요약해서 적어준다. 한번 결정하면 수정하기 쉽지 않다.
솔루션 탐색기라는 창이 뜨게 되는데 알 수 없는 단어들이 보인다. 참조, 외부 종속성, 소스 파일, 헤더 파일은 무엇인가? 하나하나 설명하면 정말 끝이 없다. 나는 C++을 알고리즘 문제를 풀 정도의 수준까지만 가볍게 설명할 예정이므로 짧게 설명하겠다. 우리는 소스파일 폴더만 이용할 예정이므로 이해하지 않아도 된다.
참조는 다른 사람이 개발한 프로젝트 또는 완성된 결과물을 이용하고자 할 때 사용된다.
외부 종속성 폴더는 다른 사람이 개발한 코드를 이용하고자 할 때 사용된다.
리소스 파일은 이미지, 아이콘 같은 리소스 파일들을 관리하기 위해 사용된다.
헤더 파일은 C++을 깊이 이해해야 그 필요성을 알 수 있다. 코드가 길어지고 프로젝트가 복잡해질 때 효율적으로 프로젝트를 관리하기 위해 사용된다.
main.cpp라는 파일을 만들고 아래에 있는 코드를 작성해보자
그리고 디버그 메뉴의 디버그 하지 않고 시작 메뉴를 클릭한다. 우리는 앞으로 디버깅 시작, 디버그 하지 않고 시작 버튼만 이용할 것이다. 모든 기능을 이해하다 보면 재미가 없어지고 개발을 포기할 수 있기 때문에 다른 기능들은 프로그램 개발이 재밌어지고 C++ 언어가 어느 정도 이해가 될 때 그때 배워보자.
실행시키면 검은 창이 뜨면서 Hello World와 a: 10이라는 문자열이 출력될 것이다.
컴파일이라는 과정을 통해 프로그램이 만들어졌고 동시에 실행이 되었다.
비록 48KB밖에 안 되는 짧은 프로그램이지만 우리가 처음 만든 프로그램이다. 이 프로그램을 USB 복사한 후 같은 환경의 64bit 윈도우 10, 동일한 버전의 PC에서 실행시킬 수 있다. 조건이 까다로울 수 있다. 컴파일은 그만큼 운영체제에 종속된 과정이기 때문에 환경이 조금만 달라도 실행이 안 된다. 윈도우 7에서는 당연히 실행이 안 될 것이다. 걱정하지 않아도 된다. 파이썬은 파이썬이 설치된 어느 곳이든 문제 없이 실행될 것이므로!