간편결제, 신용카드 청구할인
인터파크 롯데카드 5% (47,030원)
(최대할인 10만원 / 전월실적 40만원)
북피니언 롯데카드 30% (34,650원)
(최대할인 3만원 / 3만원 이상 결제)
NH쇼핑&인터파크카드 20% (39,600원)
(최대할인 4만원 / 2만원 이상 결제)
Close

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

소득공제

2013년 9월 9일 이후 누적수치입니다.

판매지수 40
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
공유하기
정가

55,000원

  • 49,500 (10%할인)

    2,750P (5%적립)

할인혜택
적립혜택
  • I-Point 적립은 마이페이지에서 직접 구매확정하신 경우만 적립 됩니다.
추가혜택
배송정보
  • 3/27(월) 이내 발송 예정  (서울시 강남구 삼성로 512)
  • 무료배송
주문수량
감소 증가
  • 이벤트/기획전

  • 연관도서

  • 상품권

AD

책소개

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

출판사 서평

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

★ 이 책의 대상 독자 ★
윈도우용 소프트웨어를 개발하고 유지 관리하는 모든 일에 연관된 사람들을 대상으로 한다. 전문적인 소프트웨어 개발자, 테스트 엔지니어, 기술지원 엔지니어나 이제 소프트웨어 개발을 배우기 시작하는 학생들이 대상이 될 수 있다.
이 범주에 포함되면서 디버깅을 잘 모르고 있다면 이 책이 목표로 하는 정확한 대상이라고 할 수 있다. 디버깅을 이미 잘할 줄 아는 독자들은 디버깅 능력을 향상시키는 목적으로 이 책을 활용할 수 있다.
독자는 기초 C/C++ 언어 지식, 기초 디버깅 지식, 운영체제 기초 지식을 알고 있다고 가정한다. 이 책의 모든 예제는 C/C++ 언어로 작성됐으므로 최소한 C/C++ 언어는 읽을 수 있어야 한다. 디버깅 경험은 비주얼 베이직이나 C/C++ 등을 이용해 개발하면서 간단한 디버깅을 해본 정도면 충분하다. WinDbg에 대한 사전 경험은 없어도 된다.
WinDbg를 소개하면서 기초적인 사용법부터 설명할 것이다. 운영체제 기본 구조에 해당하는 프로세스, 스레드, 이벤트 등의 용어는 별도로 설명하지 않는다.

★ 이 책의 구성 ★
이 책은 7개의 장으로 구성돼 있다. 다음에서 각 장의 내용을 소개하면 다음과 같다.
제1장에서는 WinDbg의 기본 개념을 설명한다. WinDbg를 사용하려면 알아둬야 하는 주변 지식이나 용어들에 대한 내용이므로 가벼운 마음으로 훑어보면 된다.
제2장에서는 WinDbg를 처음 사용한다고 가정하고 WinDbg를 실행시키는 방법부터 시작해 초기 설정을 하고 간단한 디버깅을 해보는 것까지 설명한다. WinDbg로 응용프로그램과 커널모드 드라이버를 어떻게 제어하는지, 응용프로그램이나 커널모드 드라이버의 내용을 어떻게 확인하는지 보게 될 것이다.
제3장에서는 WinDbg로 문제를 분석하는 방법을 다룬다. 문제가 발생한 상황에서 어떤 식으로 원인을 찾아가는지 간단하게 살펴본다. 덤프 파일을 분석하는 예제로 진행하기 때문에 덤프 파일을 분석할 줄 모른다면 제3장을 참고해 기본적인 분석 절차를 배울 수 있다.
제4장에서는 유저모드에서 발생할 수 있는 여러 가지 문제 상황을 분석하는 예를 보인다. 흔하게 발생하는 문제로 잘못된 메모리 참조, 프로세스 행, 프로세스 데드락, 핸들 릭, 메모리 릭 등의 예제를 보인다. WinDbg를 비롯해 다양한 툴로 문제를 분석하고 원인을 찾아나가는 방법을 보게 될 것이다. 고급 주제로 들어가면 어셈블리도 참고해야 한다는 사실을 알게 될 것이다. 어셈블리를 잘 모른다면 제4장을 참고해 기초적인 내용을 공부할 수 있다.
제5장에서는 커널모드에서 발생할 수 있는 여러 가지 문제 상황을 해결해 나가는 예를 보인다. 커널모드에서 발생하는 문제란 사실 블루스크린을 의미한다. 블루스크린이 발생했다고 해서 모두 같은 블루스크린이 아니라는 사실을 알게 될 것이다. 블루스크린마다 문제를 나타내는 번호와 메시지를 담고 있으므로 대표적인 유형들을 예제로 마련했고 이것들을 분석하는 방법을 보게 될 것이다. 그리고 다양한 실전적인 예제와 커널 분석 예제를 통해 심도 깊은 학습도 가능하도록 배려했다.
제6장에서는 WinDbg를 좀 더 편리하게 사용하는 방법과 디버깅에 도움을 주는 여러 툴을 사용하는 방법을 설명한다. 사실 WinDbg는 기본적인 디버깅뿐만 아니라 디버깅을 도와주는 엄청난 기능들이 포함돼 있는 강력한 도구다. 이런 엄청난 기능들을 모두 알고 있다면 디버깅하는 작업은 기본적인 방법만 알고 있을 때보다 훨씬 더 간단해진다. 어떤 것들이 있는지 알지 못해서 못쓰는 것이 문제이므로 유용한 몇 가지를 소개해서 WinDbg의 편리한 기능을 활용하게 한다.
제7장에서는 유용한 WinDbg 명령들을 사용 예제 중심으로 설명한다. 사용 예제 중심이란 명령 자체에 대한 설명 중심이 아니라는 의미다. 명령은 대체로 다양한 기능을 수행할 수 있는데, 이것들을 종합적으로 설명하다 보면 설명만 복잡해지고 이해도가 떨어지게 된다. 따라서 설명은 가급적 줄이고 사용 예제를 도입해 어떻게 사용하는지를 실제로 보여주는 데 초점을 맞췄다.

[지은이의 말]
약 2년간 준비했던 1판을 출간하고 개정판이 나오기까지 약 10년의 시간이 흘렀다. 개정판 역시 기획에서 출간까지 약 2년의 시간이 걸렸다. 오랜 시간이 흐른 만큼 그동안 많은 기술의 발전과 변화가 있었다. 소프트웨어 개발 방법에서부터 개발과 디버깅 도구들의 발전을 보면 그저 놀랍기만 하다. 좋은 디버깅 서적도 더욱 많이 출간됐다. 불행 중 다행인 것은 WinDbg를 이용한 디버깅에 있어서는 이 책보다 쉽게 접근하는 책은 없었다는 것이다. 개정판을 통해 WinDbg의 발전된 기술과 실전 예제를 풍성하게 구성하고 기존 운영체제부터 최신 운영체제까지 모두 아우를 수 있는 내용으로 전체적인 설명을 보강했다. 단순히 특정 디버거의 사용법이 아닌 디버깅 자체를 이해하는 데 강력한 도움을 줄 것으로 기대한다. 이미 현업에서 디버깅에 익숙한 사람들도 새로운 영감을 얻을 수 있을 것이다.
디버깅은 소프트웨어 개발에 있어서 매우 중요한 부분이지만 디버깅하는 방법을 진지하게 배워본 사람은 드물 것이다. 우리는 늘 하던 대로 비주얼 스튜디오의 디버그 빌드를 실행해 디버깅을 하거나 디버그 로그 메시지를 출력하면서 디버깅을 한다. 이 정도만 디버깅을 해도 디버깅을 잘 하는 편에 속하는 것이다. 하지만 디버깅을 할 수 있는 다른 도구를 알게 되거나 몇 가지 방법을 더 배운다면 디버깅이 훨씬 간단해지면 소프트웨어 개발과 관리의 생산성이 향상되는 경험을 할 수 있다.
WinDbg는 이런 도움을 줄 수 있는 가장 대표적인 도구다. 그렇기 때문에 다른 디버깅 서적들에서도 WinDbg를 사용하는 예를 종종 볼 수 있다. 하지만 WinDbg라는 도구를 어떻게 다루기 시작해야 하는지에 대한 내용은 별로 없었다. 그래서 WinDbg를 이용해 디버깅하는 방법을 차근차근 소개하면 좋을 것 같다는 생각을 갖게 됐다. WinDbg는 처음에 어떻게 다뤄야 하는지 직관적으로 알기가 쉽지 않다. 요즘처럼 화려한 유저 인터페이스의 소프트웨어가 난무하는 시대에 WinDbg는 시대에 뒤떨어진 유저 인터페이스를 가지고 있고, 다소 복잡해 보이는 명령어 입력 방식을 취하고 있기 때문이다. 그래서 저자들은 WinDbg를 설치하고 실행하는 방법부터 그림을 통해 쉽게 배울 수 있는 책을 상상하곤 했었다. 그 고민의 결과로 결국에는 이 책을 완성하게 된 것이다.
이 책은 많은 사람들이 디버깅이나 WinDbg에 대해 저자들에게 했던 질문을 정리했다고 볼 수 있다. 사람들의 질문이란 대부분 간단한 사용법 같은 것들인데, 간단한 사용법이 분산되고 정리돼 있지 않아서 반복된다는 사실이 가장 안타까웠다. 간단한 사용법이나 디버깅 팁들이 조목조목 분류돼 있고, 원하는 내용만 원하는 시점에 참조할 수 있는 가이드 북이 있다면 어느 정도 이런 문제가 해소될 것 같았다. 그래서 저자들은 의기투합을 했고 각자 가진 나름대로의 역량을 끌어모아 이 책의 내용을 구성했다.
이 책이 많은 개발자와 IT 전문가에게 도움이 되기를 바란다. 저자가 처음 디버깅이라는 세상을 경험했을 때 놀랐던 기억을 많은 개발자들이 경험하기를 바란다. 그 당시 저자는 많은 개발자가 디버깅을 아직 잘 모른다는 사실에 다시 한 번 놀랐다. 이 땅의 많은 개발자, 그리고 IT 전문가들이 제품에 문제가 발생했을 때 이 책을 통해 해결의 실마리를 찾을 수 있게 되기를 바란다. 그리고 이 책의 공동 저자들이 우리나라의 기술력 향상에 조금이라도 도움이 됐다면 기쁠 것이다.
여기까지 내용을 정리하는 데 참으로 기나긴 여정을 걸어온 느낌이다. 2년이라는 시간이 짧지는 않은 시간이므로 그렇기도 하거니와, 이것도 창작의 작업인 만큼 나름대로 출산의 고통이 존재하기 때문이다. 하지만 그런 것들을 참으면서 버틸 수 있었던 이유는 이 책을 집필하는 목표가 확고했기 때문이었다.
이 책의 목표는 명확하다. 더 많은 사람들이 더 쉽게 디버깅을 할 수 있게 하는 것이다. 이 책이 여러분의 디버깅 능력을 향상시키는 데 조금이라도 더 보탬이 됐으면 한다.

저자 일동
최바울, 이태화, 김희준, 김성현

목차

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라는 도구를 어떻게 다루기 시작해야 하는지에 대한 내용은 별로 없었다. 그래서 WinDbg를 이용해 디버깅하는 방법을 차근차근 소개하면 좋을 것 같다는 생각을 갖게 됐다. WinDbg는 처음에 어떻게 다뤄야 하는지 직관적으로 알기가 쉽지 않다. 요즘처럼 화려한 유저 인터페이스의 소프트웨어가 난무하는 시대에 WinDbg는 시대에 뒤떨어진 유저 인터페이스를 가지고 있고, 다소 복잡해 보이는 명령어 입력 방식을 취하고 있기 때문이다. 그래서 저자들은 WinDbg를 설치하고 실행하는 방법부터 그림을 통해 쉽게 배울 수 있는 책을 상상하곤 했었다. 그 고민의 결과로 결국에는 이 책을 완성하게 된 것이다.
이 책은 많은 사람들이 디버깅이나 WinDbg에 대해 저자들에게 했던 질문을 정리했다고 볼 수 있다. 사람들의 질문이란 대부분 간단한 사용법 같은 것들인데, 간단한 사용법이 분산되고 정리돼 있지 않아서 반복된다는 사실이 가장 안타까웠다. 간단한 사용법이나 디버깅 팁들이 조목조목 분류돼 있고, 원하는 내용만 원하는 시점에 참조할 수 있는 가이드 북이 있다면 어느 정도 이런 문제가 해소될 것 같았다. 그래서 저자들은 의기투합을 했고 각자 가진 나름대로의 역량을 끌어모아 이 책의 내용을 구성했다.
이 책이 많은 개발자와 IT 전문가에게 도움이 되기를 바란다. 저자가 처음 디버깅이라는 세상을 경험했을 때 놀랐던 기억을 많은 개발자들이 경험하기를 바란다. 그 당시 저자는 많은 개발자가 디버깅을 아직 잘 모른다는 사실에 다시 한 번 놀랐다. 이 땅의 많은 개발자, 그리고 IT 전문가들이 제품에 문제가 발생했을 때 이 책을 통해 해결의 실마리를 찾을 수 있게 되기를 바란다. 그리고 이 책의 공동 저자들이 우리나라의 기술력 향상에 조금이라도 도움이 됐다면 기쁠 것이다.
여기까지 내용을 정리하는 데 참으로 기나긴 여정을 걸어온 느낌이다. 2년이라는 시간이 짧지는 않은 시간이므로 그렇기도 하거니와, 이것도 창작의 작업인 만큼 나름대로 출산의 고통이 존재하기 때문이다. 하지만 그런 것들을 참으면서 버틸 수 있었던 이유는 이 책을 집필하는 목표가 확고했기 때문이었다.
이 책의 목표는 명확하다. 더 많은 사람들이 더 쉽게 디버깅을 할 수 있게 하는 것이다. 이 책이 여러분의 디버깅 능력을 향상시키는 데 조금이라도 더 보탬이 됐으면 한다.

저자 일동
최바울, 이태화, 김희준, 김성현

저자소개

이태화, 김희준, 김성현 [저] 신작알림 SMS신청
생년월일 -

해당작가에 대한 소개가 없습니다.

컴퓨터/인터넷 분야에서 많은 회원이 구매한 책

    리뷰

    0.0 (총 0건)

    100자평

    작성시 유의사항

    평점
    0/100자
    등록하기

    100자평

    10.0
    (총 0건)

    판매자정보

    • 인터파크도서에 등록된 오픈마켓 상품은 그 내용과 책임이 모두 판매자에게 있으며, 인터파크도서는 해당 상품과 내용에 대해 책임지지 않습니다.

    상호

    (주)교보문고

    대표자명

    안병현

    사업자등록번호

    102-81-11670

    연락처

    1544-1900

    전자우편주소

    callcenter@kyobobook.co.kr

    통신판매업신고번호

    01-0653

    영업소재지

    서울특별시 종로구 종로 1(종로1가,교보빌딩)

    교환/환불

    반품/교환 방법

    ‘마이페이지 > 취소/반품/교환/환불’ 에서 신청 또는 1:1 문의 게시판 및 고객센터(1577-2555)에서 신청 가능

    반품/교환가능 기간

    변심 반품의 경우 출고완료 후 6일(영업일 기준) 이내까지만 가능
    단, 상품의 결함 및 계약내용과 다를 경우 문제점 발견 후 30일 이내

    반품/교환 비용

    변심 혹은 구매착오로 인한 반품/교환은 반송료 고객 부담
    상품이나 서비스 자체의 하자로 인한 교환/반품은 반송료 판매자 부담

    반품/교환 불가 사유

    ·소비자의 책임 있는 사유로 상품 등이 손실 또는 훼손된 경우
    (단지 확인을 위한 포장 훼손은 제외)

    ·소비자의 사용, 포장 개봉에 의해 상품 등의 가치가 현저히 감소한 경우
    예) 화장품, 식품, 가전제품(악세서리 포함) 등

    ·복제가 가능한 상품 등의 포장을 훼손한 경우
    예) 음반/DVD/비디오, 소프트웨어, 만화책, 잡지, 영상 화보집

    ·시간의 경과에 의해 재판매가 곤란한 정도로 가치가 현저히 감소한 경우

    ·전자상거래 등에서의 소비자보호에 관한 법률이 정하는 소비자 청약철회 제한 내용에 해당되는 경우

    상품 품절

    공급사(출판사) 재고 사정에 의해 품절/지연될 수 있음

    소비자 피해보상
    환불지연에 따른 배상

    ·상품의 불량에 의한 교환, A/S, 환불, 품질보증 및 피해보상 등에 관한 사항은 소비자분쟁해결 기준 (공정거래위원회 고시)에 준하여 처리됨

    ·대금 환불 및 환불지연에 따른 배상금 지급 조건, 절차 등은 전자상거래 등에서의 소비자 보호에 관한 법률에 따라 처리함

    (주) 인터파크커머스 안전결제시스템 (에스크로) 안내

    (주)인터파크커머스의 모든 상품은 판매자 및 결제 수단의 구분없이 회원님들의 구매안전을 위해 안전결제 시스템을 도입하여 서비스하고 있습니다.
    결제대금 예치업 등록 : 02-006-00064 서비스 가입사실 확인

    배송안내

    • 교보문고 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다.

    • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

    • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능합니다.

    • 배송비는 업체 배송비 정책에 따릅니다.

    • - 도서 구매 시 15,000원 이상 무료배송, 15,000원 미만 2,500원 - 상품별 배송비가 있는 경우, 상품별 배송비 정책 적용