본문 바로가기
유용한_팁

Dumpchk.exe를 사용하여 메모리 덤프 파일을 검사하는 방법

by 씨디맨 2007. 11. 2.
320x100
 

Dumpchk.exe를 사용하여 메모리 덤프 파일을 검사하는 방법

기술 자료 ID : 156280
마지막 검토 : 2004년 12월 30일 목요일
수정 : 5.0
이 문서의 Microsoft Windows XP 버전에 대한 내용은 315271 (http://support.microsoft.com/kb/315271/)을 참조하십시오.

요약

Dumpchk는 메모리 덤프 파일이 올바르게 만들어졌는지 확인하는 데 사용할 수 있는 명령줄 유틸리티입니다. Dumpchk에서는 기호를 사용할 필요가 없습니다.

다음 Microsoft 웹 사이트에서 Windows 제품에 대한 디버깅 도구를 다운로드할 수 있습니다.
http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx (http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx)
Dumpchk가 있는 위치는 다음과 같습니다.
Windows NT 4.0 CD-ROM:
Support\Debug\<Platform>\Dumpchk.exe
Windows 2000 CD-ROM: CD-ROM의 Support\Tools 폴더에 있는 Setup.exe를 실행하여 지원 도구를 설치하십시오. 기본적으로 Dumpchk.exe는 Program Files\Support Tools 폴더에 설치됩니다.

추가 정보

Dumpchk에는 다음과 같은 명령줄 스위치가 있습니다.
   DUMPCHK [options] <CrashDumpFile>

     -? 명령 구문을 표시합니다.

     -p 유효성 검사 없이 헤더만 인쇄합니다.

     -v 세부 정보 표시 모드를 지정합니다.

     -q 빠른 테스트를 수행합니다. Windows 2000에서는 사용할 수 없습니다.
				
Windows 2000 Dumpchk.exe 버전에서만 사용할 수 있는 추가 스위치:
    -c 덤프 유효성 검사를 수행합니다.

    -x 추가 파일 유효성 검사를 수행합니다. 이 작업은 몇 분 정도 걸립니다.

    -e 덤프 검사를 수행합니다.

    -y <Path> 덤프 검사를 위한 기호 검색 경로를 설정합니다. 
       기호 검색 경로가 비어 있으면 CD-ROM이
       기호에 사용됩니다.

    -b <Path> 덤프 검사를 위한 이미지 검색 경로를 설정합니다.
       이미지 검색 경로가 비어 있으면 <SystemRoot>\system32가
       이미지에 사용됩니다.

    -k <File> 커널 이름을 File로 설정합니다.

    -h <File> HAL 이름을 File로 설정합니다.
				
Dumpchk는 메모리 덤프 파일로부터 몇 가지 기본 정보를 표시한 다음 파일에 있는 모든 가상 및 실제 주소를 확인합니다. 메모리 덤프 파일에 오류가 있으면 Dumpchk가 이러한 오류를 보고합니다. 다음은 Dumpchk 명령 출력의 예제입니다.
   Filename . . . . . .memory.dmp
   Signature. . . . . . .PAGE
   ValidDump. . . . . . .DUMP
   MajorVersion . . . . .free system
   MinorVersion . . . . .1057
   DirectoryTableBase . .0x00030000
   PfnDataBase. . . . . .0xffbae000
   PsLoadedModuleList . .0x801463d0
   PsActiveProcessHead. .0x801462c8
   MachineImageType . . .i386
   NumberProcessors . . .1
   BugCheckCode . . . . .0xc000021a
   BugCheckParameter1 . .0xe131d948
   BugCheckParameter2 . 0x00000000
   BugCheckParameter3 . 0x00000000
   BugCheckParameter4 . 0x00000000

   ExceptionCode. . . . .0x80000003
   ExceptionFlags . . . 0x00000001
   ExceptionAddress . . .0x80146e1c

   NumberOfRuns . . . . .0x3
   NumberOfPages. . . . .0x1f5e
   Run #1
     BasePage . . . . . 0x1
     PageCount. . . . . .0x9e
   Run #2
     BasePage . . . . . .0x100
     PageCount. . . . . .0xec0
   Run #3
     BasePage . . . . . .0x1000
     PageCount. . . . . .0x1000


   **************
   **************--> Validating the integrity of the PsLoadedModuleList
   **************

   **************
   **************--> Performing a complete check (^C to end)
   **************
   **************
   **************--> Validating all physical addresses
   **************
   **************
   **************--> Validating all virtual addresses
   **************
   **************
   **************--> This dump file is good!
   **************
				
위에 표시된 출력의 한 부분에 오류가 있으면 덤프 파일이 손상되어 분석을 수행할 수 없습니다.

이 예제에서, 디버깅 관점에서 가장 중요한 정보는 다음과 같습니다.
   MajorVersion . . . . .free system
   MinorVersion . . . . .1057
   MachineImageType . . .i386
   NumberProcessors . . .1
   BugCheckCode . . . . .0xc000021a
   BugCheckParameter1 . .0xe131d948
   BugCheckParameter2 . 0x00000000
   BugCheckParameter3 . 0x00000000
   BugCheckParameter4 . 0x00000000
				
이 정보를 이용하여 발생한 커널 Stop 오류의 종류와 사용 중인 Windows의 버전을 어느 정도 확인할 수 있습니다.

이 문서의 정보는 Windows NT Resource Kit에서 가져온 것입니다. Dumpchk.exe와 다른 디버깅 유틸리티에 대한 자세한 내용은 Windows NT 3.51 Resource Kit Update 및 Update 2에서 부록 A(Appendix A)를 참조하십시오.

자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
119490 (http://support.microsoft.com/kb/119490/) Crashdump 파일의 손상 여부 검사




Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹 (http://support.microsoft.com/newsgroups/default.aspx)에 참여하시기 바랍니다.

본 문서의 정보는 다음의 제품에 적용됩니다.
Microsoft Windows Server 2003 Standard Edition
Microsoft Windows Server 2003 Enterprise Edition
Microsoft Windows Server 2003 Datacenter Edition
Microsoft Windows Server 2003, Enterprise x64 Edition
Microsoft Windows Server 2003, 64-Bit Datacenter Edition
Microsoft Windows 2000 Server
Microsoft Windows 2000 Advanced Server
Microsoft Windows 2000 Professional Edition
Microsoft Windows 2000 Datacenter Server
Microsoft Windows NT Workstation 3.5
Microsoft Windows NT Workstation 3.51
Microsoft Windows NT Workstation 4.0 Developer Edition
Microsoft Windows NT Server 3.5
Microsoft Windows NT Server 3.51
Microsoft Windows NT Server 4.0 Standard Edition










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

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 파일 즉 도움말이 있습니다.


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

반응형

댓글