2004년 2월 28일 토요일

버그(bug)

프로그래머는 버그와 싸운다. 세상에서 제일 싫은 단어다.

하지만 때로는 버그가 프로그래머를 돕는 다.
작은 버그를 통해 큰 버그를 잡을 수도 있다.
마치 환자가 작은 병을 치료하러 병원에 왔다가 의사로 부터 우연히 큰 병을 발견할 개기를 주는 것처럼 말이다.

또한 reverse engineer에게도 버그는 중요하다. 소스를 구할 수 없는 프로그램의 경우 정해진 동작만을 보고 그대로 따라해야 하는 데 버그가 있다면 그것을 통해 프로그램 내부의 움직임을 추적할만한 더 많은 정보를 얻을 수 있게 된다. 내부에 대한 정보가 많으면 많을 수록 더 쉽게 따라할 수 있게 된다.
어떤 알고리즘, 어떤 메카니즘을 수행하다가 버그가 낫는 지 각자에 따라 버그의 유형이 다르기 때문에 내부에 대한 정보가 된다.

그래서 reverse engineer들도 bug를 잡는 툴인 debugger를 이용한다.
linux kernel 버젼 중에서 어떤 것은 디버깅 툴인 gdb를 이용한 해킹 기법도 나와있다.

댓글 없음:

댓글 쓰기