디버거(debugger)는 프로그램의 명령을 수행함에 있어 컴퓨터의 상태를 보여주거나 오류(또는 에러) 발생 시 오류를 쉽게 찾을 수 있도록 도와주는 프로그램이다.
[ 그림 7.12 ]
프로그램 과정에서 나타나는 문제를 일반적으로 에러(error) 또는 오류라고 한다. 오류는 크게 컴파일 시간에 발생하는 오류, 링크 시간에 발생하는 오류, 그리고 실행 시간에 발생하는 오류로 구분할 수 있다. 이를 각각 컴파일 (시간) 오류, 링크 (시간) 오류, 실행 (시간) 오류라 한다.
이러한 다양한 오류를 수정하는 과정을 디버깅(debugging)이라 한다. 디버깅이란 버그를 잡는다는 의미로 여기서 버그란 바로 오류를 의미한다. 실제 응용 프로그램 개발에서 처음부터 오류가 없는 프로그램을 작성하기란 거의 불가능하다고 볼 수 있다. 그러므로 디버깅 과정은 매우 중요한 일이다. 이 디버깅 과정에서는 많은 경험으로 오류를 쉽게 찾아 수정할 수 있다.
<aside> ❗ IT Story 디버깅의 유래 "아, 여기에 벌레(bug)가 있었네!" 1947년 9월 9일. 하버드대에서 근무하던 한 여성 프로그래머가 컴퓨터가 멈춘 원인을 찾던 도중 컴퓨터 패널의 릴레이 사이에 끼어 있는 나방을 발견했다. 그녀는 미 군함 계산식 프로젝트를 맡아 하버드대에서 마크 II 컴퓨터를 담당하던 그레이스 호퍼(Grace Hopper) 중위였다. 당시 최고 성능의 최신식 디지털 컴퓨터였던 마크 II는 그녀의 사오간인 해군 예비역 중령 하워드 에이킨(Howard Aiken)이 만든 것이었다. 하버드대 물리학과 출신으로 까탈스런 성격의 소유자인 에이킨은 IBM과 함께 마크컴퓨터 시리즈를 개발한 인물이다. 호퍼 중위는 릴레이 사이에서 벌레가 발견된 전후 정황을 컴퓨터 로그기록 노트에 자세하게 적었다. "08:00, 작동 시작, 10:00, 작동 멈춤, 릴레이를 교환하다. 11:00 코사인테이프 시작. 15:25, 멀티 덧셈기 테스트하다. 15:45, 70번 패널 릴레이에서 실제 벌레(버그)가 낀 것을 처음 발견하다." 그녀는 곧바로 그 나방을 테이프로 노트에 붙여 놓았다. 지금과 달리 컴퓨터는 기계식이었고 자전거 체인과 같은 릴레이로 된 방식이 대부분이었다. 이러한 작동부분이 몇 군데나 되었기 떄문에 당시에는 나방이나 각종 벌레, 심지어 쥐가 기계를 고장내는 일이 다반사였다. 1940년대 당시에도 버그라는 용어는 어느 정도 사용되었지만, 진짜 '버그'가 컴퓨터 오작동의 원인이 된 것은 호퍼의 사례가 처음이었다고 한다. 이러한 일에서 유래되어 프로그램이 잘못 작동하면 '버그가 있다'고 말하기 시작했고, 버글르 없애는 일을 '디버그한다(debug, 벌레 잡는 일)'라고 하기 시작했다. 호퍼가 나방을 붙여 작성한 노트는 미 해군에 여러 해 동안 보관되다가 스미스소니언 박물관에 보관되어 있다고 한다. [ 그림 7.14 ]
</aside>