본문 바로가기

Windows/기술과 팁

Windows 덤프 분석하기 2


http://support.microsoft.com/kb/148660/ko

Windows 디버그 기호 확인하는 방법.


기술 자료: 148660 - 마지막 검토: 2009년 3월 4일 수요일 - 수정: 5.0

Windows 디버그 기호 확인하는 방법

이 페이지에서

모두 확대 | 모두 축소

요약
커널 디버거를 시작한 후에 Windows 디버그 기호를 확인해야 합니다 (I386kd.exe | Windbg.exe). 디버거가 로드 및 프롬프...

커널 디버거를 시작한 후에 Windows 디버그 기호를 확인해야 합니다 (I386kd.exe | Windbg.exe). 디버거가 로드 및 프롬프트 제공할 수 있지만 기호가 잘못된 경우 나중에 디버깅 명령을 적절한 함수와 가끔 결과를 안내하는 변수를 참조하지 않는. 아래 나열된 몇 가지 빨간색 플래그 및 몇 가지 메서드 기호 스폿 확인란 유효성 수 있습니다.

추가 정보
이 문서에서는 커널 디버거를 실행 중인 및 Memory.dmp 파일을 로드한 또는 원격 컴퓨터에 연결되어 있는 것으로 가정합니다. 제시된 명령이...

이 문서에서는 커널 디버거를 실행 중인 및 Memory.dmp 파일을 로드한 또는 원격 컴퓨터에 연결되어 있는 것으로 가정합니다. 제시된 명령이 완전히 문서화되어 및 발췌한 출력에 표시됩니다.

문서의 목차

  • 커널 디버거를 로드
  • 만든 시간 확인! 드라이버
  • Link.exe 사용하여 만든 시간 확인
  • Function unassembling
  • 서비스 팩 기호

커널 디버거를 로드

커널 디버거의 정상적인 로드 다음 대화 중 하나가 표시됩니다.
kd > 프로세서 시스템

0: kd > 다중 프로세서 시스템
아래에 표시된 프롬프트 Ntoskrnl.exe 파일 기호 파일에 잘못된 것입니다. 적절한 다중 프로세서 또는 단일 프로세서 커널, HAL 기호 트리로 복사됩니다 확인하십시오.

예:
Symbol search path is: C:\symbols
kd: crash dump initialized [c:\dump\memory.dmp]
could not determine the current processor, using zero
Kernel Version 1057 Free loaded @ 0x80100000
Bugcheck 0000001e : c0000005 80151d5b 00000000 00000001
*** Contents Deleted ***
16kd>
				
때 커널 디버거를 사용하여 커널 Memory.dmp 파일을 로드합니다 프로세서 개수 뿐만 아니라 버전 처음 몇 줄이 표시됩니다. 프로세서 개수 적절한 커널과 HAL 해당함을 확인하십시오. 해당 기호를 로드하거나 지연된 드라이버 기호 정보가 표시됩니다.

예제 로드:
Symbol search path is: C:\symbols
kd: crash dump initialized [c:\dump\memory.dmp]
Kernel Version 1057 Free loaded @ 0x80100000
Bugcheck 0000001e : c0000005 80151d5b 00000000 00000001
re-loading all kernel symbols
KD: unloading symbols for "ntoskrnl.exe"
KD: deferring symbol load for "ntoskrnl.exe" at 80100000
KD: Loaded (2248) fpo entries for image (ntoskrnl.exe)
KD: "ntoskrnl.exe" loaded 4074 symbols (80100000-801bbb80)
KD: loaded symbols for "ntoskrnl.exe"
KD: deferring symbol load for "atapi.sys" at fc810000
KD: deferring symbol load for "diskdump.sys" at fc800000
KD: deferring symbol load for "hal.dll" at 80400000
KD: deferring symbol load for "atapi.sys" at 80010000
KD: deferring symbol load for "SCSIPORT.SYS" at 80013000
KD: deferring symbol load for "Atdisk.sys" at 80001000
KD: deferring symbol load for "Scsidisk.sys" at 8001b000
KD: deferring symbol load for "Fastfat.sys" at 80372000
Unable to read image header for Floppy.SYS at fc820000 - status c0000001
*** Contents Deleted ***
KD: deferring symbol load for "srv.sys" at fc9e0000
KD: deferring symbol load for "ntdll.dll" at 77f80000
finished re-loading all kernel symbols
NT!_PspUnhandledExceptionInSystemThread+0x18:
80131ff8 b801000000       mov     eax,0x1
kd>
				
커널 디버거를 "이미지 헤더에 대한 Floppy.sys fc820000 때 - 상태 c0000001 읽을 수 없습니다." 메시지가 나타나면 참고 특정 드라이버 헤더 없는 현재 메모리에 있으므로 이 메시지는 정상입니다.

만든 시간 확인! 드라이버

사용하고 있는 ! 드라이버를 메모리에 로드된 드라이버를 현재 나열하려면 명령. 참고 날짜 및 시간을 드라이버 및 여부를 사용자가 로드할 수 있습니다. 다음 예제에서는 코드 크기 및 데이터 크기 열 문서를 너비에 맞게 제거됩니다.
kd> !drivers
Base       Code Size Data Size  Driver Name        Creation Time
80100000                       Ntoskrnl.exe   Fri May 26 18:18:36 1995
80400000                            Hal.dll   Thu May 11 13:54:18 1995
80010000                          Atapi.sys   Tue May 23 21:01:41 1995
80013000                       Scsiport.sys   Fri May 05 23:11:06 1995
80001000                         Atdisk.sys   Fri May 05 23:10:40 1995
8001b000                       Scsidisk.sys   Fri May 05 23:11:01 1995
80372000                        Fastfat.sys   Mon May 22 23:57:13 1995
fc820000                         Floppy.sys   Header Paged Out
fc830000                       Scsicdrm.sys   Wed May 10 21:57:03 1995
fc840000                         Fs_Rec.sys   Header Paged Out
fc850000                           Null.sys   Header Paged Out
fc860000                           Beep.sys   Header Paged Out
fc870000                       I8042prt.sys   Fri May 05 23:10:42 1995
fc880000                       Mouclass.sys   Fri May 05 23:10:45 1995
fc890000                       Kbdclass.sys   Fri May 05 23:10:44 1995
fc8b0000                       Videoprt.sys   Fri May 05 23:10:05 1995
fc8a0000                             S3.sys   Fri May 19 21:18:06 1995
fc8c0000                            Vga.sys   Fri May 05 23:10:10 1995
fc8d0000                           Msfs.sys   Fri May 05 23:11:57 1995
fc8e0000                           Npfs.sys   Fri May 05 23:11:40 1995
fc900000                           Ndis.sys   Mon May 22 20:23:18 1995
fc8f0000                          El59x.sys   Fri Feb 10 16:18:09 1995
fc940000                            Tdi.sys   Fri May 05 23:13:09 1995
fc920000                            Nbf.sys   Mon May 08 15:00:47 1995
fc950000                        Netbios.sys   Fri May 05 23:13:19 1995
fc960000                        Parport.sys   Header Paged Out
fc970000                       Parallel.sys   Header Paged Out
fc980000                         Serial.sys   Fri May 05 23:11:20 1995
fc990000                            Afd.sys   Header Paged Out
fc9a0000                            Rdr.sys   Wed May 17 17:18:16 1995
fc9e0000                            Srv.sys   Wed May 24 21:56:59 1995
TOTAL:   1ab460 (1709 kb)  3b7c0 ( 237 kb) (    0 kb     0 kb)
kd>
				
파일이 컴파일된 날짜가 파일의 만든 시간 유의하십시오. 이 실제 파일 Date\Time 스탬프 가깝게 파일 관리자를 사용하여 Winnt\System32\Drivers 하위 폴더를 볼 때 날짜입니다.

Microsoft 개발자 네트워크 (MSDN) 로 등록할 폴더나 드라이버를 컴파일할 때 만들어진 파일을 파일입니다 Dbg 있는 Windows 장치 드라이버 키트 (DDK를), Link.exe 있는 확인하려면 도구를 사용할 수 있을 경우. "시간 날짜 스탬프를" 아래 예제에서는 위 출력 "만들기 시간" 의 Netbios.sys 일치합니다.

Link.exe를 사용하여 "시간 날짜 스탬프를" Dbg 파일의 확인하십시오.
LINK-덤프 헤더 \symbols\sys\netbios.dbg
Microsoft (R) COFF 이진 파일 덤퍼 버전 3.00.5270
(C) Microsoft 회사 1992-1995 저작권. 1991-

덤프 파일 Netbios.dbg
4944 서명
0 플래그
14 C 컴퓨터 (i386)
306 특징
2FAAE94F 시간 날짜 스탬프 5월 금요일 05 19: 13: 23 1995
이미지의 8D0B 체크섬

이미지의 10000 기본

이미지 크기를 70A0
** 내용을 지운 **

경우 해당 ! 드라이버를 명령을 다음과 같이 보일 줄을 생성합니다, 덤프 중요한 테이블에서 손상되었습니다. 덤프 추가 분석이 불가능할 수 있습니다.
DosHeader 0583002a 때 - 상태를 읽을 수 없습니다 00000000
DosHeader 0587002a 때 - 00000000 상태를 읽을 수 없습니다.
DosHeader 0588002a 때 - 00000000 상태를 읽을 수 없습니다.
DosHeader 058a002a 때 - 00000000 상태를 읽을 수 없습니다.
DosHeader 058c002a 때 - 00000000 상태를 읽을 수 없습니다.

Function unassembling

기호 파일을 커널 디버거를 함수와 전역 변수를 이름으로 참조할 수 있습니다. 적절한 찾는 확인하십시오 unassembled 함수 두 가지 스폿이 확인하십시오. 컴파일러 최적화 및 아래 예제 반드시 맞지 않는 많은 함수입니다. 최적화된 컴파일러 함수 이름 괄호 FPO 함수를 식별할 수 있습니다.

함수 일반적으로 두 "밀어넣기 ebp" 로 시작하는 또는 "mov eax를 fs [000000000]." 기계어 및 경험을 기본 지식을 이러한 함수는 인식할 수 있게 됩니다.
  • 로드된 모듈을 나열하십시오.
    x *!
  • 예를 들어, Ntoskrnl.exe 특정 모듈의 기호를 나열하십시오.
    NT x! *
  • 즉 최적화된 컴파일러 unassemble 함수를 선택하십시오.
    u NT! _NtUnlockFile

좋은 기호

kd> u NT!_NtUnlockFile
u NT!_NtUnlockFile
NT!_NtUnlockFile:
80156bd8 64a100000000     mov     eax,fs:[00000000]
80156bde 55               push    ebp
80156bdf 8bec             mov     ebp,esp
80156be1 6aff             push    0xff
80156be3 68200d1080       push    0x80100d20
80156be8 68304f1380       push    0x80134f30
80156bed 50               push    eax
80156bee 64892500000000   mov     fs:[00000000],esp
kd>
				
그러나 함수의 unassembly 위의 텍스트 유사합니다. 그리고 있는 unassembly 변경될 수 있습니다. 해당 unassembly 적절한 경우 이 모듈에 대한 기호를 올바르게 로드한 가정할 수 있습니다.

시작되며 다음 unassembly "jnz NT! _NTUnlockFile + 0x22." 당연히 함수의 시작 부분에 점프 명령 코드를 사용하여 시작할 수 없습니다. 기호 트리가 다시 한 번 확인하십시오.

잘못된 기호

kd> u NT!_NTUnlockFile
u NT!_NTUnlockFile
NT!_NtUnlockFile:
801574a4 7520             jnz     NT!_NtUnlockFile+0x22 (801574c6)
801574a6 6a00             push    0x0
801574a8 8d45dc           lea     eax,[ebp-0x24]
801574ab 50               push    eax
801574ac 53               push    ebx
801574ad ff356c361480     push    dword ptr [NT!_CcNoDelay+0x4 (8014366c)]
801574b3 6a01             push    0x1
801574b5 ff7508           push    dword ptr [ebp+0x8]
				

서비스 팩 기호

기호를 사용하여 특정 설치에 맞게 어려울 때 경우가 있습니다. 시간 일부 지점에서 서비스는 통해 서비스 팩을 사용하여 업데이트된 파일을 복사한 Windows 설치 CD-ROM 파일을 복사하는 필요한 추가된 수 있습니다. 서비스 팩 및 타사 지원 디스크를 Windows 설치 CD -ROM에서 파일을 복사하고 시스템 설치 변경한 후 다시 적용해야 합니다. 기호 설치 순서대로 적용해야 합니다.

추가 정보

On 키워드 검색 문서 커널 디버깅 방법 일련의 찾으려면: debugref.

Windbg 2.0.x 기술 기호

디버거 버전 2.0.x 및 Microsoft 디버거 중 더 큰 추가 기호 확인 절차를 사용할 수 있습니다. 자세한 내용은 다음 Microsoft 웹 사이트를 참조하십시오.
Drivers Development Kit (http://www.microsoft.com/whdc/devtools/ddk/default.mspx)

본 문서의 정보는 다음의 제품에 적용됩니다.
  • 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 Server 3.5
  • Microsoft Windows NT Server 3.51
  • Windows Server 2008 for Itanium-Based Systems
  • Windows Server 2008 R2 Datacenter
  • Windows Server 2008 R2 Enterprise
  • Windows Server 2008 R2 Standard
  • Windows Server 2008 Datacenter
  • Windows Server 2008 Enterprise
  • Windows Server 2008 Standard
  • Microsoft Windows Server 2003 R2 Datacenter Edition (32-Bit x86)
  • Microsoft Windows Server 2003 R2 Datacenter x64 Edition
  • Microsoft Windows Server 2003 R2 Enterprise Edition (32-Bit x86)
  • Microsoft Windows Server 2003 R2 Enterprise x64 Edition
  • Microsoft Windows Server 2003 R2 Standard Edition (32-bit x86)
  • Microsoft Windows Server 2003 R2 Standard x64 Edition
  • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
  • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
  • Microsoft Windows Server 2003, Datacenter x64 Edition
  • Microsoft Windows Server 2003, Enterprise x64 Edition
  • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
  • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
  • Microsoft Windows Server 2003, Standard x64 Edition
  • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
  • Microsoft Windows Small Business Server 2003 R2 Premium Edition
  • Microsoft Windows Small Business Server 2003 R2 Standard Edition
  • Microsoft Windows Small Business Server 2003, Premium Edition Service Pack 1 (SP1)
  • Microsoft Windows Small Business Server 2003 Standard Edition
  • Windows Essential Business Server 2008 Standard
  • Microsoft Windows XP 64-Bit Edition Version 2002
  • Microsoft Windows XP 64-Bit Edition Version 2003
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Home Edition N
  • Microsoft Windows XP Professional
  • Microsoft Windows XP Professional 64-Bit Edition (Itanium)
  • Microsoft Windows XP Professional 64-Bit Edition (Itanium) 2003
  • Microsoft Windows XP Professional N
  • Microsoft Windows XP Professional x64 Edition
  • Windows Vista Enterprise 64-bit edition
  • Windows Vista Home Basic 64-bit edition
  • Windows Vista Home Premium 64-bit edition
  • Windows Vista Ultimate 64-bit edition
  • Windows 7 Beta
  • Windows Vista Business
  • Windows Vista Business 64-bit edition
  • Windows Vista Business N
  • Windows Vista Business N 64-bit Edition
  • Windows Vista Enterprise
  • Windows Vista Home Basic
  • Windows Vista Home Basic N
  • Windows Vista Home Basic N 64-bit Edition
  • Windows Vista Home Premium
  • Windows Vista Ultimate
키워드:
kbmt kbinfo KB148660 KbMtko