도서명 : DEBUG HACKS: 디버그를 극대화하는 테크닉 & 툴
저자 : 요시오카 히로타 등저/ 진명조 역
발행일 : 2010년 10월 12일
ISBN : 9788994405018
정가 : 27,000 원
구매하기 : 강컴닷컴 | 인터파크 | YES24


 



책소개

프로그래밍 입문서는 숱하게 많은데 왜 디버그 입문서는 거의 없는 걸까? 이 책은 프로그래머가 프로그래밍을 할 때 피해갈 수 없는 디버그라는 프로세스에 관해서 기록한 것이다. 디버그는 프로그래밍 언어나 개발환경에 의존하지 않는, 어떠한 프로그래밍에서도 피해갈 수 없는 작업임에도 불구하고 제대로 정리할 수 없는, 적당한 참고서가 거의 없는 분야이다. 이 책에는 역전(歷戰) 프로그래머가 경험에서 얻은 버그 찾는 법, 고치는 법이 가득 수록되어 있다. 특히 보통은 눈에 잘 띄지 않는 리눅스 자체의 버그에 관한 Hack은 귀중한 정보가 되리라 생각한다. 몇몇 Hack은 많은 프로그래머가 일상적으로 사용하지는 않는 것일지도 모르지만 오히려 그 발상은 더욱 참고가 될 것이다. 히나 gdb valgrind, oprofile과 같은 편리한 툴에 관해서 확실히 설명하고 있다 대상 독자는, 스스로 프로그래밍 설계, 구현, 테스트, 디버그 등을 수행하는 초급부터 중급 프로그래머다. 자신의 프로그래밍 스킬을 더 키우고자 하는 사람을 대상으로 쓰여 졌으며 C/C++ 프로그래머뿐만 아니라 Perl/PHP/Python/Ruby 등 스크립트 언어로 프로그램을 작성하고 있는 사람들에게도 이 책에 기술된 방법들 중 상당부분은, 언어나 도구 모두 다르더라도 사고방식은 참고가 될 것이다. 또한 Windows Mac 등 다른 플랫폼에서 프로그래밍을 하고 있는 사람들에게도 마찬가지로 그 사고방식은 참고가 되리라 생각한다. 특히 로그래밍 언어 입문서는 어느 정도 읽었지만 프로그래밍을 보다 깊이 연구하고자 하는 학생들에게는 이 책에 쓰여 있는 Hacks가 참고가 될 것이.

 

도서특징

1. 워밍업(warmingup)에서는 디버그란 어떠한 프로세스인지 개념적으로 설명한다. 또한 이 책『Debug Hacks』의 전체적인 모습을 기술하고 있다.

2. 디버그 전에 알아야 할 것에서는 디버그의 기본으로서 디버거(GDB) 사용법, Intel 아키텍처 기본, 스택 기초지식, 함수호출 시 인수 전달법, 어셈블리어 공부방법 등을 설명한다.

3. 커널 디버그 준비에서는 리눅스 커널의 기본적인 디버그 방법을 기술하고 있다. Oops 메시지 보는 법, 시리얼콘솔 사용법, 네트워크를 경유한 커널 메시지 얻기, SysRq, 각종 덤프 얻는 방법, crash 명령 사용법, IPMI NMI watchdog으로 크래시 덤프 얻는 법, 커널 특유의 어셈블리어 등 커널 디버그의 기본에 대해 기술하고 있다.

4. 실전 애플리케이션 디버그에서는 유저 애플리케이션의 실전적 디버그 방법에 대해 기술하고 있다. 스택 오버플로우에 의한 segmentation fault(SIGSEGV), 백트레이스의 비정상 출력, 배열 비정상 접근에 의한 스택 파괴, 감시점을 활용한 메모리 비정상 접근 검, malloc()/free()에서의 장애, 애플리케이션의 스톨상태 등 다양한 사례에 따른 디버그 방법을 기술하고 있다.

5. 실전 커널 디버그에서는 커널 장애에 대한 디버그 방법을 기술하고 있다. 커널 패닉(NULL포인터 참조, 리스트 파괴, 경쟁조건), 커널 스톨상태(무한루프, 스핀락, 세마포어, 실시간 프로세스), 동작이 느려지고 CPU 부하가 높아지는 문제에 관한 디버그 방법을 기술하고 있다.

6. 고수준 디버그 테크닉에서는 디버그하는 데 필요한 다양한 툴 소개와 세세한 노하우 등 광범위한 내용을 모았다. 여기서 소개하고 있는 툴과 테크닉도 strace, objdump, Valgrind, kprobes, jprobes, KAHO, systemtap, proc 파일시스템, oprofile, VMware vprobe, fault injection, Xen 등 여러 가지로 나뉜다. 그 밖에 OOM Killer의 동작과 구조, GOT/PLT를 경유한 함수호출을 검출하는 방법, 주위의 x86머신이 64비트를 지원하는지 여부를 조사하는 방법까지 기술하고 있다.

 

 목차

 

추천의

역자의 글

 Credit

시작하며

 1 워밍업(warmingup)

01. 디버그란?

02. Debug Hacks

03, 디버그의 이해

 2 디버그 전에 알아두어야

04. 프로세스의 코어덤프 얻기

05. 디버거(GDB) 기본적인 사용법 #1

06. 디버거(GDB) 기본적인 사용법 #2

07. 디버거(GDB) 기본적인 사용법 #3

08. 인텔 아키텍처의 기본

09. 디버그에 필요한 스택 기초지식

 

10. 함수호출 매개변수 전달방법(x86_64)

11. 함수호출 매개변수 전달방법(i386)

12. 함수호출 매개변수 전달방법(C++)

13. 어셈블리어 학습법

14. 어셈블리어로부터 소스코드 위치 찾기

 3 커널 디버그 준비

15. Oops 메시지

16. minicom으로 시리얼 콘솔 접속하기

17. 네트워크를 경유한 커널 메시지 얻기

18. SysRq 키를 이용한 디버그 방법

19. diskdump로 커널 크래시 덤프 얻기

20. Kdump로 커널 크래시 덤프 얻기

21. crash 명령 사용법

22. IPMI watchdog timer