로그인회원가입장바구니고객센터마이페이지회사소개
kangcom
전체
Home >   >   > 

Debug It! 실용주의 디버깅

 [소프트웨어 개발자가 꼭 알아야 할 디버깅의 정석]
   
지은이 폴 부처 역자 : 박일   |   출판사 에이콘  |   발행일 2010년 06월 29일
 
클릭하시면 큰 도서이미지를 보실 수 있습니다.
판매가 25,000원22,500원 10%
마일리지 5% 1,250원
발행일 2010-06-29
ISBN 8960771414 | 9788960771413
기타정보 번역서 | 268쪽
예상출고일 1~2일 이내 (근무일기준)
배송비 무료배송
   
컴퓨터공학
종합지수 4p 97 위
   
이 책의 원서
  Debug It!: Find, Repair, and Prevent Bugs in Your Code
Pragmatic Bookshelf
 

< 요약 >

고급 소프트웨어 엔지니어로 거듭나기 위해 꼭 필요하면서도 간과하기 쉬운 디버깅 기술. 개발 플랫폼에 무관하게 전문 소프트웨어 개발자가 디버깅에 대해 알아야 할 모든 이론과 지식, 실전 경험을 망라해둔 디버깅의 정석. 저자가 쌓아온 노하우와 디버깅 철학을 이 책에 모두 공개한다!

< 소개 >

직업 프로그래머는 한 치의 오차도 없이 버그의 근본 원인을 제거하는 기술을 익힌다. 디버깅 기술은 평소 버그 있는 코드를 생성하고 이를 수정하면서 얻는 경험에서 배울 수 있다. 이 책에는 저자가 그렇게 얻은 생생한 경험이 적혀있다. 이 책에서 얻은 실전 경험을 바탕으로 버그를 줄이고, 버그가 있더라도 훨씬 쉽게 찾을 수 있도록 코드를 작성하는 방법을 익힐 수 있다.

『Debug It! 실용주의 디버깅』은 확신을 가지고 버그를 잡는 데 도움이 될 만한 도구, 기법, 접근 방법을 제공한다.

전문 디버깅의 비밀은 버그의 전 과정, 즉 디버깅을 쉽게 할 수 있도록 소프트웨어를 만드는 것에서부터, 버그를 찾고 재현하고 진단하고 마지막으로 수정하는 과정까지를 전부 보여준다. 자바냐 기계어냐, 서버냐 임베디드 마이크로컨트롤러냐, 애자일이냐 전통적인 방법이냐에 상관없이 기본적인 버그 수정 원칙을 적용할 수 있다.

이 책에서는 소프트웨어만의 독특한 기능을 통해 실제로 어떤 일이 벌어지는지 보여줄 수 있는 경험주의적인 접근 방법, 안정적이고 편하게 버그를 재현할 수 있는 방법의 중요성, 공통적인 실수를 피할 수 있는 방법 등을 배울 수 있다. 흔히 사용되는 도구를 활용해 고객이 버그를 발견하기 전에 먼저 자동으로 찾을 수 있는지도 익힌다. 또한, 결정적인 내부 정보에 알아서 접근하고, 버그를 생성하는 깨진 가정이 어디인지 알려주는 '스스로 디버깅하는' 소프트웨어를 만들 수 있다.


★ 이 책의 구성 ★

■ 1부. 문제의 핵심
1부에서는 개발 중인 소프트웨어를 통해 내부에서 뭐가 어떻게 실행되는지를 보는 경험주의 접근법과, 이에 기반한 핵심 디버깅 방법(재현, 진단, 수정, 반영)을 소개한다.

■ 2부. 큰 그림
고쳐야 하는 문제가 있다는 걸 처음에 어떻게 찾을 수 있을까? 디버깅 과정을 소프트웨어 개발 프로세스 안에 어떻게 넣을 수 있을까?

■ 3부. 디버깅 비급
3부에서는 다음과 같은 좀 더 어려운 주제를 살펴본다.
• 1~2부에서 살펴본 방법들은 모든 버그에 적용할 수 있지만 특별한 조치를 해줘야 하는 버그도 있다.
• 디버깅은 해당 버그 때문에 열 받은 사용자가 불평 전화를 걸어오기 훨씬 전부터 시작한다. 특정 도구나 프로세스를 써서 이런 일을 미연에 방지할 수 없을까?
• 마지막으로 빠지기 쉬운 여러 가지 함정도 알아본다.


★ 이 책에 쏟아진 각계의 찬사 ★

‘처음부터 버그가 생기지 않게 하고, 버그를 진단, 수정한 후, 재발하지 못하게 하라.’ 폴은 디버깅의 전체 단계를 기술적, 인지적, 심리적인 측면에서 잘 설명했습니다. 이 책에 적힌 모든 아이디어 중에서 일부만이라도 도입한다면 프로젝트의 전체적인 품질이 향상될 것입니다. 기술적인 문제도 그렇지만 심리적인 측면을 잘 설명한 부분이 이 책의 뛰어난 점입니다.
프레드릭 다우드(Frederic Daoud)
『Stripes...and Java Web Development Is Fun Again』 저자

모든 소프트웨어 엔지니어와, 특히 자신의 팀을 최고 수준으로 만들고 싶어 하는 팀장들에게 진심으로 이 책을 추천합니다.
앨런 맥리드(Allan McLeod)
이작 소프트웨어 창립자이자 CTO

이 책을 통해서 디버깅을 위한 예비 지식, 마음가짐과 함께 버그를 발견하고 고칠 때 발생하는 복잡한 부분도 알 수 있습니다. 진짜 특이한 문제를 찾아나가는 과정을 다룬 일화들만으로도 이 책의 가치는 충분합니다.
존 디킨슨(Jon Dickinson)
『Grails 1.1 Web Application Development』 저자

디버깅은 오랫동안 전승되어 온 기법이었기 때문에 경험을 통해 검증된 여러 기법을 누군가가 하나로 취합했다는 것은 굉장한 일입니다. 『Debug It! 실용주의 디버깅』은 훌륭한 소프트웨어 개발이라는 고통스러운 과정 속에서 환멸을 느끼고 있는 여러분을 구원해줄 책입니다. 이 책에서 다루고 있는 단언문, 로그, 리팩토링 같은 좋은 도구와 함께라면 셜록 홈즈가 된 듯한 느낌과 함께 어떤 문제라도 해결할 수 있을 것입니다.
크레이그 리케(Craig Riecke)
『Mastering Dojo: JavaScript and Ajax Tools for Great Web Experiences』 저자

디버깅에 있어서의 장인 정신을 집중적으로 다룬다는 점에서 『실용주의 프로그래머』의 자매편이라 할 수 있습니다.
이언 디즈(Ian Dees)
『Scripted GUI Testing with Ruby』 저자

디버깅은 모든 소프트웨어 개발자들의 근본적인 활동이면서, 동시에 아직도 대부분 직감과 짐작에 의존하는 작업이기도 합니다. 늦게나마 폴이 디버깅 방법에 대한 관심을 끌어내줬습니다. 폴의 디버깅 기법에 느껴지는 엄격함과는 반대로 글은 굉장히 부드럽습니다. 이 책에 있는 내용을 섭렵하고 나면 어느새 여러분은 더 이상 해커가 아닌 소프트웨어 엔지니어로 거듭나 있을 것입니다.
빌 카윈(Bill Karwin)
Software Engineer, Karwin Software Solutions, LLC의 소프트웨어 엔지니어


★ 저자 서문 ★

디버깅에 관한 책은 왜 이렇게나 없는 걸까? 설계, 코드 구현, 요구 사항 분석, 방법론 같은 소프트웨어 엔지니어링 책은 참 많은데, 유난히 디버깅만큼은 아직까지도 저자나 출판사의 관심을 못 받고 있다. 이 책이 이런 현실을 조금이나마 개선할 수 있기를 바란다.

코드를 작성했다면 언젠가는 (아마 곧바로) 디버깅을 해야 할 것이다. 디버깅은 다른 무엇보다도 지적인 과정이다. 디버깅은 디버거나 코드로 하는 것이 아닌 머리로 하는 것이다. 문제의 근본 원인을 파악하는 것, 이것이 가장 근본이다.

나는 오랫동안 여러 팀에서 굉장한 사람들과 함께 일해 왔다. 비트 슬라이스(bit-slice) 프로세서에서 실행되는 마이크로 코드에서부터 디바이스 드라이버, 임베디드 코드, 메인스트림 데스크톱용 소프트웨어, 웹 애플리케이션까지 다양한 분야의 소프트웨어를 작업해왔다. 이렇게 동료들과 함께 얻은 교훈을 이 책에서 여러분과 함께 공유하고자 한다.

★ 옮긴이의 말 ★

프로그래머의 하루 일과를 살펴본다면, 아마 '디버깅'하는 데 대부분의 시간을 보낼 것입니다. 우리가 코드를 한 줄 작성한 후에 제대로 돌아가는지 보기 위해 디버거를 실행하는 그 순간부터 이미 디버깅은 시작됩니다.

정말 그렇다면, 어째서 서점에는 디버깅 관련서를 찾아 보기 힘든 걸까요? 그나마 출간된 책들조차 대부분 특정 플랫폼에서 특정 툴이나 API를 어떻게 쓰는가를 다룰 뿐입니다. 대학이나 학원에서 디버깅을 배웠다는 얘기도 들어본 적이 없습니다.

('디버깅과 섹스의 공통점' 이라는 유머에서도 나온 얘기지만) 그 이유는 아마도 우리가 이미 디버깅을 잘 알고 있다고 생각하기 때문일 것입니다. 수영은 배우지만 뛰는 법은 배우지 않는 이유는 이미 우리가 어렸을 때 수없이 넘어지면서 뛰는 법을 스스로 배웠기 때문입니다. 마치 초보 개발자 시절에 코드 사이에 printf를 끼워넣고 F10으로 한 줄 한 줄 내려가면서 밤새워 버그를 잡아가며 디버깅을 독학한 것처럼 말이죠.

하지만 '전문가' 가 되려면 그냥 알고 있는 수준에서 머무르면 안 됩니다. 뛰는 법을 모르는 사람은 없지만 일반인과 육상선수 사이에는 엄청난 차이가 있습니다. 마찬가지로 디버거 사용법은 디버깅의 극히 일부입니다. 자동차 운전을 배웠다고 해서 바로 F1 레이싱에서 우승할 수는 없습니다. 그렇다면 '디버깅' 전문가가 되려면 무엇을 해야 할까요?

저는 '온라인 게임에서 사례로 살펴보는 디버깅'이라는 주제로 KGC(Korea Games Conference) 09와 NDC(Nexon Developers Conference) 10에서 발표를 했습니다. 겨우 10년차 개발자가 디버깅이라는 주제로 사람들 앞에서 발표를 할 수 있었던 가장 큰 이유는 제가 리니지2 서버개발팀에서 근무하고 있기 때문입니다. 다행인지 불행인지 리니지2가 오랫동안 많은 분의 사랑을 받아오면서 디버깅거리도 끊이질 않았습니다. 장애가 발생했을 때의 손실이 엄청나기 때문에 항상 긴장하면서 개발하지만 문제는 어김없이 튀어나옵니다. 그리고 문제를 해결하면서 새로운 무엇인가를 배울 수 있었습니다.

'디버깅' 발표를 준비하면서 주변에서 디버깅을 성공한 사람들을 관찰하기 시작했습니다. 왜 이 사람들은 다른 사람보다 빨리, 정확하게 버그를 찾을 수 있었을까? 계속 관찰하다 보니 몇 가지 패턴을 찾을 수 있었습니다.
* 무턱대고 디버거부터 실행하는 게 아니라, 어디가 문제일지를 생각하면서 디버깅 계획을 잡는다.
* 다양한 정보를 종합적으로 분석한다.
* 작은 이상증상도 놓치지 않는다.
* 설명이 안 되는 부분을 그냥 넘어가지 않는다.
* 등등...
덕분에 저의 디버깅 습관도 많이 좋아질 수 있었습니다.

저는 이 책 『Debug it! 실용주의 디버깅』을 원서로 5번, 번역하면서 다시 5번 넘게 읽었습니다. 그럼에도 불구하고 읽을 때마다 새로 느끼는 게 있었습니다. 저자 폴 부처는 이 책에 디버깅의 과정을 체계적으로 정리하고, 각 단계별로 다양한 사람들의 사례, 노하우, 실수로부터 배운 교훈들을 공유해뒀습니다. 어디에서도 듣기 힘든 살아있는 지식입니다. 게다가 재미있기까지 합니다. 이 책을 읽고 나면 스스로가 조금은 달라진 것을 느낄 수 있을 것입니다.
★ 목차 ★

1부 문제의 핵심

1장 구조적인 접근
1.1 디버깅은 ‘버그를 없애는 것’ 그 이상이다
1.2 경험주의 접근법
1.3 핵심 디버깅 과정
1.4 중요한 일부터 먼저
1.5 실천하기

2장 재현
2.1 고민하기 전에 재현부터 해보자
2.2 소프트웨어 제어
2.3 환경 제어
2.4 입력 제어
2.5 재현 방법 다듬기
2.6 정말로 재현할 수 없다면?
2.7 실천하기

3장 진단
3.1 잠깐, 지금부턴 과학을 할 겁니다
3.2 계략
3.3 디버거
3.4 실수
3.5 심리전
3.6 진단 확인
3.7 실천하기

4장 수정
4.1 전투 준비
4.2 테스트
4.3 증상이 아닌 원인을 고친다
4.4 리팩토링
4.5 체크인
4.6 코드 리뷰 받기
4.7 실천하기

5장 반영
5.1 이게 어떻게 돌아가고 있었지?
5.2 뭐가 잘못된 거지?
5.3 다시는 이 문제가 생기지 않을꺼야
5.4 선순환 구조 만들기
5.5 실천하기

2부 큰그림

6장 문제 발견
6.1 버그 추적
6.2 고객과 작업하기
6.3 지원 팀과 일하기
6.4 실천하기

7장 실질적인 무관용
7.1 버그 우선순위
7.2 디버깅할 때의 마음가짐
7.3 품질 결함 수렁에서 빠져나오기
7.4 실천하기

3부 디버깅 비급

8장 특수한 경우
8.1 기존 릴리스 패치
8.2 하위 호환성
8.3 병렬
8.4 하이젠버그
8.5 성능 버그
8.6 임베디드 소프트웨어
8.7 서드파티 소프트웨어 버그
8.8 실천하기

9장 이상적인 디버깅 환경
9.1 자동 테스팅
9.2 소스 관리 시스템
9.3 자동 빌드
9.4 실천하기

10장 소프트웨어가 스스로를 디버깅하게 만들기
10.1 가정과 단언문
10.2 디버깅 빌드
10.3 자원 누수와 예외 처리
10.4 실천하기

11장 안티 패턴
11.1 우선순위 인플레이션
11.2 프리마돈나
11.3 유지 보수 팀
11.4 화재 진압
11.5 새로 작성하기
11.6 코드 주인의식 실종
11.7 흑마술
11.8 실천하기

부록 A 자원
A.1 소스 관리 시스템과 이슈 추적 시스템
A.2 빌드와 지속적인 통합 도구
A.3 유용한 라이브러리
A.4 다른 도구

부록 B 참고 문헌
★ 저자 소개 ★

폴 부처(Paul Butcher)
비트 슬라이스 프로세서에서 돌아가는 마이크로 코드에서부터 고수준의 선언적 프로그래밍에 이르는 다양한 분야에서 일해왔다. 폴은 최신 기술을 개발하는 여러 훌륭한 개발 팀과 같이 일할 기회를 제공해 준 스타트업 회사 덕분에 이런 경험을 할 수 있었다.

★ 옮긴이 소개 ★

박일
연세대 컴퓨터과학과를 졸업했다. ‘박피디의 게임 아키텍트 블로그(http://parkpd.egloos.com)’를 운영하고 있으며, 2000년에 개발을 시작해 지금은 리니지2 서버팀에서 근무하는 중이다. 옮긴 책으로는『스크럼』(2008), 『xUnit 테스트 패턴』(2010)이 있다.
이것이 디버깅 기본서!
안명환님이 쓰신 서평보기 I 평점 I 조회수(1849) I 공감 (0) I 블로그
이 책은 디버깅에 관해 체계적이고 실용적인 관점에서 서술되었다.특정 디버깅 도구를 사용하는 방법에 관한 내용은 없다. 플랫폼에 무관하게 디버깅에 대한 기본적인 이론과 방법을 다루고 있는 책이다. 따라서 이 책을 읽고 단숨에 디버깅 툴을 손쉽게 다룰 수 있을 거란 생각은 버리는 게 좋다. 특정 플랫폼에서 특정 툴을 사용한 디버그 방법을 설명하는 그런 내용은 전혀 없으니까.단지 디버깅을 하기에 앞서 한 발 물러서서 문제의 본질에 대해 생각할 수 있는 기회를 주는 책이...
디버깅때문에 고생을 해본 개발자라면 아니면 개발과 관리를 동시하는 개발자라면 꼭 봐야할 책
김규열님이 쓰신 서평보기 I 평점 I 조회수(1269) I 공감 (0) I 블로그
 정말 아름다운 책이다. 수학의 증명이 자명할 수록 내용이 짧듯이, 이 책의 페이지는 얼마 안되지만 정말 필요한 내용들을 다 담고 있다. 오랜 시간 개발을 하면서 느끼는 것이지만, 디버깅은 단순히 WinDbg와 같은 디버거를 사용해서 소프트웨어를 트레이싱하는 것이 전부가 아니다. 그러한 과정은 극히 작은 부분이다. 그런데 많은 디버깅 관련 서적들이 그런 세세한 기법에 대해서만 이야기하는데 반해서 이 책은 전체적인 과정에 대해서 기술을 하고 있고 경험으로만 얻을 수...
처음 만나는 전자기학...
곽동주
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
디지털 통신 시스템...
정호영, 임승각
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
자료구조와 JAVA(개정판)...
이석호
선택된 상품을 찜하실 수 있습니다. 선택된 상품을 바로구매 하실 수 있습니다.
오즈 모리하...
브렛 슬라킨...
가와마타 아...
오다 케이지...
 
전체평균(62)
회원평점   회원서평수 2
이것이 디버깅 기본서!
안명환 님  2010-07-28
디버깅때문에 고생을 해본 개발자라면 아니면 개발과 관리를 동시하는 개발자라면 꼭 봐야할 책
김규열 님  2010-07-22
폴 부처 의 최근 저서
 
7가지 동시성 모델
22,500원
(10%↓+5%)
 
에이콘 출판사의 신간
게임 테스팅 3/e
찰스 슐츠 , 로버트 덴튼 브라이언트 [옮긴이]진석준 저
31,500원
(10%↓+5%)
 
콘텐츠 어드밴티지 2/e
콜린 존스 [옮긴이] 심주연 저
22,500원
(10%↓+5%)
 
파이썬을 활용한 비지도 학습
벤자민 존스턴 , 애런 존스, 크리스토퍼 크루거 [옮긴이]조경빈 저
31,500원
(10%↓+5%)
 
순수 함수형 데이터 구조
크리스 오카사키 [옮긴이] 오현석 저
31,500원
(10%↓+5%)
 
빅데이터 시각화
제임스 밀러 [옮긴이]최준규, 강형건 저
25,200원
(10%↓+5%)
 
이메일주소수집거부