WinDbg 사용법

Similar documents
디버깅정보쓰기에서시스템이예상치않게멈출경우 Windows 에서기록할정보유형을 선택합니다. 작은메모리덤프 (64KB) 문제를확인할수있도록돕는가장작은양의정보를기록합니다. 이옵션을사용하려면컴퓨터의부팅볼륨에 2MB 이상의페이징파일이있어야합니다. 이옵션을선택하면 Windows 는

JDK이클립스

Endpoint Protector - Active Directory Deployment Guide

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

<41736D6C6F D20B9AEBCADBEE7BDC42E687770>

슬라이드 1

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

슬라이드 1

슬라이드 1

ISP and CodeVisionAVR C Compiler.hwp

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

01장

4S 1차년도 평가 발표자료

JAVA 플랫폼 개발 환경 구축 및 활용

NTD36HD Manual

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>

슬라이드 1

Microsoft Word - src.doc

슬라이드 1

Studuino소프트웨어 설치

*Revision History 날짜 내용 최초작성 Tel Fax [2] page

Mango-IMX6Q mfgtool을 이용한 이미지 Write하기

Chapter 1

1

경우 1) 80GB( 원본 ) => 2TB( 복사본 ), 원본 80GB 는 MBR 로디스크초기화하고 NTFS 로포맷한경우 복사본 HDD 도 MBR 로디스크초기화되고 80GB 만큼포맷되고나머지영역 (80GB~ 나머지부분 ) 은할당되지않음 으로나온다. A. Window P

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

CODESYS 런타임 설치과정

C. KHU-EE xmega Board 에서는 Button 을 2 개만사용하기때문에 GPIO_PUSH_BUTTON_2 과 GPIO_PUSH_BUTTON_3 define 을 Comment 처리 한다. D. AT45DBX 도사용하지않기때문에 Comment 처리한다. E.

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO

EISC-GANG_User_Guide_V1.2

Slide 1

(Microsoft PowerPoint - \270\266\300\314\305\251\267\316\304\250USB_Host_Device_\272\316\306\256\267\316\264\365\275\307\275\300_Philip.ppt)

Microsoft Word - windows server 2003 수동설치_non pro support_.doc

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

Microsoft PowerPoint - chap01-C언어개요.pptx

Microsoft PowerPoint - 03_DB Migration 방법론 및 툴 사용법-인쇄.ppt

<4F B8A620C0CCBFEBC7D120C8B8B7CE20C0DBBCBAC0C720B1E2C3CA2E687770>

vRealize Automation용 VMware Remote Console - VMware

Install stm32cubemx and st-link utility

WinDBG 실무

아이콘의 정의 본 사용자 설명서에서는 다음 아이콘을 사용합니다. 참고 참고는 발생할 수 있는 상황에 대처하는 방법을 알려 주거나 다른 기능과 함께 작동하는 방법에 대한 요령을 제공합니다. 상표 Brother 로고는 Brother Industries, Ltd.의 등록 상

Oracle VM VirtualBox 설치 VirtualBox에서 가상머신 설치 가상머신에 Ubuntu 설치

PowerPoint 프레젠테이션

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

WinCE 실험실습 #1

Microsoft PowerPoint - 안드로이드 개발 환경 구축(170411)

Visual Studio online Limited preview 간략하게살펴보기

SBR-100S User Manual

Microsoft Word - VMware와 리눅스 설치_v0.11.doc

디럭스바이블 2005 설치가이드 ( 주 ) 미션소프트 TEL FAX 디럭스바이블 2005 설치가이드 DeluxeBible 2005

Microsoft Word - Armjtag_문서1.doc

Windows 8에서 BioStar 1 설치하기

tiawPlot ac 사용방법

Microsoft Word - EISC-GANG_User_Guide_V1.4.doc

PHPoC Debugger Manual > UI 구성 UI 구성 UI 구성 page 2 of 40

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

SaaS 플랫폼을 위한 Web 2.0기반 서비스 제공 미들웨어 기술 연구

임베디드시스템설계강의자료 4 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

<4D F736F F D20BEC8C0FCC7D120B8DEC0CF20B9D720C6C4C0CF20C0FCBCDB2E646F6378>

WinDBG 실무

게임 기획서 표준양식 연구보고서

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx)

Xcovery 사용설명서

슬라이드 1

A SQL Server 2012 설치 A.1 소개 Relational DataBase Management System SQL Server 2012는마이크로소프트사에서제공하는 RDBMS 다. 마이크로소프트사는스탠다드 standard 버전이상의상업용에디션과익스프레스 exp

CodeVisor Technical Document

슬라이드 1

윈도 모바일 6.1을 OS로 사용하는 스마트폰(옴니아2 등)에서의 Tcl/Tk의 사용

버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습

Mango-E-Toi Board Developer Manual

Microsoft Word - Korean_뷰어 메뉴얼_공용_ADVR&SWi_.doc

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

F120L(JB)_UG_V1.0_ indd

B.3 JDBC 설치 JDBC Java DataBase Connectivity 는자바에서 DBMS의종류에상관없이일관된방법으로 SQL을수행할수있도록해주는자바 API Application Program Interface 다. 이책에서는톰캣과 SQL Server 간의연결을위

목차 1. 매뉴얼안내 사용환경 권장사양 Virtual COM for USB Driver 지원모델 소프트웨어설치및삭제 설치 삭제 Configuration Tool

System Recovery 사용자 매뉴얼

문서의 제목 나눔고딕B, 54pt

<B0B3C0CE5043BAB8BEC8BCB3C1A4C6C4C0CF2E687770>

Debugging Applications By John Robbins Part I 최상호 Ensoa consulting Group

Splentec V-WORM Quick Installation Guide Version: 1.0 Contact Information 올리브텍 주소 : 경기도성남시분당구구미로 11 ( 포인트타운 701호 ) URL: E-M

Microsoft PowerPoint - CPLD_수정1.pptx

<4D F736F F F696E74202D204B FC7C1B7CEB1D7B7A55F F6E48616E646C6572B8A6C5EBC7D1BFA1B7AFB0CBC3E2B9D7BCF6C1A

슬라이드 1

ActFax 4.31 Local Privilege Escalation Exploit

슬라이드 제목 없음

server name>/arcgis/rest/services server name>/<web adaptor name>/rest/services ArcGIS 10.1 for Server System requirements - 지

한국에너지기술연구원 통합정보시스템설치방법설명서 한국에너지기술연구원 지식정보실 - 1 -

PowerPoint 프레젠테이션

슬라이드 1

MF5900 Series MF Driver Installation Guide

Emulator

SIGIL 완벽입문

표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1

WebPACK 및 ModelSim 사용법.hwp

!K_InDesginCS_NFH

BEA_WebLogic.hwp

행자부 G4C

OnTuneV3_Manager_Install

Transcription:

WinDbg 사용법 본사이트내에서취득한모든문서나이미지, 기타정보의소유권은 하제소프트에있으며동의없는타사이트에의게재나배포, 상업적이용은불가합니다. 자료사용에관한문의는 webmaster@hajesoft.co.kr 로해주시기바랍니다. hajesoft Corp. 2005. Seoul. All Rights Reserved. 프로그램개발에서디버깅은전체개발의 50% 이상의비중을차지할정도로중요하다. 특히드라이버개발에있어서디버깅은더욱더중요한위치를가지기에마이크로소프트사에서무료로제공되는 WinDbg, 고가의상용프로그램이지만많이쓰이고있는 SoftIce 같은커널디버거의사용법을익혀둘필요가있다. 이번호는 WinDbg 를, 다음호에는 SoftIce 를다루어볼생각이다. 먼저두프로그램의장단점을살펴보면앞서말했듯이 WinDbg 는무료라는이점과함께 MS 에서만들어졌다는장점이있다. OS 를만든 MS 에서직접제공되는디버거로 SoftIce 에비해좀더안정적이다. 단, PC 한대에서돌아가는 SoftIce 와달리디버깅의대상의되는 Target PC 와디버거가돌아갈 Host PC 가따로필요한단점이있다. 이점은뒤에서다시설명하겠다. 1. WinDbg 설치하기 http://www.microsoft.com/whdc/devtools/debugging/default.mspx 위사이트를방문하면, WinDbg 설치파일을구할수있다. 주의할것은설치파일이 WinDbg 로명시되어있지않고, Debugging Tools for Windows 로되어있다는것이다.

그림 1 WinDbg 설치 위의그림은설치파일을실행시켰을때의최초화면이다. Next> 를클릭하면서디폴트로설치하면된다. 2. WinDbg 설정하기 WinDbg 를설치하고, WinDbg 를실행시켜보자.

그림 2 WinDbg 실행하기 그림 3 WinDbg 실행 3. 애플리케이션디버깅하기 WinDbg 사용법에익숙해지기위해서여기서는간단한윈도우애플리케이션을디버깅하도록하자. WinDbg 에서디버깅을수행하기위해서는 pdb 파일이필요하다. 마이크로소프트의 VisualStudio 에서 Debug Build 로빌드를하면, 프로젝트폴더의 Debug

폴더안에 pdb 확장자를갖는파일이생기게된다. 이파일을 WinDbg 의 Symbol File Path 에복사해넣어야한다. 아래그림과같이 [Symbol File Path...] 를클릭하여, 특정폴더를디버깅을위한심볼파일경로로설정한다. 그림 4 애플리케이션디버깅 그림 5 심볼검색경로 여기서는위와같이 C: Symbols 디렉토리를심볼파일경로로설정하였다.

이폴더에디버깅하고자하는애플리케이션의 pdb 파일을복사한후, WinDbg 의 [Open Executable... ] 메뉴를클릭해서, 애플리케이션을연다. 그림 6 디버깅할애플리케이션열기

그림 7 디버깅할애플리케이션열기 그러면, 다음과같이 WinDbg 커맨드창에명령을입력할수있는상태가된다. 그림 8 디버깅할애플리케이션열기

소스레벨로디버깅을하기위해서는소스파일을열어야한다. 다음그림과같이 [Open Source File...] 메뉴를선택하고, 파일을선택한다. 그림 9 소스파일열기 아래와같이소스창을보여주게되는데, VisualStudio 와같이 F9 로브레이크포인트를걸어트레이싱할수있다.

그림 10 소스파일열기 특정라인에브레이크포인트를걸고 F5 를쳐서디버깅을시작하면, 다음그림과같이로컬변수도확인이가능하다.

그림 11 로컬변수확인 이외에도 WinDbg 는커널디버깅도지원하고있으므로, F1 을눌러 Help 파일을보면서익혀나간다면효과적인커널디버깅을할수있을것이다. 단, 커널디버깅을위해서는두대의컴퓨터와시리얼케이블이필요하다. 아래그림은 WinDbg 의 Help 파일내용이다. 그림 12 WinDbg 도움말

4. 커널디버깅을위한 WinDbg 설정커널디버깅용으로 WinDbg 를사용하기위해서는 타겟컴퓨터 (debuggee) 와 호스트컴퓨터 (debugger) 라는용어를이해하고있어야한다. 다음그림은두대의컴퓨터가널모뎀케이블로연결되었을때를보여주는데, 왼쪽컴퓨터가호스트가되고, 오른쪽컴퓨터가타겟이된다. 여기서호스트컴퓨터는널모뎀을통해서원격으로타겟컴퓨터를디버깅하는컴퓨터이다. 이와같이 WinDbg 로커널모드디버깅을하기위해서는두대의컴퓨터를필요로한다. 각컴퓨터의설정에대해서알아보자. 그림 13 호스트와타겟컴퓨터 4.1. 타겟컴퓨터설정하기타겟컴퓨터는 WinDbg 를설치하지않아도된다. 단, 디버그모드로부팅되는것이요구되는데, 그러기위해서 C: boot.ini 를수정해야한다. C: boot.ini 를메모장으로열어보자. 명령프롬프트에서다음명령을실행한다. c: >notepad boot.ini

그림 14 boot.ini 파일변경 처음에는위와같은형태를보일것이다. 여기에다음과같이 /debug 를추가하면디버그모드로부팅할수있다. multi(0)disk(0)rdisk(0)partition(1) WINDOWS="Windows XP for Debug" /fastdetect /debug 두컴퓨터가시리얼로연결되어있으면, 다음과같은줄을추가한다. 한줄임에주의! multi(0)disk(0)rdisk(0)partition(1) WINDOWS="Windows XP for Debug(COM1)" /fastdetect /debug /debugport=com1 /baudrate=115200 커널디버깅을위해 COM1 포트를사용하고, 속도는 115200 을사용한다는것을나타낸다. 다음과같이된다.

그림 15 boot.ini 파일변경 boot.ini 를현재상태에서저장하려하면물론저장이안된다. boot.ini 는시스템용읽기전용파일이기때문이다. 파일속성을다음과같이변경하면된다. c: >attrib -s -h -r boot.ini 저장하고나서, 다시원래의속성으로복귀시켜야하는데다음명령을내린다. c: >attrib +s +h +r boot.ini 이제타겟컴퓨터가디버그모드로부팅할수있도록설정을완료하였다. 4.2 호스트컴퓨터설정하기 WinDbg 를설치하고, WinDbg 를실행시켜보자.

그림 16 WinDbg 실행 그림 17 WinDbg 실행

위와같은창이뜨게되는데, 커널디버깅을위한설정을해야한다. 우선, 타겟컴퓨터의연결방법대로시리얼을사용할것이다. 우선, File->Kenel Debug... 를선택하자. 그림 18 커널디버깅 다음과같은창이뜨면, 호스트컴퓨터가시리얼포트 COM1 을사용하여타겟컴퓨터와연결되었고, 속도는타겟컴퓨터와일치시켜 115200 이되므로다음과같이설정한다.

그림 19 타겟컴퓨터와연결 [ 확인 ] 을클릭하면, 다음그림처럼타겟컴퓨터가디버그모드로부팅되기를기다리게된다. 그림 20 타겟컴퓨터연결을기다림 타겟컴퓨터를재부팅해서, 멀티부팅메뉴중에서 Windows XP for Debug(COM1) 을선택하면, 다음과같이 WinDbg 화면에서타겟컴퓨터가연결된것을표시하게된다.

그림 21 타겟컴퓨터연결 4.3. WinDbg 사용하기타겟컴퓨터가연결된상태에서 Ctrl+Break 버튼을클릭하면, 다음과같이명령을입력할수있는상태로전환된다. 이때타겟컴퓨터는동작이중단된상태이다.

그림 22 타겟컴퓨터중단 kd> g 명령을입력하면, 타겟컴퓨터가다시작동하게된다.

그림 23 타겟컴퓨터작동 드라이버코드에서 DbgPrint() 함수를적절하게배치하면, 위커맨드창에서 DbgPrint 출력을볼수있고, 드라이버동작의흐름을확인할수있다. 5 덤프분석하기 WinDbg의장점을앞서말한바있지만 WinDbg를쓰게되는이유는블루스크린이떴을때메모리덤프분석을위해서이기도하다. 5.1 덤프파일설정하기

그림 24 시스템등록정보고급탭 내컴퓨터 를오른쪽버튼클릭하여팝업메뉴중등록정보를선택하고 고급 탭을누르면위와같이뜬다. 여기서 시작및복구 를선택한다. 디버깅정보쓰기에서메모리덤프의크기를설정할수있다. 전체메모리덤프를선택하면블루스크린당시의유저메모리와커널메모리전체가그대로메모리크기와같은크기로파일이생성된다.

그림 25 덤프분석하기 WinDbg를실행시켜 File 메뉴의 Open Crash Dump 메뉴를선택하여 DMP파일을오픈합니다. Symbol File Path와 Source File Path의설정이제대로되어있는지확인합니다. 특히심볼이많을수록더자세한정보를볼수있으므로웹에서 OS 심볼을다운받을수있도록 SRV*c: websymbols*http://msdl.microsoft.com/download/symbols 처럼추가하고소스가있으면 Source File Path를설정합니다. 위의설정이끝나면, kd>.reload로심볼을로드합니다. Kd>!analyze v를치면, 더자세한디버깅정보를얻을수있습니다.