2010년 3월 12일 금요일

닥터왓슨 (Dr. Watson, Drwtsn32.exe) 사용법 :: 프로그램 오류, 버그 해독개발자 팁, 강좌

개요..

닥터왓슨 (Dr. Watson, Drwtsn32.exe) 은 디버그(Debug)와 릴리즈(Release)버전에서 프로그램 오류발생 할 경우 오류 내용을 해독할 수 있는 정보를 제공해주는 특히 서버프로그램에서 아주 유용하게 사용됩니다.

"drwtsn32.exe" 실행하여 도움말을 클릭하면 자세한 한글 설명서를 볼 수 있습니다.


 

오류가 발생하는 테스트 프로그램 다운로드

윈도우 디버그 심볼(Debug Symbol) 다운로드 받는 방법

 

따라해보기

내가 만든 프로그램의 심볼을 닥터왓슨(Dr. Watson)에 등록시켜보기

1. 내 컴퓨터 등록정보->고급->환경변수 에  _NT_SYMBOL_PATH 등록합니다.

 

2. 변수값에 %systemroot%\Symbol;D:\Symbol; 추가합니다.

3. 닥터왓슨을 다음과 같이 실행시켜 기본 디버거로 등록합니다.

 drwtsn32.exe -i

4. 릴리즈버전의 링크옵션에 "Generate debug info"를 체크합니다.

5. 컴파일 하여 생성된 *.pdb 파일을 심볼 폴더로 복사합니다.  

6. 릴리즈버전을 실행시켜 오류 발생 시험합니다.  

오류가 발생 후  오류 함수와 내용이 무엇인지 알아보기

drwtsn32.log 파일 일부분

응용 프로그램 예외 발생:

응용 프로그램: (pid=1224)

날짜: 2004-05-21 @ 23:30:20.968

예외 번호: c0000005 (액세스 위반)

 

함수: fnc_1

00401005 b9e8030000 mov ecx,0x3e8

0040100a 33ff xor edi,edi

오류 -> 0040100c f3ab rep stosd es:00000000=????????

0040100e 5f pop edi

 

*----> 스택 역 추적 <----*

FramePtr ReturnAd Param#1 Param#2 Param#3 Param#4 Function Name

0012FF74 0040101A 000003E8 00401025 004010E4 00000001 !fnc_1 (FPO: [1,0,1])

0012FF7C 00401025 004010E4 00000001 00340C20 00340C58 !fnc_2 (FPO: [0,0,0])

0012FF80 004010E4 00000001 00340C20 00340C58 00000000 !main (FPO: [2,0,0])

0012FFC0 77E61AF6 00000000 00000000 7FFDF000 C0000005 !mainCRTStartup

0012FFF0 00000000 00401030 00000000 000000C8 00000100 kernel32!OpenEventA

 

Visual C++ 를 기본 디버거로 다시 등록하는 레지스트리

 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug]

"Auto"="0"

"Debugger"="\"E:\\Program Files\\Microsoft Visual Studio\\Common\\MSDev98\\Bin\\msdev.exe\" -p %ld -e %ld"

"UserDebuggerHotKey"=dword:00000000

댓글 없음:

댓글 쓰기