전출처 : Klaus > [퍼옴] 디버깅과 탐정놀이

출처 : 300의 만담천하 ( http://hongsup.egloos.com/ )

퍼가실 때 출처를 표시하시기 바랍니다.
원출처로 가보시는 것도 권장합니다. 덧글 달린 것도 재미있어요 ^^

------------------------------------------------------------------

디버깅과 탐정놀이


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

 


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

 

- 하드보일드형

모든 문장과 문장 사이에 printf를 추가한다.

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

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


- 안락의자형

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

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


- 완전범죄형


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

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

 

- CSI 과학수사대형

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

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


- 미스 마플형

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

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


- 명탐정 코난형

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

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


- 소년탐정 김전일형

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

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


 


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기
 
 
 
 전출처 : Fithele > [코멘트]'디버깅과 탐정놀이'

(눈집에 올렸던 글입니다)

디버깅과 탐정놀이  알라딘 링크

나름대로 추가

-셜록 홈즈 형

불가능하다는 것을 제거한다면서 서브루틴 하나씩을 날려가다 보면 언젠가는 도는 코드가 나올 것이라고 생각한다.
허나 아침 일찍 나온 동료가 확인해 보면 놀랍게도 어쨌든 결과는 나온다.


-모스 경감 형

1.일단 아주 조심스럽게 코드를 짠다.
2.돌려보면 버그가 몇개 발견된다.
3.버그 사항을 머릿속에 기억하고, 새 파일을 열어 다시 짠다.
4. 위의 1-3과정을 시간 허락하는 대로 무한반복한다.

5. 완성되면 크로스워드 퍼즐 하나를 추가하는 것도 잊지 않는다.


-시드 핼리 형

반드시 체력충전용 아이템을 쌓아놓고 시작해야 한다. 아니면 손발이 오그라든다(...)
그래도 X나게 얻어터지고 우울 모드에 한번 빠진 다음에야
비로소 모든 것을 바로잡아 돌릴 마음이 생긴다.

(주 : 딕 프랜시스의 시드 핼리는 외팔이 탐정입니다. 건전지 없으면 작동 안하는 기계 왼팔을 달고 살죠.)


-네로 울프 형

아치, 혹은 더 낮은 다른 이름의 꼬붕에게 시킨다.

다른 분들이 추가한 아이디어

- 에르큘 포와로형 (이글루 영원제타님)
이 문제를 풀려면 4시간이 걸린다고 한다.
정말로 4시간만에 해결했다.
프로그램을 돌려보니, 인터페이스가 엄청시리 세련되게 바뀌어져 있다.
물론 버그도 없어졌다.
알고보니 버그 고치는데 30분,
인터페이스가 마음에 안든다고 바꾸는데 3시간 30분이 걸린것.

엘러리퀸, 파일로 반스, 루크 스카이워커, 한 솔로 등

실제 적용 사례

그냥 우스개 소리 같지만, 실제로 당하는 일을 곰곰히 따져보면 인생의 진실이 들어있다고도 할 수 있다. 다음은 내가 이틀 전에 겪은 이야기.

리X스로 유지되는 클러스터 기기에서 MPI 로 돌아갈 job 이 자꾸만 child process를 node에 집어넣지 못한다고 배째고 뻗는 긴급 상황이 발생. 맙소사.

일단 네로 울프형 - 연구실 형님께 물어봤다. 다른 유저로 switch해서 돌려보란다. 돌려 봤다. 안 돈다. 보다 못한 형님께서 자기 계정에 코드를 카피, 돌린다. 안 돈다. 심지어 전지전능한 루트의 권능을 빌어 봐도...

이 상황에서 우선 해봐야 하는 것은 하드보일드 형. PRINT문으로 MPI가 제대로 initialization이 되는지 봤다. 안 된다. 싱글 CPU로 돌려 봤다. 된다. -_-a

"혹시 컴파일러 문제 아닐까요?" 하는 전언이 옆에서 싸이하던 후배에 의해 대두 (미스 마플형) 그것도 일리가 있겠다 싶어 이전 버젼을 돌려 봤다. 죽는다. 황당해져 다 알지도 못하는 컴파일 옵션을 뺐다가 붙였다가, 이리저리 조정해 본다. 여전하다.

그 때 모리 코고로라도 품어봤음직한 의문이 고개를 든다. 근데 다른 사람들은 잘 돌리고 있잖아. 자네도 어제 저녁까지는 아무 일 없었고. 아예 다른 사람의 다른 프로그램을 돌려 봤다. 아.주.잘.돈.다. 환장한다. 혹시 컴 앞에 쓰러져 자다가 나도 모르는 줄을 하나 오타로 추가한 것 아냐? ㅠ.ㅠ (필자는 이런 거 생기면 거의 99프로 못 잡는다. 동기가 없는 범죄를 추적하기 힘든 것처럼) 선배 또한 황당한지 안락의자형으로 전환. 무언가 뜻모를 말을 중얼중얼 대며 생각에 빠진다.

어차피 근본이 미천하여 CSI형은 꿈도 못 꾸는 것. 결국, 여기서 셜록 홈즈 형으로 변신: "불가능한 것들을 하나씩 제거하다 보면 남는 것은 아무리 그지같은 코드라도 돌게 되어 있어." 백업해 놓고 처음엔 Makefile 내의 오브제를 하나씩 날린 끝에 문제를 일으키는 파일을 찾은 다음, 거기서 또한 서브루틴 or 루프 하나씩 날려가며 문제를 일으키는 부분을 찾았다는... 어쨌든 버그는 이 코드 안에 있어! (김전일)

결국 파일 하나를 토막살인낸 끝에 잭더리퍼형이라고 해야 하나 연쇄버그범(?)을 찾아냈다. save. 코드 속도를 빠르게 하기 위해 특정 변수값을 저장하도록 하는 명령인데, 이 명령을 지우니 문제가 해결되었다. 속도를 떨어뜨리겠군, 하고 안그래도 느린 코드를 한탄하고 백업본을 되살리는 작업에 들어갔는데...



사진은 위 내용과 아무런 관계가 없습니다

이 모든 것이 삽질임이 약 30분 후에 밝혀졌다. 마치 추리소설처럼, 범인은 전혀 의외의 인물(?)이었던 것이다. 메.모.리. 변수 크기를 좀 크게 잡았더니 클러스터가 약간 붐비기 시작하자 오바이트를 한 건데 사용자인 나는 아무 말이 없었으므로 몰라줬던 것. 미워 죽겠다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기
 
 
 

저희 어머니는 엄청난 대가족 출신이십니다.

자그만치 11남매 중 끝에서 세번째거든요.

음.  그 많은 형제분들 중에서도 가장 애절한 막내 동생분께서

다시 말해서 제 막내 외숙께서 일년에 한번씩 한국에 들어오십니다.

바로 이번 주에 오셨습니다.

저 죽는 줄 알았습니다.>.<

 

서재에 재미는 붙여서 글도 써야하는데,

일본 드라마 이번 시즌에 끝난 [인간의 증명]도 봐야하는데,

-안그래도 늦은 제 컴이 드라마를 다운 받기만 했더니 영 속도가 안나오더군요.^.^;;

화요일에 전화하신 울 외숙이 그러셨습니다.

목요일 도착입니다. 그 순간 하늘이 노랬습니다. 바로 대청소,

그날 밤부터 이틀동안 집에서 버린 쓰레기가 6박스였습니다.

그 결과 지금은 음. 생각보다 우리 집이 넓더군요.

그리고, 제 책들도 뜻밖에 자리를 잡고 들어가니 생각보다 많지 않네요.

음..........이 기회에 ABE를 저질러봐? ^.~

 


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기
 
 
 

뮤지컬의 잘생긴 남자배우들

혹은 그 배우들이 나오는 뮤지컬,

제 주변 사람들이 항상 동시에 버닝하는 대상이 있는대,

그건.

그가 한다는 말하나로도 공연을 끊는 사람들이 주변에 많습니다.

저야 나름대로 그 안에서 주신을 잡고 있지만,

혹은 잡고 있다고 착각하지만.....

 

그리고 제가 특별히 버닝하는 대상은 Stephen Sondheim이란 뮤지컬 작사가입니다.

뮤지컬 작사가라면 공연을 보고 혹은 노래를 보고 좋아했어야할텐데,

전 그의 외모를 보고 반했습니다. ^.^:; 

너무너무 귀여워서 정신을 못차리고,

그래서 그의 음반들을 사모으고,

그 많은 공연들-이 분은 30년생이시고

50년도 이후로 계속 작품활동을

주구장창 해주시는 분입니다. ^.^:;

 그 공연들 속에서 그의 깜찍함을 느끼며

또 다시 정신을 잃습니다.

그래서 은근히 사모으는 씨디가 상당수 됩니다.

그럼에도 불구하고 망망대해에 조약돌 던지는 수준입니다.

이분 관련 씨디중 기본만 154개더군요. 음........이분 때문에 파산할 지도 모르지만

그래도 너무 좋습니다. 귀엽습니다. ^.~


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기
 
 
 

며칠 전에 아영엄마님 서재에서

로제와 루이트? 뭐 그런 제목의 아 몇글자도 못 외우는 나의 머리여! 책의 리뷰를 보았습니다.

앗 제가 아는 책이더군요.

도대체 어디서 봤을까?

어린 시절 나름대로 엄마의 극성 속에 끊이지 않고 책을 읽었지만

늘 전집류였습니다.

그래서 아마 제가 읽은 전집류중의 한권일텐데........

우선 가장 어렸을 때 읽은 (정확하게 말하면 기억 나는)그림나라 100

이 시리즈는 원래 100권이 나오기로 하면서 기획된 건대 저는 20권까지 읽었었습니다.

종이도 좋았고, 그림도 당시 화가들이 그렸다고 기억되는데 중간에 중단된 기획 같더군요.

한국 위인전 10권 뒤이어 세계 위인전도 나온다고 했었던 걸로 기억나는데,

전 한국 위인전만 읽었었습니다. 그리고 책 뒤쪽에 2페이지짜리 간략한 위인들의 이야기가 있었지요.

그리고 계몽사에서 나왔던가요?

한국역사만화10권인가와 세계역사만화를 읽었었지요.

그 이후에는 지금 기억나는 것은 없고 바로 저 태어났을 때 울 엄니가 사셨다는 엄청난 전집세트

삼성당에서 나온 세계문학전집, 한국문학전집을 읽기 시작했지요. 그게 4학년 즈음의 일이라,

그냥 읽기 쉬운 책들을 읽었습니다. 제인에어, 아라비안나이트 등 

그 당시에는 세로줄 잘 읽었는대 요즘은 영 못 읽겠더군요.

한국문학전집은 오히려 중학교 가서 읽은 것 같네요.

그건 주로 단편 위주로 읽었지요. 읽기 너무 힘들어서,

그때 같이 사셨던 세계 사상 전집과 한국 사상 전집은 나중에 대학에 와서 몇권 펼쳐보다 만 수준이고,

그리고 5학년 때인가 사주신 책이 ABE입니다.

워낙에 극성맞게 공부시키는 초등학교를 다닌 덕에 그리 많이 읽지는 않았구요.

물론 제 게으름이 원인의 8할이겠지만,

결국 ABE는 88권 중 다 읽지 못하고 한 20권 읽었나? 그리고 자리를 차지했었습니다.

1권부터 착실하게 읽으려고 했다가 2권의 내용이 너무 어려워서 쉬워보이는 것만을 골라 읽은 것이

오히려 다 못 읽은 패인에 되었지요. ^.^;;

결국 중학교 때인가? 고등학교 때 그 책들을 다른 사람들에게 넘겨주고 말았는데,

지금도 그 책들을 생각하면 아쉽습니다. 참 괜찮은 책들이 많았던 것 같은데,

그런데 아영엄마님의 리뷰를 보니 그 ABE에 있었던 책이 아닌가 생각이 간절하면서

지금이라도 그 책들을 구하고 싶습니다.

그래서 어제 밤에 검색을 했더니 한 헌책방에 나와 있더군요.

총 13만원. 음........갖고 싶습니다. ^.~


댓글(6) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기
 
 
panda78 2004-09-18 00:13   좋아요 0 | 댓글달기 | URL
에이브 54권 <헤여졌을 때 만날 때>로 있었답니다. 에이브에 참 좋은 책이 많죠. 초원의 집 시리즈도 있구요. 전 결혼한 다음에 모으기 시작해서 안좋아했던 거 빼고.. 한 70권 모았답니다. 사셔도 후회는 안 하실 듯 해요. 낱권으로 사신다면 좋아하셔던 것만 골라서 모으셔도 좋을 것 같네요. 에이브 이야기가 나와서 반가워서 댓글 답니다. ^ㅡ^

soyo12 2004-09-18 00:17   좋아요 0 | 댓글달기 | URL
아, 13만원, 지금 정말 가슴 저리게 갈등하고 있습니다. 돈도 돈이고 그리고 공간도 문제입니다. ^.~

물만두 2004-09-18 07:16   좋아요 0 | 댓글달기 | URL
우리집에는 다 있다는... 그거 무지 비싸던데... 다른 곳도 알아보세요...

soyo12 2004-09-18 11:01   좋아요 0 | 댓글달기 | URL
음, 그럼 책 상태가 안좋은 걸까요? ^.~

panda78 2004-09-18 16:19   좋아요 0 | 댓글달기 | URL
저는 그럭저럭 괜찮은 상태의 것으로 40권 2만원에 산 걸요.
13만원이면 꽤 좋은 상태라고 생각되는데..
(보통 낱권으로 1500-2000원선에 팔지 않나요?)

soyo12 2004-09-19 07:45   좋아요 0 | 댓글달기 | URL
헌책방에서 뭘 사본 적이 없어서 걱정도 되면서도
구하고 싶다는 욕망에 번민하고 있습니다.^.~