각계 전문가들의 서평 ... ⅳ 추천의 글 ... ⅵ 저자의 말 ... ⅷ 역자 서문 ... ⅸ 감수의 글 ... xii 베타리더 한 마디 ... xiii 들어가며 ... xxii 1장 프로파일링 ... 2 스톱워치 ... 3 date ... 4 time ... 5 Clock ... 6 gettimeofday ... 11 GNU gprof를 이용한 성능 튜닝 ... 14 gprof 사용에 필요한 gcc 옵션 ... 15 프로그램 sample1 빌드와 gprof 사용 ... 17 kprof ... 32 설치 ... 33 그래픽 기능 Graphviz 빌드 ... 33 요약 ... 36 프로파일링에 관련한 웹 자료 ... 36 2장 코드 커버리지 ... 37 코드 커버리지 분석이란? ... 38 gcov와 논리 오류 ... 39 코드 커버리지 유형 ... 40 gcov 사용에 필요한 gcc 옵션 ... 42 요약 ... 52 gcov와 관련한 웹 자료 ... 52 3장 GNU 디버거 ... 53 gdb 설치 ... 56 gdb 명령 ... 56 유용한 gdb 명령 ... 57 gdb로 디버깅할 프로그램 컴파일 방법 ... 60 전형적인 gdb 세션 ... 61 gdb 디버거 시작 ... 61 코어 파일로 디버깅하기 ... 64 프로그램 실행과 코어 덤프 얻기 ... 65 그래픽 gdb 인터페이스 ... 66 ddd ... 66 ddd 기능 ... 66 ddd 설치 ... 67 ddd로 프로그램 보는 방법 ... 68 인사이트 ... 70 인사이트 기능 ... 71 인사이트 설치 ... 71 디버깅 심볼과 실행 파일 크기 ... 77 디버깅 기술 ... 78 요약 ... 80 GNU 디버거에 관련한 웹 자료 ... 80 4장 메모리 관리 디버깅 ... 81 동적 메모리 함수 ... 82 MEMWATCH ... 84 YAMD ... 87 Electric Fence ... 95 Valgrind ... 99 Valgrind 설치 ... 100 메모리 손실 ... 102 캐시 프로파일링 ... 107 Valgrind 한계 ... 110 요약 ... 110 메모리 검사기에 관련한 웹 자료 ... 110 5장 시스템 정보: /proc 파일 시스템 ... 111 /proc이란? ... 112 관리자 관점에서 /proc 사용하기 ... 113 /proc 구조 ... 114 프로세스 정보 디렉토리 ... 114 요약 ... 149 /proc에 관련한 웹 자료 ... 150 6장 시스템 도구 ... 151 프로세스 ... 152 태스크 상태 ... 153 프로세스 디버깅 도구 ... 154 ps: 프로세스 상태 보고 ... 154 pgrep으로 입력 조건에 맞는 프로세스 ID 찾기 ... 169 pstree로 프로세스 트리 보기 ... 170 top으로 태스크 보기 ... 171 strace로 시스템 호출 추적하기 ... 172 마법 키 조합으로 역추적하기 ... 175 Isof로 열린 파일 살펴보기 ... 177 네크워크 디버깅 도구 ... 179 ifconfig으로 네트워크 인터페이스 구성하기 ... 179 arp로 시스템 APR 캐시 조작하기 ... 180 tcpdump로 네트워크 트래픽 덤프하기 ... 181 ethereal로 네트워크 트래픽 살펴보기 ... 182 netstat으로 네트워크 상태 보기 ... 183 요약 ... 186 시스템 도구에 관련한 웹 자료 ... 186 7장 시스템 오류 메시지 ... 187 커널 파일 ... 188 일반 배포판에서 커널 파일의 /boot 레이아웃 ... 188 웁스 분석 ... 191 커널 빌드 ... 193 ksymoops로 웁스 처리 ... 196 gdb로 jfs_mount 보기 ... 199 gcc -S 옵션으로 생성하는 어셈블리 코드 ... 200 GNU C로 생성한 어셈블러 결과 ... 200 커널 메일링 리스트 웁스 ... 201 3c59x 네트워크 드라이버 2.4.7ac11 웁스 ... 201 Linux-2.5.1-pre5 웁스 ... 205 perror로 시스템 또는 MySQL 오류 코드 확인 ... 208 요약 ... 210 웁스에 관련한 웹 자료 ... 210 8장 이벤트 로그 ... 211 syslogd ... 213 syslogd 주요 옵션 ... 213 원격 로그 ... 214 syslog.conf ... 214 syslogd 메시지 변경 ... 217 klogd ... 217 logger 명령 ... 218 충분한 디스크 공간 확보 ... 219 로그 파일 관리 ... 220 Syslog 메세지를 이용한 디버깅 ... 221 이벤트 로그 ... 225 이벤트 로그 인터페이스 ... 226 이벤트 로그의 장점 ... 226 로그 관리 ... 227 이벤트 로그 레코드 유형 ... 227 이벤트 로그 관리 ... 228 이벤트 로그 유틸리티 ... 228 원격 로그 ... 229 이벤트 통합 호스트 설정 ... 230 Syslog 메시지를 이벤트 로그로 전달 ... 231 evlog 패키지 ... 232 요약 ... 232 감사의 말 ... 232 이벤트 로그에 관련한 웹 자료 ... 232 9장 LTT ... 233 아키텍처 컴포넌트 태스크 ... 235 패키지와 설치 ... 236 커널 빌드 ... 241 LTT 사용자단계 도구 빌드 ... 243 자료 수집 ... 244 자료 기록 ... 245 자료 기록 중지 ... 246 추적 프로세스 분석 방법 ... 246 자료 해석 ... 249 tracevisualizer ... 249 하위 디렉토리를 묶는(tar) 추적 예제 ... 254 자료 검토용 텍스트 도구 ... 257 tracedcore filename ... 257 traceanalyze filename ... 257 tracedump filename ... 259 요약 ... 260 감사의 말 ... 260 LTT에 관련한 웹 자료 ... 260 10장 커널이 지원하는 프로파일러 oprofile ... 261 측정형 프로파일러 ... 262 샘플링형 프로파일러 ... 263 시스템 프로파일러 oprofile ... 263 커널 빌드 ... 264 oprofile을 위한 유틸리티 ... 268 일반적인 프로파일 단계 ... 269 단일 실행 파일의 프로파일 검토 ... 273 보고서 예제 ... 276 시스템 전반에 걸친 이진 이미지 요약 ... 276 시스템 전반에 걸친 심볼 요약(응용 프로그램 라이브러리별 정보 포함) ... 277 프로파일 자료 저장 ... 277 하드웨어 카운터 ... 278 캐시 실패 줄이기 ... 279 자료 구조체 채우기와 정렬 ... 280 압축 ... 281 루프 그룹화 ... 282 차단 ... 282 Prospect 프로파일러 ... 288 요약 ... 289 프로파일링에 관련한 웹 자료 ... 290 11장 UML ... 291 UML: 커널과 루트 파일 시스템 소개 ... 293 커널 패치와 빌드 ... 296 UML 커널 옵션 ... 297 커널 빌드 ... 303 루트 이미지 ... 304 파일 시스템 ... 305 스왑 파티션 ... 306 gdb 세션 설정 ... 306 UML 시작 ... 307 전형적인 gdb 세션 ... 307 gdb 스레드 분석 ... 309 참고 사항 ... 310 콘솔과 직렬 선 ... 310 UML 네트워킹 지원 ... 311 루트 이미지 ... 311 파일 시스템 추가 ... 311 시스템 끝내기 ... 312 UML 유틸리티 ... 313 요약 ... 313 감사의 말 ... 314 UML에 관련한 웹 자료 ... 314 12장 동적 프로브 ... 315 Dprobe의 독특한 특징 ... 317 프로브를 사용하기 위한 일반적인 단계 ... 318 Kprobe: 커널 동적 프로브 ... 319 커널 빌드 ... 320 Kprobe 인터페이스 ... 322 Kprobes 등록과 등록 해제 ... 322 sys_open을 사용한 프로브 예제 ... 325 기본 커널 모듈을 위한 makefile ... 327 시스템에서 활동 중인 Kprobe찾기 ... 328 sys_open에서 오프셋 찾기 ... 329 점퍼 프로브 ... 330 Kprobe 활용 ... 331 성공적인 Dprobe 적용 예 ... 331 요약 ... 332 감사의 말 ... 332 동적 프로브와 관련한 웹 자료 ... 332 13장 커널 디버거 ... 333 kgdb ... 336 kgdb 커널 패치 ... 336 널 모뎀 직렬 케이블 설정 점검 ... 341 전형적인 gdb 세션 ... 344 kgdb를 사용해서 멈추고 커널 소스 확인하기 ... 344 gdb 스레드 분석 ... 347 kdb ... 348 kdb 커널 패치 ... 349 커널 빌드 ... 351 kdb 활성화 ... 352 kdb 명령 ... 354 kdb 디버그 세션 ... 355 요약 ... 370 감사의 말 ... 370 kgdb와 kdb와 관련한 웹 자료 ... 370 14장 충돌 덤프 ... 371 커널 환경 설정 ... 374 충돌 덤프 커널 옵션 ... 374 커널 패치와 빌드 ... 375 커널 빌드 ... 377 일반적인 충돌 덤프 단계 ... 379 LKCD 명령어 ... 384 시스템 패닉과 충돌 덤프 확보 ... 386 Netdump: 클라이언트-서버 방식으로 동작하는 네트워크 충돌 덤프 기능 ... 390 서버 ... 391 클라이언트 ... 391 diskdump: 충돌 덤프 기능 ... 392 diskdump를 환경 설정하는 일반적인 단계 ... 393 mcore 충돌 덤프 살펴보기 ... 394 요약 ... 411 감사의 말 ... 411 충돌 덤프에 관련한 웹 자료 ... 411 옮긴이 주 ... 412 찾아보기 ... 420