본문 바로가기
유용한_팁

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


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

반응형

댓글