Sep 012010
 

정석 맞다. 이런 책이 늦게 나온 게 아쉽다. 읽으니깐 신입 프로그래머 시절에 하던 디버깅 방법이 생각났다. 제대로 재현도 하지 않고 코드를 읽다가 의심되는 곳을 발견하면 수정. 실행해서 버그가 발생하지 않으면 ‘고쳤구나!’. 제대로 넘어갈 리가 있나. 당장 다른 곳에서 문제가 안 발생하면 이후 버그는 삐딱해질 대로 삐딱해져서 나를 찾아온다.

난 어깨너머로 제대로 디버깅하는 방법을 배웠다. 그때는 디버깅을 체계적으로 가르쳐주는 책도 없었다. 선임 프로그래머가 디버깅하는 걸 지켜봤는데, 내가 한 방법이랑은 확연히 다르더라. 게임 안에서 재현하고 의심되는 코드에 특정 값을 하드 코딩해서 확실하게 발생하는지 확인한 후 그 원인을 수정, 그리고 검증. 난 이렇게 어깨너머로 배웠다. 이 책을 그때 읽었더라면 좀 더 빨리 제대로 배울 수 있었을 텐데, 아쉽다.

Continue reading »

by-nc-sa
Nov 082009
 

아꿈사에서 ‘프로그램은 왜 실패하는가?’라는 디버깅 책을 공부했었다. 이 책이 끝나고 난 뒤, 너무 이론에 치우쳐 있어서 아쉬우니 실전에서 쓸 수 있는 경험들이 담긴 디버깅 서적을 공부하자고 했다. 고르고 고르던 중에 걸린 이 책. 윈도우 시스템에 관한 이야기도 많아서 참 어려웠던 책이었다.

각 장마다 모두 직접 해볼 수 있는 예제들이 실려 있다. 이 예제를 가지고 책에서 설명하는 대로 따라가며 실습하는데, 감염(infection)된 상태를 구별하고 결함(defect)을 찾기까지 생각하고 의심하는 방식을 잘 다뤘다. 버그를 수정하는 자체로는 배울게 그닥 없지만 그걸 해결하는 과정에서는 참 배울 게 많은 법이다.

이 책에서 windbg를 사용해 설명하지만 이게 큰 상관이 있겠나 싶다. 결함(defect)을 추적하는 과정에서 감염(infection)된 상태를 구별하는 방법과 생각하는 방법을 배우는 게 디버깅에 있어서 가장 큰 지식이기 때문이다.

그냥 windbg로 “뚝딱뚝딱, 짠~ 이렇게 디버깅하는 것이란다.”로 끝나지 않고 디버깅에 필요한 기초 지식도 충실하게 설명해 준 것도 마음에 들었다. 보안 같이 설명이 좀 아쉽고 교통정리를 안 해줘서 더 헷갈린 챕터도 있었지만, 전반적으로 충실하게 설명한 것 같다. 그 중 설명도 좋고 여러 사례가 있었던 스택과 힙 메모리 손상이 제일 재미있었다.

13. 포스트모템 디버깅을 발표했다.


by-nc-sa
Oct 232009
 

프로그래머가 만든 결함(defect)에 의해 프로그램 상태가 감염(infection)되고 이 감염된 상태 때문에 실패(failure)하게 된다. 감염을 따로 격리하고 결함을 찾아서 고치는 과정을 디버깅이라 하는데, 이 책은 짜임새 있고 논리적인 접근법을 가르쳐 주는 이론서이다. 딱 대학교 교재로 쓰이면 좋을 책이다. 덕분에 중간은 좀 지루하게 느껴진다.

디버깅에 대한 이론을 바탕으로 깔고 싶었는데, 딱 원하는 내용이라서 만족한다. 보고 있으니 디버거를 만드는 데 필요한 이론을 배우는 느낌도 든다. 이 책 홈페이지가 있는데, 프레젠테이션 슬라이드도 제공한다. 게으른 교수들이 좋아하지 싶다. 흐~

아꿈사에서 스터디 교재로 사용했다. 난 7장 오류 연역을 발표했는데, 발표한 슬라이드는 여기서 볼 수 있다. 그리고 발표 자료를 아꿈사 위키에 정리해서 다른 발표자료도 볼 수 있다.

왠지 Beautiful Code에서 본 델타 디버깅에 관한 글도 이 사람이 쓴 것 같았다. 그래서 찾아보니 ‘28장 아름다운 디버깅’을 쓴 사람이 바로 이 책을 쓴 Andreas Zeller 였다. 후~ 역시 맞구나.


by-nc-sa
Sep 092009
 

“이 줄에 버그가 있다”

“이 포인터가 널이라는 점이 버그이다”

“프로그램이 죽었다. 이것은 버그이다”

- 프로그램은 왜 실패하는가? p26

버그(bug)라는 말을 많이 사용하는데, 위에 인용한 말처럼 원인과 증상을 뭉뜽그려 말하곤 한다. 또, 프로그래머가 무조건 잘못한 일이 대부분인데 그 잘못을 묽게 만들기도 한다.

Continue reading »

by-nc-sa