본문내용 바로가기
MD의선택 무료배송 이벤트 사은품 소득공제

Windows Debugging WinDbg로 배우는 윈도우 디버깅

2판
최바울 , 이태화 , 김희준 , 김성현 지음 | 에이콘출판 | 2019년 01월 02일 출간
클로버 리뷰쓰기
  • 정가 : 55,000원
    판매가 : 49,500 [10%↓ 5,500원 할인]
  • 통합포인트 :
    [기본적립] 2,750원 적립 [5% 적립] [추가적립] 5만원 이상 구매 시 2천원 추가적립 안내 [회원혜택] 실버등급 이상, 3만원 이상 구매 시 2~4% 추가적립 안내
  • 추가혜택 : 포인트 안내 도서소득공제 안내 추가혜택 더보기
  • 배송비 : 무료 배송비 안내
  • 개정정보 : 이 도서는 가장 최근에 출간된 개정판입니다. 2009년 07월 출간된 구판이 있습니다. 구판 보기
  • 배송일정 : 서울특별시 종로구 세종대로 기준 지역변경
    11월 30일 출고 예정 배송일정 안내
  • 바로드림 : 인터넷으로 주문하고 매장에서 직접 수령 안내 바로드림 혜택
    휴일에는 바로드림 픽업으로 더 빨리 받아 보세요. 바로드림 혜택받고 이용하기

이 책의 이벤트 해외주문/바로드림/제휴사주문/업체배송건의 경우 1+1 증정상품이 발송되지 않습니다.

  • 취업/수험서, 컴퓨터/IT 분야 도서 3만원 이상 구매 시 샤코..
    2020.10.14 ~ 2020.11.30
  • 개발자로 입문하기: 일단 이것부터 읽어보자!
    2019.05.31 ~ 2020.12.31
  • 에이콘의 도서를 한 눈에 살펴보세요
    2017.11.23 ~ 2020.12.31
  • 책을 통해 성장해나가는 개발자를 응원합니다.
    2017.06.22 ~ 2025.07.31
상품상세정보
ISBN 9791161752228(1161752226)
쪽수 1096쪽
크기 190 * 236 * 58 mm /1996g 판형알림

책소개

이 책이 속한 분야

윈도우에서 WinDbg를 이용해 디버깅하는 방법을 중점적으로 설명한 책으로 최신 윈도우 10까지 내용을 수록했다. 윈도우 디버깅 전문가들인 저자들이 현장에서 우러난 실전 경험을 바탕으로 한 다양한 예제를 제시하고 있는 완벽 가이드이다. 초보자부터 고급 개발자까지 쉽게 읽을 수 있도록 WinDbg 설치법부터 구체적인 디버깅 사례와 해결책, 툴의 기능 확장과 고급 디버깅 팁, 커널 리버싱 방법까지 수록했다.
WinDbg를 전혀 모르는 사람이라도 중간까지 읽다 보면 WinDbg란 어떤 것이고 어떤 식으로 사용하는지에 대한 기초를 배울 수 있다. 또한 중간부터 마지막까지는 조금 더 복잡하거나 어려운 상황에 대한 응용 방법을 엿볼 수 있다.
예제를 통한 유저모드 디버깅과 커널 모드 디버깅 케이스 스터디, 덤프 파일 활용에 관한 실전 팁, WinDbg를 활용한 윈도우 커널 분석, 성능 모니터를 활용한 디버깅 기법, 각종 유틸리티를 활용한 문제 해결 방법의 소개, 쉬운 디버깅과 유지보수를 위한 팀 협업 개발환경을 갖추는 방법 등을 다루고 있다. 제공되는 예제에는 곧바로 실행하며 테스트할 수 있도록 빌드된 실행파일, 심볼 및 MAP 파일, 본문 내용을 직접 따라가며 명령어를 실행해 볼 수 있는 덤프 파일, 책의 소스코드를 수록했다. 현업에서 종사하는 개발자나 분석가를 위한 다양한 실전 분석 기법과 커널 리버싱 방법도 수록해 분석력을 기를 수 있다.

목차

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.1.1 유저모드 디버깅
________1.2.1.2 커널모드 디버깅
____1.2.2 라이브 디버깅과 덤프 디버깅
________1.2.2.1 라이브 디버깅
________1.2.2.2 덤프 디버깅
____1.2.3 유저 덤프와 커널 덤프
________1.2.3.1 유저 덤프
________1.2.3.2 커널 덤프
__1.3 WinDbg 디버깅 용어
____1.3.1 디버거와 디버기
____1.3.2 블루스크린
____1.3.3 버그체크
____1.3.4 디버그 심볼 파일
________1.3.4.1 비주얼 스튜디오 2017에서 MyApp 속성 설정
________1.3.4.2 비주얼 스튜디오 2017에서 MyDrv 속성 설정
________1.3.4.3 비주얼 스튜디오 2015에서 MyApp 속성 설정
__1.4 WinDbg 지원 범위
____1.4.1 윈도우 NT 계열 운영체제
____1.4.2 64비트 지원
__1.5 WinDbg 명령
____1.5.1 WinDbg 명령이란
________1.5.1.1 일반 명령
________1.5.1.2 메타 명령
________1.5.1.3 확장 명령
____1.5.2 명령줄 구분
____1.5.3 명령별 사용 조건
__1.6 실습 환경 구성
____1.6.1 WinDbg 다운로드
____1.6.2 비주얼 스튜디오 2017과 WDK 설치
____1.6.3 Windows SDK로 WinDbg만 설치
____1.6.4 WinDbg 버전
____1.6.5 예제 구성
__1.7 정리

2장. WinDbg 시작하기
__2.1 유저모드 라이브 디버깅
____2.1.1 WinDbg 실행
____2.1.2 디버거 연결
________2.1.2.1 WinDbg에서 MyApp.exe 실행하기(디버거에서 디버기 실행하기)
________2.1.2.2 실행 중인 MyApp.exe에 WinDbg 붙이기(디버거를 디버기에 붙이기)
________2.1.2.3 MyApp.exe 실행 중 문제가 발생했을 때 자동으로 WinDbg 실행하기
____2.1.3 심볼 파일 로드
________2.1.3.1 운영체제 심볼 경로 설정과 로드
________2.1.3.2 MyApp.exe 심볼 경로 설정과 로드
____2.1.4 실행 및 정지
____2.1.5 브레이크 포인트 설정과 해제
________2.1.5.1 브레이크 포인트 설정
________2.1.5.2 브레이크 포인트 해제
____2.1.6 콜 스택 확인
____2.1.7 소스 연결해서 소스 창 열기
____2.1.8 Trace, Step으로 진행
____2.1.9 지역변수 확인
____2.1.10 와치 창으로 전역변수 확인
__2.2 커널모드 라이브 디버깅
____2.2.1 디버거 시스템을 디버기 시스템에 붙이기
________2.2.1.1 가상머신 연결
________2.2.1.2 VirtualKD로 연결
________2.2.1.3 네트워크로 연결
________2.2.1.4 시리얼 케이블로 연결
________2.2.1.5 IEEE 1394(firewire) 케이블로 연결하기
________2.2.1.6 운영체제별 디버기 설정
____2.2.2 MyDrv.sys 드라이버 실행
____2.2.3 정지 및 실행
____2.2.4 심볼 파일 로드
____2.2.5 브레이크 포인트 설정과 해제
____2.2.6 콜 스택 확인.
____2.2.7 소스 연결해서 소스 창 열기
____2.2.8 Trace, Step으로 진행
____2.2.9 지역변수 확인
____2.2.10 전역변수 확인
__2.3 정리

3장. WinDbg로 디버깅하기
__3.1 유저모드 덤프 디버깅
____3.1.1 덤프 파일 수집
________3.1.1.1 윈도우 10에서 덤프 파일 수집
________3.1.1.2 윈도우 XP에서 덤프 파일 수집
____3.1.2 덤프 파일 열기
____3.1.3 모듈 정보 보기
____3.1.4 심볼 맞추기
____3.1.5 콜 스택 보기
________3.1.5.1 콜 스택 창에서 마지막 함수 살펴보기
________3.1.5.2 문제가 발생한 이유 추측하기
____3.1.6 로컬 창으로 변수 보기
________3.1.6.1 죽은 함수를 호출한 함수 살펴보기
________3.1.6.2 문제가 발생한 이유 분석하기
________3.1.6.3 수정 방법 찾기
____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.6.1 콜 스택 창에서 마지막 함수 살펴보기
________3.2.6.2 죽은 이유 추측하기
____3.2.7 로컬 창으로 변수 보기
________3.2.7.1 죽은 함수를 호출한 함수 살펴보기
________3.2.7.2 문제가 발생한 이유 분석하기
________3.2.7.3 수정 방법 찾기
____3.2.8 와치 창으로 메모리 보기
____3.2.9 메모리 창으로 메모리 보기
__3.3 정리

4장. 유저모드 디버깅 케이스 스터디
__4.1 기본 케이스 스터디
____4.1.1 잘못된 메모리 사용
____4.1.2 프로세스의 CPU 사용률이 100%를 기록할 때
________4.1.2.1 프로세스 익스플로러를 이용한 방법
________4.1.2.2 성능 모니터를 이용한 방법
________4.1.2.3 WinDBG를 이용한 방법
____4.1.3 데드락이 발생해 멈춘 경우
________4.1.3.1 이벤트 찾기
________4.1.3.2 크리티컬 섹션 찾기
____4.1.4 핸들 누수
________4.1.4.1 작업 관리자로 누수 확인
________4.1.4.2 성능 모니터로 누수 확인
________4.1.4.3 성능 로그를 통해 누수 확인
________4.1.4.4 프로세스 익스플로러를 이용한 핸들 누수 찾기
________4.1.4.5 WinDbg로 핸들 누수 찾기
____4.1.5 메모리 누수
________4.1.5.1 작업 관리자로 누수 확인
________4.1.5.2 성능 모니터로 누수 확인
________4.1.5.3 UMDH로 확인
____4.1.6 버퍼 오버플로우
__4.2 어셈블리와 스택의 이해
____4.2.1 어셈블리 기초
____4.2.2 스택의 이해
____4.2.3 호출 규칙
____4.2.4 64비트 스택의 이해
________4.2.4.1 64비트 콜 스택 추적
________4.2.4.2 64비트 콜 스택에서 파라미터 찾기
__4.3 고급 케이스 스터디
____4.3.1 예제 1: 잘못된 파라미터 전달
____4.3.2 예제 2: Drwtsn32 로그 파일 분석
____4.3.3 예제 3: MAP 파일을 이용한 분석
____4.3.4 윈도우 에러 리포트
__4.4 WinDbg Preview
____4.4.1 WinDbg Preview 설치
____4.4.2 WinDbg Preview Time Travel Debugging
__4.5 정리

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.1.1 윈도우 XP에서 분석
________5.2.1.2 윈도우 10에서 분석
____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 BugCheck 0x50: UNICODE_STRING
____5.3.2 BugCheck 0x50: 숨겨진 콜 스택
____5.3.3 BugCheck 0x50: 해제된 핸들
____5.3.4 BugCheck 0x1A: 페이지 손상
____5.3.5 BugCheck 0xC5: 풀 헤더 손상
____5.3.6 BugCheck 0xC5: 해제 리스트 손상
____5.3.7 BugCheck 0x133: DPC_WATCHDOG_VIOLATION
____5.3.8 Hang: CPU 과점유
____5.3.9 Hang: 좀비 프로세스
____5.3.10 Hang: 완료되지 않는 IRP
____5.3.11 Hang: 위험한 락 사용
__5.4 커널 리버싱 스터디
____5.4.1 핸들 테이블 탐험 I
____5.4.2 핸들 테이블 탐험 II
____5.4.3 프로세스 경로 획득
____5.4.4 섹션 오브젝트에서 파일 경로 획득
__5.5 드라이버 확인 프로그램
____5.5.1 드라이버 확인 프로그램 실행
____5.5.2 명령 프롬프트에서 설정
__5.6 정리

6장. 고급 디버깅
__6.1 WinDbg 사용 팁
____6.1.1 조건 브레이크 포인트
____6.1.2 심볼 스토어 생성
____6.1.3 유저모드 원격 디버깅
________6.1.3.1 문제의 응용 프로그램(notepad.exe)이 실행 중인 PC1
________6.1.3.2 WinDbg를 실행해 실제로 디버깅을 하려는 PC2
____6.1.4 커널모드 원격 디버깅
____6.1.5 커널모드 디버깅으로 유저모드 디버깅하기 1
____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.exe(vbs)
________6.2.3.1 크래시 모드
________6.2.3.2 행 모드
__6.3 WinDbg 스크립트
____6.3.1 첫 번째 스크립트
____6.3.2 두 번째 스크립트
____6.3.3 세 번째 스크립트
__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 .crash(Force System Crash)
____7.2.4 .dump(Create Dump File)
____7.2.5 .hh(Open HTML Help File)
____7.2.6 .symfix(Set Symbol Store Path)
____7.2.7 .reload(Reload Module)
____7.2.8 .enable_unicode(Enable Unicode Display)
____7.2.9 .enable_long_status(Enable Long Integer Display)
____7.2.10 .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.3.13 !dml_proc
____7.3.14 !fltkd
__7.4 MEX 디버그 익스텐션 명령
____7.4.1 !mex.help
____7.4.2 !mex.mheap
____7.4.3 !mex.p
____7.4.4 !mex.addr
____7.4.5 !mex.eresource(eres)
____7.4.6 !mex.deviceobject(devo)
____7.4.7 !mex.driverobject(drvo)
____7.4.8 !mex.dtpool(dtp)
____7.4.9 !mex.evt
____7.4.10 !mex.fileobject(fo)
____7.4.11 !mex.foreachcpu(fec)
____7.4.12 !mex.foreachprocess(fep)
____7.4.13 !mex.listticks(lticks)
____7.4.14 !mex.mirp
____7.4.15 !mex.mirpfind
____7.4.16 !mex.mreg
____7.4.17 !mex.obj
____7.4.18 !mex.parsemem
____7.4.19 !mex.tag
____7.4.20 !mex.tasklist(tl)
____7.4.21 !mex.vadmodules(vadm)
____7.4.22 !mex.vss
____7.4.23 !mex.wq
____7.4.24 !mex.count
____7.4.25 !mex.cut
____7.4.26 !mex.ddt
____7.4.27 !mex.dumpinfo
____7.4.28 !mex.grep
____7.4.29 !mex.t
____7.4.30 !mex.dumpstackstrings(dss)
____7.4.31 !mex.executive
____7.4.32 !mex.listthreads(lt)
____7.4.33 !mex.ready
____7.4.34 !mex.running(cpu)
____7.4.35 !mex.searchthreadstacks(sts)
____7.4.36 !mex.standby(sby)
____7.4.37 !mex.suspended
____7.4.38 !mex.uniquestacks(us)
____7.4.39 !mex.userrequest
____7.4.40 !mex.wrlpcreceive(lpcs)
____7.4.41 !mex.wrresource
____7.4.42 !mex.imports
____7.4.43 !mex.mods
__7.5 정리

책 속으로

[지은이의 말]
약 2년간 준비했던 1판을 출간하고 개정판이 나오기까지 약 10년의 시간이 흘렀다. 개정판 역시 기획에서 출간까지 약 2년의 시간이 걸렸다. 오랜 시간이 흐른 만큼 그동안 많은 기술의 발전과 변화가 있었다. 소프트웨어 개발 방법에서부터 개발과 디버깅 도구들의 발전을 보면 그저 놀랍기만 하다. 좋은 디버깅 서적도 더욱 많이 출간됐다. 불행 중 다행인 것은 WinDbg를 이용한 디버깅에 있어서는 이 책보다 쉽게 접근하는 책은 없었다는 것이다. 개정판을 통해 WinDbg의 발전된 기술과 실전 예제를 풍성하게 구성하고 기... 더보기

출판사 서평

★ 이 책에서 다루는 내용 ★
■ WinDbg 사용법과 다양한 디버깅 예제
■ 예제를 통한 유저모드 디버깅과 커널 모드 디버깅 케이스 스터디
■ 덤프 파일 활용에 관한 실전 팁
■ WinDbg를 활용한 윈도우 커널 분석
■ 성능 모니터를 활용한 디버깅 방법
■ 각종 유틸리티를 활용한 문제 해결 방법의 소개
■ 쉬운 디버깅과 유지보수를 위한 팀 협업 개발 환경을 갖추는 방법
■ 초보자를 위한 디버깅에 필요한 어셈블리와 호출 규약, 스택의 기초
■ 실전에 많이 쓰이는 WinDbg 명령어 소개와 그 활용 방법, 예제 ... 더보기

Klover 리뷰 (0)

북로그 리뷰 (0) 쓰러가기

도서 구매 후 리뷰를 작성하시면
결제 90일 이내 300원, 발송 후 5일 이내 400원, 이 상품의 첫 리뷰 500원의 포인트를 드립니다.

포인트는 작성 후 다음 날 적립되며, 도서 발송 전 작성 시에는 발송 후 익일에 적립됩니다.
북로그 리뷰는 본인인증을 거친 회원만 작성 가능합니다.
(※ 외서/eBook/음반/DVD/GIFT 및 잡지 상품 제외) 안내
  • 해당도서의 리뷰가 없습니다.

문장수집 (0) 문장수집 쓰기 나의 독서기록 보기
※구매도서의 문장수집을 기록하면 통합포인트 적립 안내

교환/반품/품절안내

※ 상품 설명에 반품/교환 관련한 안내가 있는 경우 그 내용을 우선으로 합니다. (업체 사정에 따라 달라질 수 있습니다.)

교환/반품/품절안내
반품/교환방법 마이룸 > 주문관리 > 주문/배송내역 > 주문조회 > 반품/교환신청 ,
[1:1상담>반품/교환/환불] 또는 고객센터 (1544-1900)

※ 오픈마켓, 해외배송주문, 기프트 주문시 [1:1상담>반품/교환/환불]
    또는 고객센터 (1544-1900)
반품/교환가능 기간 변심반품의 경우 수령 후 7일 이내,
상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내
반품/교환비용 변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
반품/교환 불가 사유
  • 소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
    (단지 확인을 위한 포장 훼손은 제외)
  • 소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
    예) 화장품, 식품, 가전제품(악세서리 포함) 등
  • 복제가 가능한 상품 등의 포장을 훼손한 경우
    예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집
  • 소비자의 요청에 따라 개별적으로 주문 제작되는 상품의 경우 ((1)해외주문도서)
  • 디지털 컨텐츠인 eBook, 오디오북 등을 1회 이상 다운로드를 받았을 경우
  • 시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우
  • 전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에
    해당되는 경우
(1) 해외주문도서 : 이용자의 요청에 의한 개인주문상품으로 단순변심 및 착오로 인한 취소/교환/반품 시 ‘해외주문 반품/취소 수수료’ 고객 부담 (해외주문 반품/취소 수수료 : ①서양도서-판매정가의 12%, ②일본도서-판매정가의 7%를 적용)
상품 품절 공급사(출판사) 재고 사정에 의해 품절/지연될 수 있으며, 품절 시 관련 사항에 대해서는
이메일과 문자로 안내드리겠습니다.
소비자 피해보상
환불지연에 따른 배상
  • 상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은
    소비자분쟁해결 기준 (공정거래위원회 고시)에 준하여 처리됨
  • 대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의
    소비자 보호에 관한 법률에 따라 처리함

바로가기

  • 우측 확장형 배너 2
  • 우측 확장형 배너 2

최근 본 상품