더북(TheBook)

3.12 디버깅

여러분이 얻어야 할 가장 중요한 기술 중에 하나를 꼽으라면 디버깅이다. 디버깅은 좌절하기 쉽지만, 프로그래밍에서 가장 지적이고, 도전적이고, 흥미로운 부분이다.

어떤 면에서 디버깅은 탐정이 하는 일과 비슷하다. 단서를 마주하고, 자신이 본 결과를 이끈 과정과 이벤트를 추론해야 하는 것이다.

디버깅은 실험 과학과도 비슷하다. 무엇이 잘못되었다는 아이디어를 내고, 프로그램을 수정하고 이를 다시 실행해본다. 자신이 세운 가설이 올바르다면 수정한 결과도 예측할 수 있고, 동작하는 프로그램으로 한 걸음 가까워진다. 가설이 틀렸다면 새로운 가설을 이끌어 내야 한다. 셜록 홈스는 이렇게 지적했다. 모든 불가능을 제외하고 남은 것이 아무리 불가능한 것이라 해도 믿어야 한다<네 개의 서명(The Sign of the Four)>(아서 코난 도일)

어떤 사람들에게는 프로그래밍과 디버깅이 같은 것이다. 즉, 프로그래밍은 프로그램이 원하는 동작을 할 때까지 프로그램을 점진적으로 디버깅하는 과정인 것이다. 이런 생각은 여러분이 동작하는 프로그램에서 시작해서 프로그램을 약간 수정하고, 동작해보면서 디버깅해야 한다는 것이다.

예를 들어 리눅스(Linux)는 몇백만 줄이 넘는 코드로 된 운영체제지만, 리누스 토르발스가 인텔 80386 칩을 탐험하기 위해 사용한 간단한 프로그램에서 시작되었다. 래리 그린필드에 따르면 리누스의 초기 프로젝트 중 하나는 AAAA 출력과 BBBB 출력을 전환하는 프로그램이었다. 이 프로그램이 후에 리눅스로 진화했다.<The Linux Users Guide Beta Version 1>

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.