실전 윈도우 디버깅
해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.
패키지
북카드
키워드 Pick
키워드 Pick 안내
관심 키워드를 주제로 다른 연관 도서를 다양하게 찾아 볼 수 있는 서비스로, 클릭 시 관심 키워드를 주제로 한 다양한 책으로 이동할 수 있습니다.
키워드는 최근 많이 찾는 순으로 정렬됩니다.
이 책은 애플리케이션부터 시스템 프로그래밍까지 윈도우 프로그래밍 오류 분석에 대해 다루고 있다. 메모리 손상, 보안 문제, 자원 누수, 동기화 문제, 그리고 서버/클라이언트 등의 근본 원인을 파악하고 디버깅하는 기법을 배울 수 있다.
아울러 NTSD, CDB, KD 등 가장 강력한 툴 활용 기법은 물론, 회사에 소스 서버, 심벌 서버 등 디버깅이 가능한 시스템 구축 기법법 등도 가르쳐준다. 윈도우 오류 보고 시스템을 구축하여 자동으로 오류를 전달받고 패치하는 메커니즘까지 설명하고 있다.
작가정보
저자(글) MARIO HEWARDT
마이크로소프트의 수석 설계 엔지니어로서 윈도우 시스템 레벨의 개발 분야에서 지난 9년간 광범위하게 개발에 관여했다. 윈도우 98부터의 5번에 걸친 윈도우 출시 동안에 서버와 데스크탑 관리 분야의 작업을 주로 했으며, 제품의 신뢰성과 견고성, 보안성을 확보하는 데 주력했다.
저자(글) Daniel Pravat
마이크로소프트의 수석 설계 엔지니어로서 다수의 윈도우 출시에 있어서 여러 윈도우 컴포넌트를 작성하는 데 주도적으로 관여했다. 마이크로소프트에 합류하기 전에는 컴퓨터 기반의 전화 통신 서버를 위한 전자 통신 소프트웨어를 개발했었다. 모든 소프트웨어 애플리케이션은 신뢰성이 있어야 하며 예측 가능해야 하고 효율적이라야 한다고 믿는 사람이다.
번역 김점갑
경북대학교 컴퓨터 공학과를 졸업한 후 삼성전자에서 GNU 컴파일러를 기반으로 ARM CORE 컴파일러 포팅/개발을 했다. 이후 하제소프트를 거쳐 데브구루를 공동으로 창업하여 다양한 디바이스 드라이버를 개발했으며, 다수의 드라이버 강의 세미나와 교육을 진행했다. 현재는 안철수 연구소에서 보안 관련 시스템 프로그램 개발 업무에 매진하고 있다.
목차
- 1부. 개요 1
1장 툴 소개 3
누수 진단 툴 4
윈도우 디버깅 툴 7
UMDH 9
마이크로소프트 애플리케이션 베리파이어 9
전역 플래그 16
프로세스 익스플로러 22
윈도우 드라이버 킷 24
Wireshark 27
DebugDiag 27
정리 28
2장. 디버거 소개 29
디버거 기본 30
기본적인 디버거 작업 45
원격 디버깅 109
디버깅 시나리오 118
정리 121
3장. 디버거 해부 123
유저 모드 디버거의 내부 124
타겟 제어 168
정리 178
4장. 심볼과 소스 파일의 관리 179
디버깅에 필요한 심볼 관리 180
디버깅 용도의 소스 파일 관리 188
정리 195
2부. 디버깅 응용 197
5장. 메모리 손상 1 - 스택 199
메모리 손상 탐지 201
스택 손상 209
정리 258
6장. 메모리 손상 2 - 힙 259
힙이란 259
힙 손상 281
정리 315
7장. 보안 317
윈도우 보안 개요 318
보안 정보의 출처 329
보안 검사의 방법 334
클라이언트-서버 애플리케이션에서 신분 전파 335
시스템 경계에서의 보안 검사 339
보안 실패 조사 340
정리 378
8장. 프로세스 간의 통신 379
통신 메커니즘 380
로컬 통신 문제 해결 382
원격 통신 문제 해결 396
부가적인 기술 정보 422
정리 426
9장. 리소스 누수 427
리소스란 427
하이레벨 절차 428
리소스 누수의 재현성 433
핸들 누수 434
메모리 누수 459
정리 492
10장. 동기화 493
동기화 기본 493
하이레벨 절차 504
동기화 시나리오 509
정리 549
3부, 고급 주제 551
11장. 커스텀 디버거 익스텐션 작성 553
디버거 익스텐션 소개 553
디버거 익스텐션 예제 556
정리 594
12장. 64비트 디버깅 595
마이크로소프트 64비트 시스템 595
윈도우 x64의 변경사항들 603
정리 630
13장. 포스트모템 디버깅 631
덤프 파일 기본 632
덤프 파일의 사용 645
윈도우 오류 보고 653
기업 오류 보고 683
정리 690
14장. 강력한 툴 691
디버그 진단 툴 691
!analyze 익스텐션 명령 699
정리 708
15장. 윈도우 비스타 기초 709
1장: 툴 소개 710
2장: 디버거 소개 712
6장: 메모리 손상 - 힙 부분 717
7장: 보안 723
8장: 프로세스 간의 통신 736
9장: 자원 누수 737
10장: 동기화 737
11장: 커스텀 디버거 익스텐션 작성 741
13장: 포스트모템 디버깅 741
정리 745
부록 A. 애플리케이션 베리파이어 테스트 설정 747
예외 747
핸들 747
힙 748
락 757
메모리 759
스레드 풀 762
TLS 763
파일 경로 764
HighVersionLie 765
인터액티브서비스 767
KernelModeDriverInstall 768
자원 부족 시뮬레이션 769
LuaPriv 770
DangerousAPIs 774
DirtyStacks 775
TimeRollOver 775
PrintAPI와 PrintDriver 775
출판사 서평
〈 소개 〉
윈도우의 개발자에게 있어서 디버깅보다 더 난해하며 잔인한 작업은 거의 없다. 신뢰할 만하고 실제적인 정보가 항상 부족했다. 이제 15년 이상의 경력을 가진 마이크로소프트 시스템 개발자인 두 저자가 윈도우 디버깅에 대한 철저한 실전 지침을 제공한다.
저자들은 애플리케이션 전체 수명에 걸친 디버깅을 다루고 마이크로소프트 디버거와 서드파티 툴을 사용하는 법을 소개한다.
실제 해결책을 신속히 찾는 데 도움을 주고자 이 책은 실질적인 디버깅 시나리오로 구성돼 있으며, 전문 개발자가 직면하는 복잡한 디버깅 역경을 조명하려고 세부적인 코드 예제를 제공한다. 핵심 윈도우 운영체제 개념에서부터 보안과 윈도우 비스타, 64비트 디버깅에 이르기까지 두 저자는 부각되는 주제를 먼저 언급하지만 너무 간략하지도 않고 또한 과장되지도 않게 다룬다.
이 책을 통해 독자 여러분은 다음의 목표를 이룰 수 있다.
● NTSD와 CDB, WinDbg, KD, ADPlus와 같은 최신의 가장 강력한 윈도우 디버깅 툴을 마스터할 수 있다.
● 디버깅이 용이하도록 설계되지 않았거나 작성되지 않은 코드를 디버깅할 수 있다.
● 디버거의 이면을 이해하고 심볼과 소스를 효과적으로 관리할 수 있다.
● 스택이나 힙과 관련된 복잡한 메모리 손상을 디버깅할 수 있다.
● 복잡한 보안 문제를 해결할 수 있다.
● 신분 추적과 RPC 디버거 확장, Ethereal를 통한 IPC 추적 같은 여러 프로세스 간에 걸쳐 있는 문제를 디버깅할 수 있다.
● 메모리와 핸들 누수 같은 리소스 누수를 찾아서 수정할 수 있다.
● 일반적인 스레드 동기화 문제를 디버깅할 수 있다.
● 커스텀 디버거 익스텐션을 작성해야 할 때와 그 방법을 익힐 수 있다.
● 크래시 덤프를 사용하여 “포스트모템 디버깅”을 수행할 수 있으며, 이를 윈도우 오류 보고 시스템과 통합할 수 있다.
● DebugDiag 툴과 Analyze 디버거 명령을 사용하여 디버깅 작업을 자동화할 수 있다.
독자 여러분이 시스템 레벨이나 애플리케이션 개발자이든 간에 이 책은 독자의 다음 프로젝트에서 많은 시간을 덜어줄, 디버깅에 관한 심도 있는 이해력을 제공할 것이다.
★ 이 책의 대상 ★
소프트웨어 개발자는 물론이고 윈도우 깊숙한 내부에서 실제 어떤 일이 일어나는지 궁금한 사람 누구에게나 도움이 될 내용을 다룬다. 기술적으로 고급 시스템 엔지니어만을 위한 책이라고 생각할 수도 있지만 실상은 그렇지 않다. 이 책은 개발자들 사이에 떠도는 선입견을 제거하는 것이 가장 큰 목표다. 여러 이유로 인해 많은 소프트웨어 엔지니어는 자신들이 작업하고 있는 소프트웨어와 운영체제 간에 일종의 마법 같은 관계가 있다고 믿는다. RPC/COM이나 윈도우 힙 관리자 같은 운영체제 컴포넌트를 분석해야 하는 문제가 발생할 때 개발자가 품은 선입견은 문제 해결에 큰 도움이 될 수 있는 정보를 얻기 위한 윈도우 내부 조사를 방해한다. 이 책을 효과적으로 활용하려면 선입견을 없애는 법부터 배우고 이면에 마법이 존재하지 않는다는 마음가짐을 지녀야 한다. 핵심 윈도우 컴포넌트를 독자 제품의 확장으로 간주해야 하지 독립적이고 마법적인 계층으로 여겨서는 안 된다. 윈도우 컴포넌트도 다른 누군가가 작성한 단지 코드일 뿐이다. 독자가 이 경지에 올라섰다면 가히 윈도우 디버깅에 정통할 첫 단계를 내디딘 것이다.
★ 이 책의 구성 ★
1부. 개요
1부에서는 기초 내용을 다루며 툴과 디버거의 개요를 통해 디버거의 기본적인 사항을 알려준다. 윈도우 디버거에 이미 익숙하더라도 귀중한 많은 정보가 들어 있으므로 대강이라도 살펴보기를 권장한다.
2부. 디버깅 응용
윈도우 디버거를 사용하여 일반적인 프로그래밍 실수를 분석할 기회를 제공한다. 각 장에서는 메모리 손상과 메모리 누수, RPC/COM과 같은 특정 부류의 문제에 중점을 둔다. 각 장은 윈도우 컴포넌트와 관련 있는 일반적인 프로그래밍 실수를 예시하는 몇 가지 시나리오에 수반되는 해당 윈도우 컴포넌트를 간단히 살펴보고 시작한다.
3부. 고급 주제
3부는 포스트모템 디버깅과 64비트 디버깅, 윈도우 비스타의 기본적인 사항 등과 같은 주제를 논하는 장으로 구성해 전반적으로 고급 내용을 다룬다. 이들 장의 목표는 각 영역에 대해 철저한 내용을 제공하는 것이 아니라 설명한 주제를 독자가 시작할 수 있는 정도의 기본적인 사항을 제공하는 것이다.
★ 추천의 글 ★
소프트웨어에는 “단순화”라는 한 가지 목표가 있다. 최적화하고 자동화할 수 있는 절차와 좀더 효율적으로 저장하거나 처리할 수 있는 데이터가 존재한다면 소프트웨어는 그 일을 이행하기 위해 개입한다. 단순화를 한다고 해서 원래대로 복원(undo)하는 데 복잡성을 야기하지 말아야 한다. 따라서 최소의 사용자 관여로써 설치되어야 하며 계속해서 여타 애플리케이션과 여러 곳의 데이터와 서비스를 통합하고 소프트웨어와 하드웨어 환경 변화에 탄력적으로 대응해야 한다. 대부분의 경우 소프트웨어는 신비하게 그냥 동작한다.
하지만 엔드 유저와 관리자의 경험을 단순화하려고 노력하는 동안에 소프트웨어는 더욱 더 복잡해졌다. 소프트웨어가 다루는 데이터 양이든지 소프트웨어가 통신하는 애플리케이션 수, 소프트웨어의 내부 병렬화 정도 또는 소프트가 자신이 실행되는 스택에서 직간접으로 임포트하는 API이든 간에, 많은 소프트웨어의 명료한 단순성은 미묘한 타이밍 문제와 의존성, 소프트웨어 계층 간 또는 종종 상이한 애플리케이션과 심지에 컴퓨터에 걸쳐 있는 가정을 숨겨준다.
여러분이 소프트웨어를 개발하고 테스트, 지원하는 방법을 배우기 위해 이 책을 읽고 있다면, 근본 원인을 조사하고 수정을 책임지고 있는 변경이 잦은 소프트웨어의 많은 부분에서 이미 문제에 직면하고 있을 것이다. 이런 시도에서 성공하려면 무엇보다도 최대한 신속하고 효율적으로 문제의 원인을 파악해야 한다. 그러기 위해선 무엇을 그리고 어디를, 어떻게 살펴볼지를 알아야 한다. 결국, 툴을 자유 자재로 사용하고, 특정 부류의 실패에 대해 어떤 툴이 가장 효과적인지, 그리고 문제의 원인을 신속히 좁히기 위해 각 툴의 특성과 기능을 적용하는 법을 알아야 한다.
대부분의 경우 윈도우 애플리케이션의 문제를 조사하고 디버깅하는 법을 배우는 것이 단지 선택사항이었지만 애플리케이션 실패를 디버깅할 때에 애매한 툴이나 시나리오 특정적인 디버거 명령에 따라 즉시 문제를 이해할 수도 있고 문제를 파악하는 데 여러 시간 또는 심지어 성공하지도 못하면서 며칠을 허비할 수도 있다. 이것이 바로 이와 같은 책이 그 가치를 발휘하는 이유다.
이 책에서는 통합된 지식과 수년 간에 걸친 저자와 마이크로소프트 고객 지원 서비스, 윈도우 제품 및 툴 개발 팀의 경험을 독자에게 모두 공개했다. 윈도우 힙 관리자가 버퍼 오버플로우 행위에 영향을 주는지 또는 DCOM 행(hang)의 원인 조사에 어떤 디버거 익스텐션 명령을 사용해야 하는가와 같은 주제를 배우기에 가장 적절한 책이라 하겠다. 직접 작성한 윈도우 애플리케이션과 디바이스 드라이버를 10년 넘게 디버깅해왔지만, 이 책에서 내가 이미 사용하고 있는 것은 물론이고, 아직 접해보지 못한 새로운 기법과 툴, 디버거 명령을 배웠다.
우리 모두는 수입과 명성을 디버깅 방법에서 얻는 것이 아니라 얼마나 신속하고 정확하게 디버깅을 하는가에 따라 달려있다. 독자가 윈도우 애플리케이션을 수 년 동안 해왔든지 막 시작했든지 간에 두 저자는 독자의 버그 사냥 여정을 잘 준비해 줄 것이다. 즐거운 여행이 되기를 바란다.
Mark Russinovich
기술 펠로우, 플랫폼 & 서비스 부서
마이크로소프트
기본정보
ISBN | 9788960770614 ( 8960770612 ) | ||
---|---|---|---|
발행(출시)일자 | 2008년 10월 07일 | ||
쪽수 | 808쪽 | ||
크기 |
188 * 254
mm
|
||
총권수 | 1권 | ||
원서명/저자명 | Advanced Windows debugging/Hewardt, Mario |
Klover
e교환권은 적립 일로부터 180일 동안 사용 가능합니다.
리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 리뷰 종류별로 구매한 아이디당 한 상품에 최초 1회 작성 건들에 대해서만 제공됩니다.
판매가 1,000원 미만 도서의 경우 리워드 지급 대상에서 제외됩니다.
일부 타인의 권리를 침해하거나 불편을 끼치는 것을 방지하기 위해 아래에 해당하는 Klover 리뷰는 별도의 통보 없이 삭제될 수 있습니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
리뷰는 1인이 중복으로 작성하실 수는 있지만, 평점계산은 가장 최근에 남긴 1건의 리뷰만 반영됩니다.
구매 후 리뷰 작성 시, e교환권 200원 적립
문장수집
e교환권은 적립 일로부터 180일 동안 사용 가능합니다. 리워드는 작성 후 다음 날 제공되며, 발송 전 작성 시 발송 완료 후 익일 제공됩니다.
리워드는 한 상품에 최초 1회만 제공됩니다.
주문취소/반품/절판/품절 시 리워드 대상에서 제외됩니다.
구매 후 리뷰 작성 시, e교환권 100원 적립