반응형
출처:호스트웨이

지난달에 이어 블루스크린 즉 메모리 덤프가 발생됐을 경우 Debug 하여
문제의 원인을 파악하는 방법을 안내 합니다.

Memory.dmp 파일을 간단하게 체크할수 있는 툴은 이미 알려드린 바와같이
Dumpchk.exe 란 툴이 있습니다.
이 툴로 일반적인 체크를 하면 아래와 같은 결과를 확인할수 있습니다.


************************************************************
Filename . . . . . . .c:\winnt\memory.dmp
Signature. . . . . . .PAGE
ValidDump. . . . . . .DUMP
MajorVersion . . . . .free system
MinorVersion . . . . .2195
DirectoryTableBase . .0x00030000
PfnDataBase. . . . . .0x8188e000
PsLoadedModuleList . .0x8046e8f0
PsActiveProcessHead. .0x8046e728
MachineImageType . . .i386
NumberProcessors . . .1
BugCheckCode . . . . .0x000000d1
BugCheckParameter1 . .0x00000000
BugCheckParameter2 . .0x00000000
BugCheckParameter3 . .0x00000000
BugCheckParameter4 . .0x00000000

ExceptionCode. . . . .0x80000003
ExceptionFlags . . . .0x00000001
ExceptionAddress . . .0x804690f3


**************
**************--> Validating the integrity of the PsLoadedModuleList
**************
**************
**************--> No errors in the module list.
**************
**************
**************--> This dump file is good!
**************
************************************************************


위에서 눈여겨 볼만한 부분은

BugCheckCode . . . . .0x000000d1
BugCheckParameter1 . .0x00000000
BugCheckParameter2 . .0x00000000
BugCheckParameter3 . .0x00000000
BugCheckParameter4 . .0x00000000


위와 같은 형식의 코드입니다. 이것은 블루스크린이 떳을당시
나타나는 코드입니다.

이벤트 뷰어를 보시면 해당 메시지를 확인하실수 있습니다.


이벤트 형식: 정보
이벤트 원본: Save Dump
이벤트 범주: 없음
이벤트 ID: 1001
날짜:  200X-00-00
시간:  오전 1:44:24
사용자:  N/A
컴퓨터: XXXXXX
설명:
컴퓨터가 오류 검사 후 다시 부트되었습니다. 오류 검사: 0x000000d1 (0x00000000, 0x00000000, 0x00000000, 0x00000000).
Microsoft Windows 2000 [v15.2195]. 덤프 저장 위치: C:\WINNT\MEMORY.DMP.



BugCheckCode 로 MS Support page 에서 오류검색을 하시고 뒤에 따라오는 Parameter 값들은 각각 아래와 같은
값을 나타냅니다.


1 - memory that is referenced
2 - IRQL
3 - value 0 = read operation, 1 = write operation
4 - address that referenced memory


그리고 이제 Dump 파일을 디버깅 할수있는 툴을 안내해 드리겠습니다.

필요한 파일들은 아래와 같습니다.


1. 설치된 OS 의 I386 폴더 (즉 OS CD 의 I386)
2. Symbols 파일
3. Debugging Tool
4. Memory.dmp 파일


관련  MS 페이지 : http://www.microsoft.com/whdc/devtools/debugging/default.mspx

* Symbols 파일을 구할수 있는곳은 이곳입니다. ->
http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx#Windows%20symbol%20packages

위 페이지에서 해당 OS 버전별 Symbols 파일을 다운받으시기 바랍니다.


* Debugging Tool (필요한 파일은 KD.exe 또는 Windbg.exe)
대부분 시스템이 32bit 이므로 32bit 버전으로 다운 받습니다. (64bit package 도 제공합니다.)
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.3.17.0.exe 


* Symbols 와  Debugging tool 은 해당 서버에 설치합니다.


네가지 자료가 모두 준비되었다면 디버깅을 시작합니다.


명령 프롬프트 상태에서 아래 명령형식으로 디버깅을 합니다.


  C:\Program Files\Debugging Tools for Windows>windbg -y SymbolPath -i ImagePath -z DumpFilePath

  C:\Program Files\Debugging Tools for Windows>kd -y SymbolPath -i ImagePath -z DumpFilePath


  예제> kd -y SRV*c:\winnt\symbols*http://msdl.microsoft.com/download/symbols -i c:\i386 -z c:\winnt\Memory.DMP


위와 같이 완료가 되면 디버깅 결과를 보실수 있습니다.

결과에서 중요하게 보셔야 할 자료는 아래 내용들 입니다.

--------------
Use !analyze -v to get detailed debugging information.

BugCheck D1, {000000, 000, 0, 00000000}

*** ERROR: Module load completed but symbols could not be loaded for xxxx.xxxx

Probably caused by : xxxx.xxxx ( xxxx+xx )

Followup: MachineOwner
--------------

xxxx.xxx 파일이 그 문제의 파일이 됩니다 해당 파일을 문제서버에서 검색하여 충돌이나, 에러가 없는지 확인합니다.


그외 아래 정보를 보실수 있습니다.

!analyze -show 명령은 Stop 오류 코드(버그 확인 코드라고도 함)와 매개 변수를 표시합니다.
!analyze -v 명령은 자세한 정보 출력을 표시합니다.
!drivers 명령은 문제가 발생할 때 해당 컴퓨터에 로드된 드라이버의 목록을 표시합니다.



그리고 Debugging Tool 을 설치하시면 debugger.chm 파일 즉 도움말이 있습니다.


이곳을 읽어보시는 것도 많은 도움이 될듯 합니다.

며칠전 동일한 형태로 에러가 나는 경우가 있어 어려움을 겪었는데 원인을 알아내겠지만
근본적인 대책도 알아야겠습니다..하지만 그 원인조차도 몰랐을땐 정말 답답하지요..
,