WINDBG로 쉽게 배우는 WINDOWS DEBUGGING
해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.
패키지
북카드
키워드 Pick
키워드 Pick 안내
관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.
이 책은 WinDbg에 대한 완전한 안내서다. 디버깅 실전 매뉴얼이기도 하다. WinDbg를 설치하고 실행하는 방법부터 친절히 설명한다. 구체적인 디버깅 사례도 공개하고 있다. 특히 이론적인 설명만 늘어놓기보다는 저자들의 경험에서 우러난 디버깅 예제를 풍부하게 담아내 실무에서 바로 활용하거나 응용할 수 있다. 전반부에는 쉬운 예제를 실었으며, 후반부로 갈수록 어려운 예제를 수록하여 난이도별로 학습하게 된다.
또한 WinDbg을 이용하여 덤프파일을 분석하는 방법을 가르쳐주고 있다. 응용 프로그램에 문제가 발생했을 때 가장 처음으로 덤프파일이 생성되었는지 확인하고 수집하도록 이끈다. 다음으로는 덤프파일을 이용하여 문제를 분석하고 원인을 찾아내도록 인도하고 있다. 부록으로는 소스코드와 덤프파일 등이 수록된 CD 1장을 제공한다.
작가정보
저자(글) 김성현
안철수연구소에서 10년간 V3Pro2002, V3Pro2004, V3 Internet Security 2007, SpyZero 2.0 등의 제품에 탑재되는 실시간 감시 필터 드라이버와 엔진 드라이버를 개발했고, 현재는 기반기술 팀에서 V3의 보안 기능을 향상시키는 연구를 진행하고 있다.
저자(글) 이태화
안철수 연구소의 기반기술 팀에서 파일 시스템 필터 드라이버와 다수의 보안 모듈을 개발했으며, 현재는 한국마이크로소프트 기술지원부에서 Platform Server 기술지원을 담당하고 있다. Windows 운영체제에서 발생하는 다양한 문제점에 대한 해결 방법을 찾고 있으며, http://blogs.msdn.com/kocoreinternals/를 통해 윈도우의 내부, 디버깅 기법 등을 알리고자 한다..
저자(글) 김희준
안철수 연구소의 기반기술 팀에서 드라이버와 보안 모듈을 개발했고, 현재는 엔씨소프트의 보안 팀에서 개발 프로젝트를 진행하고 있다. 인터넷 커뮤니티에서 주최하는 오프라인 세미나를 통해 미니필터나 SoftICE, WinDbg에 대한 공개 강의를 진행했고, 관련 내용들과 기타 드라이버 및 개발 자료들을 운영 중인 http://insidekernel.net 개인 사이트로 공유하고 있다.
목차
- 1장 WinDbg에 대해
1.1 WinDbg란
1.1.1 WinDbg의 주요 기능
1.1.2 WinDbg의 용도
1.1.3 WinDbg와 SoftICE
1.2 WinDbg 디버깅의 종류
1.2.1 유저모드 디버깅과 커널모드 디버깅
1.2.2 라이브 디버깅과 덤프 디버깅
1.2.3 유저덤프와 커널덤프
1.3 WinDbg 디버깅 용어
1.3.1 디버거와 디버기
1.3.2 블루스크린
1.3.3 버그체크
1.3.4 디버그 심볼 파일
1.4 WinDbg 지원 범위
1.4.1 윈도우 NT 계열 운영체제
1.4.2 64비트 지원
1.5 WinDbg 명령
1.5.1 WinDbg 명령이란
1.5.2 명령줄 구분
1.5.3 명령별 사용 조건
1.6 다운로드와 설치
1.6.1 WinDbg 다운로드
1.6.2 WinDbg 설치
1.7 정리
2장 WinDbg 시작
2.1 유저모드 라이브 디버깅
2.1.1 WinDbg 실행
2.1.2 디버거 연결
2.1.3 심볼 파일 로드
2.1.4 실행과 정지
2.1.5 브레이크 포인트 설정과 해제
2.1.6 콜 스택 확인
2.1.7 소스 연결해서 소스 창 열기
2.1.8 Trace, Step으로 진행
2.2.9 지역변수 확인
2.1.10 와치 창으로 전역변수 확인
2.2 커널모드 라이브 디버깅
2.2.1 디버거 시스템을 디버기 시스템에 붙이기
2.2.2 MyDrv.sys 드라이버 실행
2.2.3 정지와 실행
2.2.4 심볼 파일 로드
2.2.5 브레이크 포인트 설정과 해제
2.2.6 콜 스택 확인
2.2.7 소스 연결해서 소스 창 열기
2.2.8 Trace, Seep으로 진행
2.2.9 지역변수 확인
2.2.10 와치 창으로 전역변수 확인
2.3 정리
3장 WinDbg로 디버깅하기
3.1 유저모드 덤프 디버깅
3.1.1 덤프 파일 수집
3.1.2 덤프 파일 열기
3.1.3 모듈 정보 보기
3.1.4 심볼 맞추기
3.1.5 콜 스택 보기
3.1.6 로컬 창으로 변수 보기
3.1.7 와치 창으로 메모리 보기
3.1.8 메모리 창으로 메모리 보기
3.1.9 프로세스와 스레드 보기
3.2 커널모드 덤프 디버깅
3.2.1 덤프 파일 수집
3.2.2 덤프 파일 열어보기
3.2.3 !analyze -v 메시지 보기
3.2.4 모듈 정보 보기
3.2.5 심볼 맞추기
3.2.6 콜 스택 보기
3.2.7 로컬 창으로 변수 보기
3.2.8 와치 창으로 메모리 보기
3.2.9 메모리 창으로 메모리 보기
3.3 정리
4장 유저모드 디버깅 케이스 스터디
4.1 기본 케이스 스터디
4.1.1 잘못된 메모리 사용
4.1.2 프로세스의 CPU 사용률이 100%를 기록할 때
4.1.3 데드락이 발생해 멈춘 경우
4.1.4 핸들 누수
4.1.5 메모리 누수
4.1.6 버퍼 오버플로우
4.2 어셈블리와 스택의 이해
4.2.1 어셈블리 기초
4.2.2 스택의 이해
4.2.3 호출 규칙
4.3 고급 케이스 스터디
4.3.1 예제 1: 잘못된 파라미터 전달
4.3.2 예제 2: Drwtsn32 로그 파일 분석
4.3.3 예제 3: MAP 파일을 이용한 분석
4.4 정리
5장 커널모드 디버깅 케이스 스터디
5.1 기본 케이스 스터디
5.1.1 BugCheck 0x50
5.1.2 BugCheck 0xD6
5.1.3 BugCheck 0xC1
5.1.4 BugCheck 0xC4-60
5.1.5 BugCheck 0xCE
5.1.6 BugCheck 0x7F
5.1.7 BugCheck 0xD1
5.1.8 BugCheck 0xF7
5.1.9 커널모드 행 디버깅
5.1.10 커널모드 데드락 디버깅
5.2 고급 케이스 스터디
5.2.1 BugCheck 0xA(분석 가능)
5.2.2 BugCheck 0xA(분석 불가능)
5.2.3 BugCheck 0x19(분석 가능)
5.2.4 BugCheck 0x19(분석 불가능)
5.2.5 BugCheck 0x8E
5.3 드라이버 확인 프로그램
5.3.1 드라이버 확인 프로그램 실행
5.3.2 명령 프롬프트에서 설정
5.4 정리
6장 고급 디버깅
6.1 WinDbg 사용팁
6.1.1 조건 브레이크 포인트
6.1.2 심볼 스토어 생성
6.1.3 유저모드 원격 디버깅
6.1.4 커널모드 원격 디버깅
6.1.5 커널모드 디버깅으로 유저모드 디버깅
6.1.6 커널모드 디버깅으로 유저모드 디버깅하기 2
6.1.7 Event ID 2019 비페이징 풀 부족 원인 찾기
6.2 WinDbg Tools
6.2.1 breakin.exe
6.2.2 logger.exe, logviewer.exe
6.2.3 ADPlus.vbs
6.3 WinDbg 스크립트
6.3.1 첫 번째 스크립트
6.3.2 두 번째 스크립트
6.4 WinDbg 확장 DLL
6.4.1 확장 DLL 만들기
6.4.2 확장 DLL 예제
6.5 정리
7장 WinDbg 명령
7.1 일반 명령
7.1.1 dt(Display Type)
7.1.2 s(Search Memory)
7.1.3 ds, dS(Display String)
7.1.4 da, du(Display Memory: ASCII, Unicode)
7.1.5 dl(Display Linked List)
7.1.6 dds(Display Words and Symbols)
7.1.7 x(Examine Symbols)
7.1.8 uf(Unassemble Function)
7.1.9 ub(Unassemble - b parameter)
7.1.10 ?(Evaluate Expression)
7.2 메타 명령
7.2.1 .kdfiles(Set Driver Replacement Map)
7.2.2 .reboot(Reboot Target Computer)
7.2.3 .dump(Create Dump File)
7.2.4 .hh(Open HTML Help File)
7.2.5 .symfix(Set Symbol Store Path)
7.2.6 .reload(Reload Module)
7.2.7 .enable_unicode(Enable Unicode Display)
7.2.8 .enable_long_status(Enable Long Integer Display)
7.2.9 .formats(Show Number Formats)
7.3 확장 명령
7.3.1 !object
7.3.2 !handle
7.3.3 !process
7.3.4 !stacks
7.3.5 !drvobj
7.3.6 !devobj
7.3.7 !devstack
7.3.8 !fileobj
7.3.9 !for_each_module
7.3.10 !vm
7.3.11 !sym
7.3.12 !poolfind
7.4 정리
책 속으로
★ 저자 서문★
이 책은 기획에서 출간까지 약 2년의 시간이 걸렸다. 그 기간 동안 불행인지 다행인지 좋은 디버깅 서적이 많이 출간되었다. 불행으로 생각하면 디버깅에 관한 훌륭한 내용이 많이 담긴 책이 먼저 나와 버려서 이 책의 가치가 희석될 수 있다는 것이고, 다행으로 생각하면 WinDbg를 이용한 디버깅에 대해 이 책보다 쉽게 접근하는 책은 없었다는 것이다.
디버깅은 소프트웨어 개발에 있어서 매우 중요한 부분이지만 디버깅하는 방법을 진지하게 배운 사람은 드물 것이다. 우리는 늘 하던 대로 비주얼 스튜디오의 디버그 빌드를 실행해 디버깅을 하거나, 디버그 로그 메시지를 출력하면서 디버깅을 한다. 이 정도만 디버깅을 해도 디버깅을 잘 하는 편에 속하는 것이다. 하지만 디버깅을 할 수 있는 다른 도구를 알거나 몇 가지 방법을 더 배운다면 디버깅이 훨씬 간단해지면서 소프트웨어 개발과 관리의 생산성이 향상되는 경험을 할 수 있다.
WinDbg는 이런 도움을 줄 수 있는 가장 대표적인 도구다. 따라서 다른 디버깅 서적에서도 WinDbg를 사용하는 예를 종종 볼 수 있다. 하지만 WinDbg라는 도구를 어떻게 다루기 시작해야 하는지에 대한 내용은 별로 없었다. 그래서 WinDbg를 이용해 디버깅하는 방법을 차근차근 소개하면 좋을 것 같다는 생각을 갖게 됐다. WinDbg는 처음에 어떻게 다뤄야 하는지 직관적으로 알기가 쉽지 않다. 요즘처럼 화려한 유저 인터페이스의 소프트웨어가 난무하는 시대에 WinDbg는 시대에 뒤떨어진 유저 인터페이스를 가지고 있고, 다소 복잡해 보이는 명령 입력 방식을 취하고 있기 때문이다. 그래서 저자들은 WinDbg를 설치하고 실행하는 방법부터 그림을 통해 쉽게 배울 수 있는 책을 상상하곤 했었다. 그 고민의 결과로 결국에는 이 책을 완성하게 된 것이다.
이 책은 많은 사람이 디버깅이나 WinDbg에 대해 저자들에게 했던 질문을 정리했다고 볼 수 있다. 사람들의 질문이란 대부분 간단한 사용법 같은 것들인데, 간단한 사용법이 분산되고 정리되어 있지 않아서 질문이 반복된다는 사실이 가장 안타까웠다. 간단한 사용법이나 디버깅 팁들이 조목조목 분류되어 있고, 원하는 내용만 원하는 시점에 참조할 수 있는 가이드 북이 있다면 어느 정도 이런 문제가 해소될 것 같았다. 그래서 저자들은 의기투합을 했고 각자 가진 나름대로의 역량을 끌어 모아 이 책의 내용을 구성했다.
이 책이 많은 개발자와 IT 전문가에게 도움이 되기를 바란다. 저자가 처음 디버깅이라는 세상을 경험했을 때 놀랐던 기억을 많은 개발자가 경험하기를 바란다. 그 당시 저자는 많은 개발자가 디버깅을 아직 잘 모른다는 사실에 다시 한 번 놀랐다. 이 땅의 많은 개발자, 그리고 IT 전문가가 제품에 문제가 발생했을 때 이 책을 통해 해결의 실마리를 찾을 수 있게 되기를 바란다. 그리고 이 책의 공동 저자들이 우리나라의 기술력 향상에 조금이라도 도움이 되었다면 기쁠 것이다.
여기까지 내용을 정리하는 데 참으로 기나긴 여정을 걸어온 느낌이다. 2년이라는 시간이 짧지는 않은 시간이므로 그렇기도 하거니와, 이것도 창작의 작업인 만큼 나름대로 출산의 고통이 있었기 때문이다. 하지만 그런 것들을 참으면서 버틸 수 있었던 이유는 이 책을 집필하는 목표가 확고했기 때문이었다. 이 책의 목표는 명확하다. 더 많은 사람이 더 쉽게 디버깅을 할 수 있게 하는 것이다. 이 책이 여러분의 디버깅 능력을 향상시키는 데 조금이라도 더 보탬이 되었으면 한다.
출판사 서평
소개
Windbg 활용 완벽 가이드
이 책에서는 윈도우에서 WinDbg를 이용해 디버깅하는 방법에 대하여 중점적으로 설명한다. 그리고 가급적이면 간단하게 디버깅하는 방법을 위주로 설명할 것이다. WinDbg가 훌륭한 디버깅 도구임에는 틀림이 없지만 많은 사람들이 그 사용법을 어렵다고 느끼기 때문에 잘 활용하지 못하고 있는 실정이다. 그래서 WinDbg를 전혀 모르는 처음부터 중간까지 본다면 WinDbg란 어떤 것이고 어떤 식으로 사용하는지에 대한 기초를 배울 수 있다. 중간부터 마지막에서는 조금 더 복잡하거나 어려운 상황에 어떻게 응용하는지에 대한 방법을 엿볼 수 있을 것이다.
예제로 쉽게 배우는 디버깅
사용법을 직관적으로 보여주기 위해 간단한 디버깅 예제들로 설명했다. 이론적인 설명이나 명령어 옵션을 늘어놓기보다는 실제로 사용하는 예제를 보여주는 책으로, 예제들을 따라 해 보면서 배울 수 있고 유사한 상황에 다시 꺼내 들어 참고할 수 있는 핸드북이 되기를 바랬다. 간단한 디버깅 예제들은 여러분의 문제 상황과 정확히 일치하지 않을 수도 있다. 하지만 간단한 디버깅 절차를 알고 있으면 어떤 경우라도 디버깅 시도를 해 볼 수 있다. 대부분 쉽게 문제의 원인을 찾을 수 있을 것이다. 책의 앞부분은 쉽고 간단한 예제들로 구성되어 있다. 간단하지만 가장 기본적인 기초체력에 해당하는 내용이므로 디버깅의 기본 스텝들을 볼 수 있을 것이다. 책의 후반부로 갈수록 조금씩 어려운 예제들이 등장하게 된다. 어떤 독자는 앞부분을 잘 이해해서 뒷부분도 어렵지 않게 이해할 수도 있고 어떤 독자는 갑자기 어려운 내용이 나왔다고 생각할 수도 있다. 약간 어려워 보이더라도 일단 이런 식의 접근방법을 봐 두는 것만으로도 또 하나의 참고자료가 될 수 있을 것이다.
실전에서 우러나온 현장 예제
예제들은 대부분 저자들이 경험했던 내용을 바탕으로 구성한 것들이다. 실제로 발생했던 문제를 그대로 예제로 보인 것도 있고 간단한 예제로 편집하여 만든 것도 있다. 대부분 필드에서 흔하게 일어날 수 있는 대표적인 문제들의 유형을 예제로 만들어 내려고 노력했다. 수없이 많은 문제의 유형을 모두 커버하지는 못하겠지만 최소한 저자들이 경험한 내용들에 대한 정리와 공유는 될 것이다. 저자인 우리도 예전에 어떻게 분석을 했었는지 기록으로 남겨두는 것이 스스로에게 도움이 된다. 또한 우리가 이런 방법으로 문제를 분석했다는 것을 공유하면 여러분들에게 참고가 될 수 있다. 참고라고 표현하는 이유는 같은 문제라도 조금씩 다른 방법으로 분석하는 것도 충분히 가능하기 때문이다. 처음에는 이 예제들을 그대로 따라 해 보겠지만 나중에는 이 책의 내용은 참고만 하고 스스로 이런 저런 방법을 동원하여 자신만의 분석기법을 창조해 낼 수 있을 것이다.
덤프 파일 활용에 관한 실전 팁
이 책의 또 하나의 목적은 덤프파일 활용의 활성화다. 윈도우에서 응용 프로그램에 문제가 발생하거나 블루스크린이 뜨거나 했을 때는 크래쉬(Crash) 덤프라는 덤프파일이 생성된다. 덤프파일을 수집하여 WinDbg로 열어보면 빠른 분석과 정확한 원인 파악을 할 수 있다. 이런 덤프파일이 있다는 사실조차 모르고 있거나 덤프파일을 받아 놓고도 어떻게 분석해야 하는지 모르는 경우는 참으로 안타까운 경우라고 할 수 있다. 조금만 분석하면 원인을 찾아낼 가능성이 아주 높은데 그것을 하지 못하고 있으니 말이다. 응용 프로그램에 어떤 문제가 발생했을 때 가장 처음으로 해야 할 일은 덤프파일이 생성되었는지 확인하고 수집하는 것이다. 그 다음으로 해야 하는 일은 덤프파일을 이용하여 문제를 분석하고 원인을 찾아내는 것이다. 이렇게 하면 문제를 해결하기 위하여 문제가 발생하는 컴퓨터에 가 볼 필요도 없고 다시 문제를 재현하기 위하여 노력할 필요도 없다. WinDbg가 덤프파일을 분석할 수 있는 기능을 제공하기 때문에 가능한 일이다.
〈내용〉
■ WinDbg 사용법과 다양한 디버깅 예제
■ 예제를 통한 유저모드 디버깅과 커널 모드 디버깅 케이스 스터디
■ 덤프 파일 활용에 관한 실전 팁
■ 성능 로그를 통한 디버깅 기법
■ Perfmon을 활용한 시스템 퍼포먼스 측정 방법
■ 각종 유틸리티를 활용한 문제 해결 방법의 소개
■ 쉬운 디버깅과 유지보수를 위한 팀 협업 개발환경을 갖추는 방법
■ 초보자를 위한 디버깅에 필요한 어셈블리와 호출규약, 스택의 기초
■ 실전에 많이 쓰이는 WinDbg 명령어 소개와 그 활용방법, 예제 소개
〈부록 CD〉
■ 책에 들어있는 모든 예제 프로그램의 소스코드
■ 곧바로 실행하며 테스트할 수 있도록 빌드된 실행파일과 심볼, MAP 파일
■ 본문 내용을 직접 따라가며 명령어를 실행해 볼 수 있는 덤프 파일
■ 예제에서 사용된 스크립트와 확장 DLL
〈추천사〉
처음 사용자에게 무엇을 어떻게 시작할까에 대한 지침서는 망망대해에서 방향을 잃은 배를 안내해주는 희망의 등대라고 해도 과언이 아니다. 다년간의 보안 소프트웨어 개발로 축적된 디버깅 기술과 윈도우 내부 구조에 대한 지식이 깊은 저자들이 지은 이 책 『WinDbg로 쉽게 배우는 윈도우 디버깅 실전 매뉴얼』은 윈도우 디버깅을 시작하거나 이미 어느 정도 알고 있는 프로그래머나 시스템 엔지니어들이 그 방법을 배울 수 있는 아주 훌륭한 책이다. 거의 매일 윈도우 디버깅을 하고 있는 엔지니어로서 늘 “쉽고 잘 정리된 책이 한 권 있다면 좀 더 많은 사람이 윈도우 디버깅을 두려워하지 않고 친구처럼 쉽게 다가갈 수 있을 텐데”라는 생각을 하고 있었는데, 다행히 이렇게 훌륭한 책이 드디어 출간됐다. 버그 없는 코드만 세상에 존재하길 기대해 본다.
- 김관현
마이크로소프트 기술지원부 부장, Escalation Engineer
윈도우 프로그래머라면 매일 겪는 일로서 피하려고 해도 피할 수 없는 일이 바로 디버깅 작업이다. 디버깅 작업은 자신의 프로그램을 디버깅하고 시스템을 분석하고 다른 개발자의 프로그램을 디버깅해야 한다는 관점에서 윈도우 개발자에게는 항상 양날의 검과 같은 존재다. 이 검의 끝이 어디로 향하는지는 디버깅 스킬과 디버깅 툴을 다루는 개발자의 능력에 있다고 해도 과언이 아닐 것이다.
여러분이 애플리케이션 개발자든 커널 프로그램 개발자든 간에, 수년간에 걸쳐 세 저자들이 실무에서 겪은 실질적이고 체계적인 방식으로 효율적인 프로그램 디버깅을 공개한 이 책에서 큰 가이드를 얻을 수 있으리라 믿는다. 이 책에서는 문제의 이면에 감춰진 실제 해결책을 찾는 데 필요한 많은 구체적인 케이스가 제공되며, 또한 디버깅 툴을 완벽히 이해하는 데 필요한 다양한 주제와 디버깅 툴의 기능을 확장하는 방법을 예시한다.
윈도우 개발자들이 일상적으로 직면할 수 있는 다양하고 복잡한 디버깅 상황을 통합적으로 조명하고, 세부적인 예제 분석을 통해 디버깅 개념에서부터 시스템과 연관된 난해한 부분에 이르기까지 여러 주제를 적절한 수준에서 가장 개발자에 친근하게 다룬 세 저자의 동료로서 감사의 말을 전하고 싶다.
- 김점갑
안철수연구소 기반기술팀 책임연구원, 에이콘 윈도우 시스템 프로그래밍 시리즈 에디터
대부분 분야가 그렇듯 처음에는 좋은 조언자가 되어 줄 수 있는 책과 사람을 통해 그 분야를 접하고 앞으로의 방향을 정하게 된다. 하지만 이러한 조언자들이 해줄 수 있는 것은 결국 조언일 뿐, 성과의 수준을 결정하는 것은 개발자 본인일 뿐이다. 윈도우 환경에서 프로그램의 내부를 알고자 하고, 매트릭스의 틀을 깨어 본인의 자유도를 높이고 명확히 하고자 하는 이들은 어떻게 노력하고 있을까?
나는 이를 위해 디버깅 툴을 최고의 도구라 여겨, 디버깅 툴을 통해 내가 상상하고 궁금해 하는 것을 탐구하려 노력해왔다. 그리고 이것이야말로 내가 빚었던 가장 가치 있는 현실의 지식이었다.
다행스럽게도 국내 저자들에 의해 만들어진 이 황금 같은 디버깅 책이 초심의 마음을 잃지 않은 독자들에게 자신의 열정 어린 탐닉을 만끽할 수 있게 하는 좋은 조언자가 되어 주리라 생각한다.
1줄의 글에서 10가지의 의미를 발견해 보길 바라며.
- 정덕영
『Windows 구조와 원리』 저자
지금까지 이렇게 쉽게 WinDbg의 모든 기능을 설명한 책은 없었습니다. 너무나 강력한 기능을 제공하고 있지만 소수의 전문가만 사용해온 WinDbg는 가장 훌륭한 도움말을 제공하고 있다는 평을 듣고 있음에도 여전히 진입장벽이 높았던 디버거입니다. 하지만 『WinDbg로 쉽게 배우는 윈도우 디버깅 실전 매뉴얼』과 함께라면 WinDbg의 전체적인 모습을 파악할 수 있을 뿐만 아니라 필요한 기능들을 적재적소에 활용할 수 있을 것입니다.
디버깅 고수인 저자들의 노하우가 고스란히 녹아있고 명령 중심이 아닌 문제 해결 방식의 접근을 통해 암기식 학습 방법을 탈피함으로써 누구나 쉽게 WinDbg의 강력한 기능을 사용할 수 있게 설명합니다. 제목과 달리 초보자에서부터 고급 사용자 모두에게 유용한 최고의 WinDbg 책이네요. 강추합니다!
마지막으로, 이 책을 집필하느라 2년여 동안 수고하신 저자들의 노고에 진심으로 감사의 말씀을 전하고 싶습니다.
- 서우석
마이크로소프트 C# MVP, 디버그랩(http://www.debuglab.com) 운영자
〈구성〉
1장에서는 WinDbg의 기본 개념에 대하여 설명한다. WinDbg를 사용하기 위하여 알아 두어야 하는 주변지식이나 용어들에 대한 내용이므로 가벼운 마음으로 훑어보면 된다.
2장에서는 WinDbg를 처음 사용한다고 가정하고 WinDbg를 실행시키는 방법부터 시작하여 초기 설정을 하고 간단한 디버깅을 해보는 것까지 설명한다. WinDbg로 응용 프로그램과 커널모드 드라이버를 어떻게 제어하는지 응용 프로그램이나 커널모드 드라이버의 내용을 어떻게 확인하는지 보게 될 것이다.
3장에서는 WinDbg로 문제를 분석하는 방법에 대하여 다룬다. 문제가 발생한 상황에서 어떤 식으로 원인을 찾아가는지 간단하게 살펴보기로 한다. 덤프파일을 분석하는 예제로 진행하기 때문에 덤프파일을 분석할 줄 모른다면 이 장을 참고하여 기본적인 분석 절차를 배울 수 있다.
4장에서는 유저모드에서 발생할 수 있는 여러 가지 문제상황들을 분석해 나가는 예를 보인다. 흔하게 발생하는 문제들로 잘못된 메모리 참조, 프로세스 행, 프로세스 대드락, 핸들릭, 메모리릭 등의 예제를 보인다. WinDbg를 비롯하여 다양한 툴들로 문제를 분석하고 원인을 찾아나가는 방법을 보게 될 것이다. 고급 주제로 들어가면 어셈블리도 참고해야 한다는 사실을 알게 될 것이다. 어셈블리에 대하여 잘 모르고 있었다면 이 장을 참고하여 기초적인 내용을 공부할 수 있다.
5장에서는 커널모드에서 발생할 수 있는 여러 가지 문제상황들을 해결해 나가는 예를 보인다. 커널모드에서 발생하는 문제들이란 사실 블루스크린을 의미한다. 블루스크린이 발생했다고 해서 다 같은 블루스크린이 아니라는 사실을 알게 될 것이다. 블루스크린마다 문제를 나타내는 번호와 메시지를 담고 있기 때문에 이것들의 대표적인 유형들을 예제로 마련하여 분석하는 방법을 보게 될 것이다.
6장에서는 WinDbg를 좀 더 편리하게 사용하는 방법과 디버깅에 도움을 주는 여러 툴들을 사용하는 방법을 설명한다. 사실 WinDbg는 기본적인 디버깅뿐만 아니라 디버깅을 도와주는 엄청난 기능들이 포함되어 있는 강력한 도구이다. 이런 엄청난 기능들을 모두 알고 있다면 디버깅하는 작업은 기본적인 방법만 알고 있을 때보다 훨씬 더 간단해 진다. 어떤 것들이 있는지 알지 못해서 못쓰는 것이 문제이므로 유용한 몇 가지를 소개해서 WinDbg의 편리한 기능을 활용하게 한다.
7장에서는 유용한 WinDbg 명령어들을 사용예제 중심으로 설명한다. 사용예제 중심이란 명령어 자체에 대한 설명 중심이 아니라는 뜻이다. 명령어는 대체로 다양한 기능을 수행할 수 있는데 이것들을 종합적으로 설명하다 보면 설명만 복잡해지고 이해도가 떨어지게 된다. 따라서 설명은 가급적 줄이고 사용예제를 도입하여 어떻게 사용하는지를 실제로 보여주는데 초점을 맞춘다.
〈대상 독자〉
이 책은 윈도우용 소프트웨어를 개발하고 유지 관리하는 모든 일에 연관된 사람들을 대상으로 작성되었다. 전문적인 소프트웨어 개발자, 테스트 엔지니어, 기술지원 엔지니어가 대상이 될 수 있고 이제 소프트웨어 개발을 배우기 시작하는 학생들이 대상이 될 수도 있다. 이 범주에 포함되면서 디버깅에 대하여 잘 모르고 있다면 이 책이 목표로 하는 정확한 대상이라고 할 수 있다. 디버깅을 이미 잘 할 줄 아는 독자들은 디버깅 능력을 향상시키는 목적으로 이 책을 활용할 수 있다.
이 책의 독자는 기초 C/C++ 언어 지식, 기초 디버깅 지식, 운영체제 기초지식을 알고 있다고 가정한다. 이 책의 모든 예제는 C/C++언어로 작성되었기 때문에 최소한 C/C++언어는 읽을 수 있어야 한다. 디버깅 경험은 비주얼 베이직이나 C/C++등을 이용하여 개발하면서 간단한 디버깅을 해 본 경험 정도면 충분하다. WinDbg에 대한 사전 경험은 없어도 된다. WinDbg를 소개하면서 기초적인 사용법부터 설명하게 될 것이다. 운영체제 기본구조에 해당하는 프로세스, 스레드, 이벤트 등의 용어정의는 별도로 설명하지 않는다.
기본정보
ISBN | 9788960770867 | ||
---|---|---|---|
발행(출시)일자 | 2009년 07월 17일 | ||
쪽수 | 584쪽 | ||
크기 |
188 * 254
mm
|
||
총권수 | 1권 | ||
이 책의 개정정보 |
새로 출시된 개정판이 있습니다.
개정판보기
|
Klover
e교환권은 적립 일로부터 180일 동안 사용 가능합니다.
리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 리뷰 종류별로 구매한 아이디당 한 상품에 최초 1회 작성 건들에 대해서만 제공됩니다.
판매가 1,000원 미만 도서의 경우 리워드 지급 대상에서 제외됩니다.
일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
리뷰는 1인이 중복으로 작성하실 수는 있지만, 평점계산은 가장 최근에 남긴 1건의 리뷰만 반영됩니다.
구매 후 리뷰 작성 시, e교환권 200원 적립
문장수집
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
구매 후 리뷰 작성 시, e교환권 100원 적립