라이프로그


디버깅을 탐정놀이와 비교한 글이다.

나도 디버깅을 하면서 이짓을 어디선가
봤는데..라는 생각과 함께...디버깅을 했던적이 여러번 있었건것 같다.

그러면서, 어쩔때는 CSI수사대원이 된듯한 느낌으로
어쩔때는 경찰관이 된 느낌으로
어쩔때는 탐정이 된 느낌으로
디버깅에 임했었던것 같다.

이런 경우를 디버깅과 탐정놀이라는 글로
잘 표현한 글이 읽어 긁어 왔다.

공감 이빠이데스요~~!!!



디버깅과 탐정놀이


SW 엔지니어로서, 디버깅은 사실 탐정놀음과 비슷합니다. 어디가 원인인지 찾아내는 게임...

디버깅 기법을 탐정들의 스타일에 따라 분류해 봤습니다.


- 하드보일드형

모든 문장과 문장 사이에 printf를 추가한다.
어떤 문장이 문제를 일으키는지 끈기 있게 추적한다.
한줄씩 따라가다보면 문제가 되는 문장을 찾을 수 있기 마련이다.

가끔 담배를 피우러 나가는 것을 잊지 않는다.
잠은 사무실에서 아무렇게나 자는 편이 좋다.


- 안락의자형

가만히 앉아서 모니터를 뚫어져라 응시한다.
전혀 움직이지 않고 몇시간이고 코드를 쳐다본다.
가끔 혼자서 뭐라고 중얼중얼 거리기도 하는데 옆사람은 못알아 듣는다.
그러나 갑자기 마구 타이핑을 하더니 버그를 잡아낸다.

다 좋은데 옆에서 보기엔 미친것 같다.


- 완전범죄형

프로그램을 짤 때 부터 애시당초 머리속으로 무척 많은 생각을 한다.
코드 한줄 한줄 마다 모든 부가효과(side effect), 예외상황(exception), 잘못된 입력을 염두에 둔다.
심지어 멀티 슬레드 코드로 사용되는 경우도 생각하고, 에러 리턴 코드도 구조적으로 만든다.

버그없는 코드는 완전범죄만큼이나 불가능 하다.
결국엔 항상 사소한 것에서 문제가 발생한다.


- CSI 과학수사대형

소스 디버거의 브레이크 포인트는 기본이다. 조건부 브레이크-포인트는 물론이요 스택 트레이스를 한다.
퓨리파이어 같은 소프트웨어로 메모리 leakage도 검사한다.
gprof나 VC-profiler로 프로그램의 병목도 찾아낸다. spi++같은 것도 능숙하게 사용한다.

다른 사람보다 항상 제일 늦게 디버깅을 마친다.


- 미스 마플형

엔지니어들이 디버깅하다 안되서 휴게실에 나가 담배를 태운다.
이런저런 문제점들에 대해 논의를 하고 있는데 옆에서 쓰레기통 비우던 아줌마가 말한다.

"그럴땐 대게 클래스 destructor에서 널 포인트를 지우는 바람에 그렇게 되는데..."


- 명탐정 코난형

디버깅을 시작한다.
어려운 코드를 들여다 보니 잠만온다.
일어나면 코드가 디버깅 되어 있다.

옆에서 네이버 지식인을 습격하고 있는 초딩이 의심스럽다.


- 소년탐정 김전일형

버그의 원인이 될만한 모듈을 고립시킨다.
코드를 고치려다 버그가 하나 더 발생한다.
버그가 하나 더 발생한다.
버그가 하나 더 발생한다.
이건 연쇄 버그다.
시스템이 크래쉬 한다.

....어쨌거나 버그는 이 안에 있다.


덧글

  • Woof 2007/11/05 13:06 # 삭제

    버그는 이 안(코드)에 있어 !

    가끔 바깥에서 충돌나는 경우도 있어서 난감. :)

    재미나네요. 윗글 포함. :|
※ 이 포스트는 더 이상 덧글을 남길 수 없습니다.



통계 위젯 (화이트)

1214
166
564904

이 이글루를 링크한 사람 (화이트)

105