• Versions available for this page:
  • Debug 1.5
  • Add new page
  • Edit page
  • Delete page
  • History view
Views 40594 |IP *.5.5.8

DEBUG 이야기

2013-04-18 8:39 PM | By 우진홈 Updated | 2013-04-30 21:07

"DEBUG"라는 용어는 "~으로부터(from) 벌레(bug)를 제거(de)한다"는 의미이다. 문자 그대로 버그는 곤충을 뜻하는데 컴퓨터에서 "디버깅(debugging) 한다."는 것은 운영 중인 프로그램 코드 안에서 또는 기계적인 부품과 장치들로부터 잘못된 부분이나 예기치 않게 발생 된 오류의 원인을 찾아 해결해 나가는 일련의 과정을 의미한다.


"어떻게 프로그램 코드 안에서 벌레를 잡는다는 것인가?"


"디버그"라는 용어가 만들어지게 된 유래에 관해서는 다소 논란의 여지가 있긴 하지만 가장 잘 알려진 이야기는 2차 세계대전이 끝난 직후인 1947년 하버드 대학에서 일어났던 마크Ⅱ(MARKⅡ) 컴퓨터와 그레이스 호퍼(Admiral Grace Hopper)의 일화에서 찾아볼 수 있다. 그레이스 호퍼는 최초로 컴퓨터 컴파일러를 개발하고 프로그래밍 언어인 코볼(COBOL) 개발에 기여하기도 했으며 이후 미국의 첫 여성 해군제독이 되었던 인물로도 유명하다.


1947년 여름, 당시 호퍼는 하버드 대학에서 마크Ⅱ 컴퓨터를 이용해 연구 중이었는데 컴퓨터가 자주 고장을 일으켰다고 한다. 호퍼와 동료들은 고장의 원인을 찾기 위해 컴퓨터 내부를 들여다보며 조사하던 중, 릴레이(relay)의 접점 사이에 끼어 들러붙어 죽어있는 나방(moth) 한 마리를 발견하게 된다. 실제로 컴퓨터 시스템 안에 벌레가 있었고 이로 인한 누전으로 컴퓨터가 오작동한 것이다. 그녀와 동료들이 문제가 된 나방을 조심스럽게 제거(De-bugged)하자 컴퓨터는 다시 정상적으로 작동하게 되었다. 호퍼는 이때 제거했던 나방을 자신의 일지에 테이프로 붙여두고 "발견된 버그의 첫 실제 사례(first actual case of bug being found.)"라고 기록하였다. 이 사건 이후 그레이스 호퍼는 컴퓨터 프로그램에서 오류의 원인을 찾고, 추적하고, 발견된 문제들을 제거하거나 수정하면서 해결해 나가는 일련의 과정을 "DEBUG" 또는 "debugging"이란 개념으로 표현하게 된다.


debug.png

출처 : Smithsonian


호퍼의 일화는 위에서 제기했던 의문, 즉 프로그램 코드 안에서 벌레를 제거한다는 개념에 대해 구체적인 근거를 얻기에는 충분하지 않은 것처럼 보일 수 있다. 사실 그레이스 호퍼가 발견한 최초의 컴퓨터 버그 이야기는 프로그램 바깥에서 일어난 사건이고 이와 유사한 의미의 디버그라는 용어는 이미 오래전부터 전기설비 분야 또는 비행기의 엔진제작 기술 분야 등에서 종종 사용 되어져 왔다. 그레이스 호퍼 자신도 추후 이 용어 사용에 대해 당시에는 전혀 새로운 개념으로 사용하지 않았음을 말한다. 하지만 얼마 후, 컴퓨터 프로그램 개발자들은 문제를 일으키는 오류나 잘못된 소스 코드를 가리켜 "BUG"라고 표현하기 시작했다. 이것은 개발자들 스스로가 작성했던 코드 속에서 의도하지 않게 발생한 오류에 대해 내심 숨기고 싶은 마음과 벌레 때문이라는 애교스러운 장난끼를 섞어 만든 공통된 의사표현의 한 방법이 되었던 것이다.


EdisonPhonograph.jpg 시대를 좀 더 거슬러 올라가 컴퓨터가 세상에 아직 없었던 시절, 발명왕 토마스 에디슨 역시 벌레 잡기에 골머리를 앓고 있었다. 그가 만든 축음기는 원통형의 실린더를 돌려가며 작은 바늘로 긁어서 나는 소리를 나팔 모양의 관을 통해 큰 소리로 증폭시켜 들을 수 있도록 만든 소리 기계이다. 나팔의 크기와 재질 그리고 모양에 따라 음질도 확연히 달라진다. 그런데 크고 맑게 들리던 축음기의 소리가 어느 날은 벌레소리처럼 작고 매우 답답하게 들린다. 에디슨과 동료들이 고장난 듯 한 축음기를 조심스럽게 살펴보니 나팔관 안쪽 끝에 실제로 작은 벌레가 끼여 있는 것이다. 바늘이 붙어 있는 관의 끝 부분은 깊이 들어갈수록 매우 좁아져서 벌레가 기어들어 간다면 쉽게 돌아 나올 수 없는 좁은 구조였다. 이때 에디슨과 동료들이 서로 주고받은 편지에서 등장했던 단어 역시 "discovering a bug"이다.


하지만 이런 일은 매우 자주 반복되었다. 따라서 매번 같은 이유로 버그라는 용어를 사용하지 않았던 것 같다. 에디슨의 버그는 축음기에서 문제를 일으킨 곤충만을 가리킨다기보다는 에디슨의 발명품 전체에 대한 사후 기술적인 문제들과 수정을 위한 고충들을 매우 은유적으로 표현하기 위해 버그(Bugs)를 대입했던 것이다. 그도 그럴 것이 당시에는 도출된 문제점에 대해 대체할 만한 기술도, 소재도 매우 부족한 시대였기 때문이다. 다음의 내용은 에디슨과 동료들의 편지글 중 일부분이다.


"Bugs" - as such little faults and difficulties are called.

"discovering 'a bug' in his phonograph" - an expression for solving a difficulty, and implying that some imaginary insect has secreted itself inside and is causing all the trouble.


에디슨의 버그를 이야기하다보니 어느새 "BUG"는 실제 곤충 이상의 숨은 의미를 내포하고 있다는 사실을 알게 되었다. 그레이스 호퍼 사건 이후 프로그램 개발자들은 기계적인 결함은 물론 프로그램 안에서 오류의 원인이 되는 고장 난 소스 코드를 가리켜 제2의, 제3의 버그라고 부르기 시작했고, 오류를 제거한다는 뜻의 "DEBUG" 또는 "debugging"이라는 용어는 곧 프로그램 언어의 표준어가 되었다.



2
Recommended
  • buildin
  • 자유로

⇒ Comments have been disabled for this page.

Today62|Yesterday456|Total Visitors694,597

User ID
Password