HOME > 상세정보

상세정보

프로그램은 왜 실패하는가? : 체계적인 디버깅 입문 가이드

프로그램은 왜 실패하는가? : 체계적인 디버깅 입문 가이드 (19회 대출)

자료유형
단행본
개인저자
Zeller, Andreas 류광 , 역
서명 / 저자사항
프로그램은 왜 실패하는가? : 체계적인 디버깅 입문 가이드 / Andreas Zeller ; 류광 역.
발행사항
파주 :   사이텍미디어 ,   2006.  
형태사항
585 p. : 삽도 ; 24 cm.
원표제
Why programs fail : a guide to systematic debugging.
ISBN
8955508603
수상주기
Jolt Award 기술서적 분야 생산성 부문, 2006
서지주기
참고문헌(p. 555-569), 색인수록
일반주제명
Debugging in computer science.
000 00923camccc200301 k 4500
001 000045331090
005 20100805091404
007 ta
008 070206s2006 ggka b 001c kor
020 ▼a 8955508603
024 3 1 ▼a 9788955508604 ▼d 93560
035 ▼a (KERIS)BIB000010791263
040 ▼a 241047 ▼d 211009
041 1 ▼a kor ▼h eng
082 0 4 ▼a 005.1/4 ▼2 22
090 ▼a 005.14 ▼b 2006a
100 1 ▼a Zeller, Andreas ▼0 AUTH(211009)123240
245 1 0 ▼a 프로그램은 왜 실패하는가? : ▼b 체계적인 디버깅 입문 가이드 / ▼d Andreas Zeller ; ▼e 류광 역.
246 1 9 ▼a Why programs fail : a guide to systematic debugging.
260 ▼a 파주 : ▼b 사이텍미디어 , ▼c 2006.
300 ▼a 585 p. : ▼b 삽도 ; ▼c 24 cm.
504 ▼a 참고문헌(p. 555-569), 색인수록
586 ▼a Jolt Award 기술서적 분야 생산성 부문, 2006
650 0 ▼a Debugging in computer science.
700 1 ▼a 류광 , ▼e
900 1 1 ▼a 유광
945 ▼a KINS

No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 중앙도서관/교육보존B/교육보존20 청구기호 005.14 2006a 등록번호 111401618 (1회 대출) 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 2 소장처 중앙도서관/제2자료실(3층)/ 청구기호 005.14 2006a 등록번호 111401619 (1회 대출) 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 3 소장처 과학도서관/Sci-Info(1층서고)/ 청구기호 005.14 2006a 등록번호 121140625 (7회 대출) 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 4 소장처 과학도서관/Sci-Info(1층서고)/ 청구기호 005.14 2006a 등록번호 121140626 (10회 대출) 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 중앙도서관/교육보존B/교육보존20 청구기호 005.14 2006a 등록번호 111401618 (1회 대출) 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 2 소장처 중앙도서관/제2자료실(3층)/ 청구기호 005.14 2006a 등록번호 111401619 (1회 대출) 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 소장처 청구기호 등록번호 도서상태 반납예정일 예약 서비스
No. 1 소장처 과학도서관/Sci-Info(1층서고)/ 청구기호 005.14 2006a 등록번호 121140625 (7회 대출) 도서상태 대출가능 반납예정일 예약 서비스 B M
No. 2 소장처 과학도서관/Sci-Info(1층서고)/ 청구기호 005.14 2006a 등록번호 121140626 (10회 대출) 도서상태 대출가능 반납예정일 예약 서비스 B M

컨텐츠정보

책소개

이 책의 핵심 컨셉은 '체계적이고 과학적인 디버깅'이라고 할 수 있다. 단순히 '이렇게 하면 좋다', '이러면 잘 된다'가 아니라 수학적, 논리적 분석 틀과 이론적인 기반까지 제공하고 있어 모든 프로그래밍 언어, 모든 수준의 프로그래밍 경험에 적합하다.

프로그램을 최선의 방식으로 교정하는 방법에 대해 설명하며, 독자 스스로 자동화된 디버깅 도구를 작성하는 방법도 알려준다. 또 독학을 위한 연습문제와 심화 연구를 위한 상세한 참고자료를 담고 있고, 모든 예제들의 소스 코드와 추가적인 디버깅 자료가 포함된 웹사이트도 제공한다.


정보제공 : Aladin

저자소개

Andreas Zeller(지은이)

독일 Sarrland University의 교수로, 주된 연구 분야는 프로그래머 생산성이다.

류광(옮긴이)

도널드 커누스 교수의 《컴퓨터 프로그래밍의 예술》 시리즈를 비롯해 다양한 IT 전문서를 번역한 전문 번역가이다. 생성형 AI 관련 번역서로는 《마스터링 트랜스포머》 《실전! RAG 기반 생성형 AI 개발》 《LLM 인 프로덕션》 《AI 에이전트 인 액션》 등이 있다. 개인 웹사이트 류광의 번역 이야기(https://occamsrazr.net)와 IT 및 게임 개발 정보 공유 사이트 GpgStudy.com(https://gpgstudy.com)을 운영한다.

정보제공 : Aladin

목차


목차
추천사 = xix
추천사 = xxii
머릿말 = xxv
역자의 글 = xxxvi
1장 실패는 어떻게 일어나는가 = 1
 1.1 프로그램이 이상해요! = 2
 1.2 결함에서 실패로 = 4
 1.3 시간과 공간속에서의 디버깅 = 7
 1.4 실패에서 교정으로 = 13
 1.5 자동화된 디버깅 기법들 = 20
 1.6 버그, 잘못, 결함? = 25
 1.7 개념 = 28
 1.8 도구 = 31
 1.9 더 읽을거리 = 31
 1.10 연습문제 = 34
2장 문제점 추적 = 37
 2.1 문제점 = 37
 2.2 문제점 보고 = 39
 2.3 문제점 관리 = 44
 2.4 문제점 분류 = 46
  2.4.1 심각도 = 47
  2.4.2 우선순위 = 48
  2.4.3 식별자 = 48
  2.4.4 주석 = 48
  2.4.5 통지 = 49
 2.5 문제점 처리 = 49
 2.6 문제점 추적의 관리 = 53
 2.7 요구사항으로서의 문제점 = 55
 2.8 중복의 관리 = 56
 2.9 문제점과 교정의 연계 = 59
 2.10 문제점과 테스트의 연계 = 62
 2.11 개념 = 65
 2.12 도구 = 67
  BugZilla = 67
  phpBugTracker = 67
  IssueTracker = 68
  Trac = 68
  SourceForge = 68
  GForge = 69
 2.13 더 읽을 거리 = 69
 2.14 연습문제 = 70
3장 프로그램을 실패하게 만들기 = 73
 3.1 디버깅을 위한 테스트 = 73
 3.2 프로그램 제어 = 70
 3.3 표현층에서의 테스트 = 80
  3.3.1 저수준 상호작용 = 80
  3.3.2 시스템 수준 상호작용 = 83
  3.3.3 고수준 상호작용 = 83
  3.3.4 테스트 결과 평가 = 85
 3.4 기능층에서의 테스트 = 86
 3.5 단위층에서의 테스트 = 89
 3.6 단위의 격리 = 95
 3.7 디버깅을 위한 설계 = 100
 3.8 알려지지 않은 문제점 방지 = 104
 3.9 개념 = 107
 3.10 도구 = 109
  JUnit = 109
  Android = 109
  AppleScript = 109
  VBScript = 110
  기타 스크립팅 언어들 = 110
  FAUmachine = 110
  VMWare = 110
  Virtual PC = 110
 3.11 더 읽을거리 = 111
 3.12 연습문제 = 112
4장 문제점 재현 = 115
 4.1 디버깅의 첫 번째 과제 = 115
 4.2 문제점 환경의 재현 = 117
 4.3 문제점 수행의 재현 = 121
  4.3.1 자료의 재현 = 124
  4.3.2 사용자 상호작용의 재현 = 124
  4.3.3 통신의 재현 = 127
  4.3.4 시간의 재현 = 128
  4.3.5 무작위성의 재현 = 129
  4.3.6 운영 환경의 재현 = 130
  4.3.7 일정의 재현 = 133
  4.3.8 물리적 영향 = 136
  4.3.9 디버깅 도구의 영향 = 137
 4.4 시스템 상호작용의 재현 = 141
 4.5 단위에서의 재현 = 142
  4.5.1 제어층 설정 = 142
  4.5.2 제어 예제 = 144
  4.5.3 모크 객체 = 147
  4.5.4 더 많은 상호작용의 제어 = 150
 4.6 개념 = 151
 4.7 도구 = 153
  WinRunner = 153
  Android = 153
  Revirt = 153
  체크포인트 도구들 = 153
 4.8 더 읽을거리 = 154
 4.9 연습문제 = 154
5장 문제점 단순화 = 157
 5.1 문제점 단순화 = 157
 5.2 Gecko BugAThon = 160
 5.3 수동 단순화 = 163
 5.4 자동 단순화 = 165
 5.5 단순화 알고리즘 = 169
 5.6 사용자 상호작용 단순화 = 177
 5.7 무작위 입력의 단순화 = 178
 5.8 더 빠른 단순화 = 180
  5.8.1 캐싱 = 180
  5.8.2 일찍 중단 = 181
  5.8.3 구문적 단순화 = 182
  5.8.4 상황이 아니라 차이를 격리 = 184
 5.9 개념 = 185
 5.10 도구 = 187
  델타 디버깅 = 187
  단순화 라이브러리 = 187
 5.11 더 읽을거리 = 187
 5.12 연습문제 = 188
6장 과학적 디버깅 = 193
 6.1 디버깅 도사가 되려면 = 193
 6.2 과학적 방법 = 194
 6.3 과학적 방법의 적용 = 198
  6.3.1 sample 디버깅 - 준비 = 198
  6.3.2 sample 디버깅 - 가설 1 = 199
  6.3.3 sample 디버깅 - 가설 2 = 199
  6.3.4 sample 디버깅 - 가설 3 = 200
  6.3.5 sample 디버깅 - 가설 4 = 200
 6.4 명시적 디버깅 = 202
 6.5 일지 관리 = 204
 6.6 간이 디버깅 = 206
 6.7 알고리즘적 디버깅 = 206
 6.8 가설 이끌어내기 = 211
 6.9 프로그램 추론 = 214
 6.10 개념 = 217
 6.11 더 읽을 거리 = 219
 6.12 연습문제 = 220
7장 오류 연역 = 223
 7.1 값 근원의 격리 = 223
 7.2 제어 흐름 이해하기 = 225
 7.3 의존성 추적 = 229
  7.3.1 문장이 주는 영향 = 230
  7.3.2 문장이 받는 영향 = 232
  7.3.3 문장 의존성 = 233
  7.3.4 의존성 따라가기 = 235
  7.3.5 의존성 활용 = 236
 7.4 프로그램 슬라이싱 = 237
  7.4.1 전방 슬라이스 = 237
  7.4.2 후방 슬라이스 = 238
  7.4.3 슬라이스 연산들 = 239
  7.4.4 슬라이스 활용 = 241
  7.4.5 실행 가능한 슬라이스 = 242
 7.5 코드 악취의 연역 = 243
 7.6 정적 분석의 한계 = 250
 7.7 개념 = 256
 7.8 도구 = 257
  CodeSurfer = 257
  FindBugs = 257
 7.9 더 읽을거리 = 258
 7.10 연습문제 = 259
8장 사실 관찰 = 263
 8.1 상태의 관찰 = 263
 8.2 실행 로깅 = 265
  8.2.1 로깅 함수 = 267
  8.2.2 로깅 프레임웍 = 272
  8.2.3 애스펙트를 이용한 로깅 = 275
  8.2.4 이진 수준의 로깅 = 280
 8.3 디버거 활용 = 283
  8.3.1 예제 디버깅 세션 = 284
  8.3.2 수행의 제어 = 289
  8.3.3 사후 디버깅 = 289
  8.3.4 자료 로깅 = 291
  8.3.5 함수 호출 = 292
  8.3.6 교정 및 재개 = 293
  8.3.7 디버거 내장 = 293
  8.3.8 디버거 주의사항 = 294
 8.4 사건 질의 = 295
  8.4.1 감시점 = 296
  8.4.2 균일한 사건 질의 = 298
 8.5 상태의 시각화 = 300
 8.6 개념 = 303
 8.7 도구 = 304
  Log4j = 304
  AspectJ = 305
  PIN = 305
  BCEL = 305
  GDB = 305
  DDD = 305
  Java Spider = 306
  eDOBS = 306
 8.8 더 읽을거리 = 306
 8.9 연습문제 = 307
9장 근원 추적 = 315
 9.1 후방 추론 = 315
 9.2 수행 내력 탐색 = 316
 9.3 동적 슬라이싱 = 319
 9.4 근원 활용 = 324
 9.5 감염 추적 = 328
 9.6 개념 = 330
 9.7 도구 = 330
  ODB = 330
 9.8 더 읽을거리 = 331
 9.9 연습문제 = 332
10장 기대의 단언 = 335
 10.1 관찰 자동화 = 335
 10.2 기본적인 단언들 = 337
 10.3 불변식의 단언 = 340
 10.4 정확성의 단언 = 345
 10.5 명세로서의 단언 = 348
 10.6 단언에서 검증으로 = 350
 10.7 기준 실행 = 354
 10.8 시스템 단언 = 358
  10.8.1 MALLOC_CHECK_를 이용한 힙 유효성 확인 = 359
  10.8.2 ElectricFence를 이용한 버퍼 넘침 방지 = 360
  10.8.3 Valgrind를 이용한 메모리 오류 검출 = 360
  10.8.4 언어 확장 = 363
 10.9 제품용 코드의 점검 = 366
 10.10 개념 = 369
 10.11 도구 = 370
  JML = 370
  ESC/Java = 371
  Guard = 371
  Valgrind = 371
  Purify = 371
  Insure++ = 371
  Cyclone = 372
  CCured = 372
 10.12 더 읽을거리 = 372
 10.13 연습문제 = 375
11장 비정상 검출 = 381
 11.1 정상 행동 파악 = 381
 11.2 포괄도 비교 = 384
 11.3 통계적 디버깅 = 390
 11.4 현장에서 자료 수집 = 392
 11.5 동적 불변식 = 395
 11.6 즉석 불변식 = 400
 11.7 비정상에서 결함으로 = 403
 11.8 개념 = 404
 11.9 도구 = 405
  Daikon = 405
  DIDUCE = 406
 11.10 더 읽을거리 = 406
 11.11 연습문제 = 408
12장 원인과 결과 = 411
 12.1 원인 그리고 대안의 세계 = 411
 12.2 원인의 검증 = 414
 12.3 인과관계의 예 = 415
 12.4 실제 원인 찾기 = 418
 12.5 원인 좁히기 = 420
 12.6 차이 좁히기의 예 = 421
 12.7 공통 문맥 = 422
 12.8 디버깅에서의 원인들 = 423
 12.9 개념 = 425
 12.10 더 읽을거리 = 426
 12.11 연습문제 = 427
13장 실패 원인의 격리 = 431
 13.1 원인의 자동적인 격리 = 431
 13.2 격리 대 단순화 = 433
 13.3 격리 알고리즘 = 436
 13.4 격리 알고리즘 구현 = 440
 13.5 실패 유발 입력의 격리 = 443
 13.6 실패 유발 일정의 격리 = 443
 13.7 실패 유발 변경의 격리 = 448
 13.8 문제와 한계 = 455
 13.9 개념 = 459
 13.10 도구 = 460
  Eclipse용 델타 디버깅 플러그인 = 460
  ccache = 460
 13.11 더 읽을거리 = 460
 13.12 연습문제 = 461
14장 인과 사슬의 격리 = 465
 14.1 쓸모없는 원인들 = 465
 14.2 프로그램 상태 갈무리 = 469
 14.3 프로그램 상태들의 비교 = 474
 14.4 유관 프로그램 상태의 격리 = 477
 14.5 인과 사슬의 격리 = 482
 14.6 실패 유발 코드의 격리 = 488
 14.7 주의사항 및 위험 = 494
 14.8 개념 = 497
 14.9 도구 = 499
  AskIgor = 499
  Igor = 499
 14.10 더 읽을거리 = 499
 14.11 연습문제 = 501
15장 결함 고치기 = 503
 15.1 결함 찾기 = 503
 15.2 가장 유망한 오류에 집중 = 505
 15.3 결함의 유효성 확인 = 508
  15.3.1 오류가 실패를 유발하는가? = 509
  15.3.2 원인이 실제로 오류인가? = 510
  15.3.3 코딩하기 전에 생각부터 = 512
 15.4 결함의 정정 = 513
  15.4.1 실패가 더 이상 발생하지 않는가? = 514
  15.4.2 정정이 새로운 문제점을 도입하지는 않았는가? = 515
  15.4.3 같은 실수를 다른 곳에서 한 적이 있는가? = 516
  15.4.4 마무리 작업 = 517
 15.5 우회책 = 518
 15.6 실수에서 배운다 = 520
 15.7 개념 = 524
 15.8 더 읽을거리 = 525
 15.9 연습문제 = 526
부록A 공식적인 정의들 = 529
 A.1 델타 디버깅 = 529
  A.1.1 구성 = 529
  A.1.2 통과 실행과 실패 실행 = 530
  A.1.3 테스트 = 530
  A.1.4 최소성 = 531
  A.1.5 단순화 = 531
  A.1.6 차이 = 532
  A.1.7 격리 = 533
 A.2 메모리 그래프 = 534
  A.2.1 공식 구조 = 534
  A.2.2 자료구조 펼치기 = 536
  A.2.3 정점들과 간선들의 부합 = 538
  A.2.4 공통 부분그래프 구하기 = 539
  A.2.5 그래프 차이 구하기 = 540
  A.2.6 부분 상태 변경들의 적용 = 543
  A.2.7 C 상태 갈무리 = 543
 A.3 인과 사슬 = 546
용어집 = 549
참고문헌 = 555
색인 = 571


관련분야 신착자료

Harvard Business Review (2025)