목차
옮긴이 머리말 xi
베타리더 후기 xiii
머리말 xvii
프롤로그 xix
1장 에러가 왜 무서울까?
1.1 에러를 읽어보자 4
1.2 에러를 읽지 않게 되는 이유 8
__이유 1 영어로 쓰인 에러 9
__이유 2 길어서 읽기가 어려움 16
__이유 3 읽어도 바로 원인을 파악할 수 없음 18
1.3 에러를 향한 마음가짐 24
__간단하게 생각하자 24
__어려운 에러는 좋은 학습의 기회 25
__에러를 읽는 스킬은 항상 도움이 된다 26
2장 에러를 잘 읽는 방법
2.1 에러의 구성 요소를 알아보자 32
__구성 요소 1 에러의 종류 34
__구성 요소 2 에러 메시지 35
__구성 요소 3 스택 트레이스 36
2.2 에러의 종류를 알아보자 47
__에러의 종류 1 SyntaxError 48
__에러의 종류 2 ReferenceError 49
__에러의 종류 3 TypeError 51
__에러의 종류 4 RangeError 52
__다른 언어에서 발생하는 에러의 종류 53
3장 효율적으로 에러의 원인 찾기
3.1 디버깅이란? 58
__디버깅의 흐름 59
3.2 프린트 디버깅을 해보자 61
__프린트 디버깅으로 문제 해결하기 63
__경로를 따라 문제의 위치 특정하기 66
3.3 이진 탐색으로 효율적으로 찾아보자 68
__이진 탐색이란? 68
__프린트 디버깅으로 이진 탐색 71
__에러가 표시되는 부분에 문제가 없을 때는? 76
__더욱 큰 단위로 이진 탐색하기 81
3.4 최소한의 코드로 디버깅해보자 85
__최소한의 코드는 도움을 요청하기 쉽다 89
3.5 디버깅을 빠르게 진행하기 위한 방법 91
__사전에 가설 세우기 91
__한 번에 하나씩 검증하기 93
__작은 의문에 귀를 기울이자 93
__귀찮아하지 말자 94
4장 도구를 활용해 편하게 디버깅해보자
4.1 디버거는 강력한 도구 100
4.2 브레이크포인트를 사용해보자 102
__브레이크포인트란? 102
__브레이크포인트 설정 방법 103
__브레이크포인트를 사용해 디버깅해보자 109
4.3 다양한 스텝 실행 124
__다음 함수 호출(step into) 124
__다음 함수 호출(step over) 126
__현재 함수에서 벗어나기(step out) 127
__스텝의 사용 시기 129
4.4 조건을 포함하는 브레이크포인트 130
__조건을 포함하는 브레이크포인트를 사용해보자 131
__브라우저에서 편리한 조건을 포함하는 브레이크포인트 135
4.5 변수를 감시해보자 136
5장 해결할 수 없는 문제
5.1 개발자를 위한 정보 수집 테크닉 144
__구글 검색 144
__깃허브 검색 149
__커뮤니티에 질문하기 154
__1차 정보를 확인하자 156
5.2 에러를 찾을 수 없을 때 159
__보고 있는 위치가 다름 159
__에러의 출력 설정을 확인하지 않음 161
__에러를 프로그램에서 처리하고 있음 163
5.3 에러가 재현되지 않을 때 165
5.4 운영 환경에서 에러를 수집하는 방법 167
__에러 수집 방법 167
__진화하고 있는 로그 관리 방법 170
6장 디버깅이 쉬운 코드를 작성하자
6.1 재할당을 자제하자 176
__재할당을 억제하는 기능을 사용하자 178
__재할당을 하지 않으면 디버깅도 쉬워진다 178
6.2 스코프를 최소화하자 181
__스코프가 넓을 때의 단점 182
6.3 단일 책임의 원칙 185
구체적인 예 프로필 작성 서비스 185
6.4 순수 함수를 사용하자 189
__순수 함수란? 189
__순수 함수와 순수 함수가 아닌 함수의 비교 192
__순수 함수의 이용 194
6.5 타입을 의식하여 코드를 작성하자 195
__코멘트로 타입 명시하기 196
__프로그래밍 언어의 기능을 사용해 타입 정보 부여하기 197
6.6 디버깅을 도와주는 테스트 코드 201
__테스트 코드는 무엇일까? 201
__테스트 코드와 디버깅의 관계 203
__에러가 발생했을 때 먼저 테스트 코드를 작성하자 204
COLUMN
__결함을 수정하는 데 걸리는 시간 27
__스택 트레이스의 흐름은 프로그래밍 언어에 따라 다를까? 46
__버그는 벌레? 왜 벌레일까? 59
__왜 다른 위치가 표시될까? 80
__깃을 사용한 이진 탐색 84
__자고 나면 버그가 수정된다? 90
__테디 베어 효과 95
__브레이크포인트를 코드에서 설정하기 122
__에디터에서도 사용할 수 있는 디버거 139
__PHP에서 에러 출력 설정 162
__에러 메시지에서 uncaught의 의미는? 164
__여러 방법으로도 에러가 해결되지 않을 때의 회피술 172
__코드의 잠재적인 문제 찾기 180
__동적 타입 언어와 정적 타입 언어 199
__실제 유저의 조작을 재현하는 E2E 테스트 도구 206
에필로그 207
찾아보기 210