버그

백괴사전, 너희 모두의 백과사전
둘러보기로 가기 검색하러 가기
Disambig grey.svg 이 문서는 소프트웨어에서 일어나는 문제점에 관한 것이거든. 그니깐 그 조그만 생명체에 대해서는 벌레 문서를 보란 말이다.
Dialog-stop-hand.svg 이 프로그램은 너무나도 위험합니다!
부디 이 문서를 읽고 꼭 살아서 돌아오소서!

면책 조항: 이 프로그램으로 인해 죽거나, 다치거나, 재산을 잃는 등의 피해를 입어도 백괴사전은 절대 책임지지 않습니다.

Ultimate gun.jpg
True.svg 이 문서는 사실을 근거로 한 내용을 담고 있습니다!
이 문서는 비록 백괴사전에 등록되어 있지만 최대한 사실에 근거하여 만들어진 문서입니다.

면책 조항: 이 틀이 달려 있더라도, 사실이 아닐 수 있습니다.

당신의 뇌가 급증하는 정보량을 이기지 못하고 폭주하는 모습 이 문서는 그 내용이 위키백과처럼 진지하고 어려워서, 읽는 순간 다음과 같은 문제가 발생할 수 있습니다.
다음 글을 읽는 순간 가 제 스스로 포맷을 할 것이며,
['Press Any Key to Boot From Brain'....]
컴퓨터마저 오류를 일으킬 것입니다.

“버그 때문에 아이템이 풀려서 잠시 백섭 좀 하겠습니다”

돈슨

버그는 주로 프로그램에 돌아다니는 벌레로, 각종 죽이기 스킬을 시전하여 사람들을 휩쓸 수 있는 엄청난 잠재력을 가진 존재다. 주로 소프트웨어의 오작동을 담당한다.

유래[편집]

하버드 대학교의 마크3라는 컴퓨터가 있었는데, 이 컴퓨터의 계전기에 나방이 붙어버리는 바람에 제대로 작동하지 않았다. 후에 버그라는 말이 유명해질 것을 예상한 개발자는 나방을 휴지로 싸서 쓰레기통에 버리지 않고 테이프로 이 나방을 잘 붙여놓았다. 그의 예상대로 버그라는 말은 나중에 흔히 쓰이게 되었으며, 에디슨을 벌기 위해서는 버그를 잡아야 한다며 그 단어를 살짝 언급했다. 유명한 사람이 말했다는 것, 그리고 버그라는 말을 썼다는 것 때문에 이 말은 두고두고 남게 되었다. 또한 당시 그 나방도 최초의 버그라는 이유로 보고서와 함께 박물관에 소장되어 있다. 최초의 버그는 사람의 의도와는 관계없이 벌레가 공격한 것이었다면 현재 말하는 버그는 개발자의 실수로 일어나는 것이다.

원인[편집]

버그의 원인은 다양하다. 첫째, 오타어로 인해 버그가 발생할 수 있다. 이는 프로그램에 서식하는 버그가 오타어를 먹고 자라기 때문이다. 그렇기 때문에 컴파일을 할 때 오타어는 단 하나라도 허용하지 않는다. 예를 들어 비주얼베이직에서 A라는 변수를 선언했는데 손이 미끄러져서 A 옆에 있는 S를 변수명으로 쓴 경우, 문제가 발생할 수 있다. 둘째, 논리적인 오류로 인해 버그가 발생할 수 있다. 이 부분은 오타어와는 달리 컴파일러가 코드 청소를 하면서 날려먹는 경우가 대다수고 컴파일 후에도 동작하지만 꼭 나사가 빠진 부분이 있거나 원하지 않는 결과가 나올 수 있으므로 알아서 잘 찾아야 한다. 프로그램이 완성된 후 유지보수가 이루어지는 이유가 바로 이 논리적인 오류 때문이다. 셋째, 프로그래머의 실력이 너무나도 병크스러운 나머지 자원을 이상하게 활용하여 오류를 내뿜으며 종료가 되거나 스스로 멈추어버린다. 메모리 누수, 버퍼 오버플로 같은 것이 이에 해당하며 버퍼 오버플로의 경우 잘못하면 크래킹당하기도 한다. 혹은 있지도 않은 포인터 값을 가리켜서 컴퓨터에게 혼란을 준다. 넷째, 연산 오류로, 0으로 나누기가 이에 해당한다?. 다섯째, 나는 버그가 발생하는 더 많은 원인을 알고 있으나 여백이 부족해 여기에 다 적지 않겠다.

피해[편집]

버그는 프로그램의 규모에 따라 가벼운 해프닝으로 끝나기도 하지만 시간과 예산을 낭비하는 결과를 초래하는 것은 물론 목숨을 잃게수도 있다. 방사선 치료기를 제어하는 프로그램에 버그가 있어서 사람들이 대량 학살을 당하기도 하였으며, 비싼 로켓공중분해되기도 하고, 잘 날아가던 비행기운지하기도 한다. 백괴사전 has a problem이라는 대재앙도 버그에 의한 것이다.

Y2K 버그(밀레니엄 버그)[편집]

1990년대 가장 큰 문제로 알려진 버그로, 당시 2 바이트, 2 바이트 절약을 위해 관용적으로 사용한 YYMMDD 형식 날짜가 원인이다. 2000년 1월 1일은 당해 형식으로 000101 인데, 이 경우 컴퓨터가 1900년으로 인식할 수 있어 자칫 부카니스탄 핵폭탄이 오발될 수 있었다. 또한 이 형식으로 원자력 발전소가 급 작동 중지하거나 일본 후쿠시마 원자력 발전소처럼 터질 수도 있기 때문이었는데 알 게 뭐야. 그래서 사람들은 살기 위해 PC, OS 등을 교체하는 등이 유행이 되어 컴퓨터 회사와 나치크로소프트의 배를 불려주었다. 다행스럽게도, 2000년 1월 1일 아무 일도 일어나지 않았다.

예방법[편집]

스스로 먼저 테스트해본다. 할 수 있는 실험은 다 해 보고, 프로그램의 각 함수와 기능을 조각조각 나누어 테스트해본다. 일단 자신이 보기에 문제가 없다고 생각하면 애퍼처 사이언스처럼 실험 대상을 모집하여 그들에게 알파와 베타 버전을 따로 뿌리거나, 무료로 나누어주는 소프트웨어의 경우 일단 뿌린 뒤 책임을 지지 않는다. 물론 테스터들은 들끓는 버그에 불만을 나타낼 것이고, 개발자들은 이 말을 듣고 수정에 들어가며, 버그를 찾아 항의한 사람에게 케이크나 주겠지만 알 게 뭐야. 버그를 예방하고, 이미 일어났다고 하더라도 앞으로 더 이상 피해가 생기지 않게 하려면 유지보수를 잘 해야 한다. 현실상의 벌레나 소프트웨어상의 벌레나 마찬가지로 그들은 아무도 관리하지 않는 어둡고 습한 곳을 좋아한다.