지원에 대 한 Windows Vista 서비스 팩 1 (SP1) 2011 년 7 월 12 일에 종료 됩니다. 계속해서 Windows 보안 업데이트를 받으시려면 서비스 팩 2(SP2)이 포함된 Windows Vista를 실행 중인지 확인하십시오. 자세한 내용은이 Microsoft 웹 페이지를 참조 하십시오: 일부 버전의 Windows에 대 한 지원이 종료 되는.

요약

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

추가 정보

이 문서는 커널 디버거가 실행 되 고 Memory.dmp 파일을 로드 했습니다 또는 원격 컴퓨터에 연결 되어 있는지 가정 합니다. 에 나오는 명령의 완전 하 게 설명 되어 있지 않습니다 및 출력에서 발췌만 표시 됩니다.

문서 내용

  • 커널 디버거를 로드합니다.

  • 작성 시간을 확인! 드라이버

  • Link.exe를 사용 하 여 만든 시간 확인

  • Unassembling 함수

  • 서비스 팩 기호

커널 디버거를 로드합니다.

커널 디버거의 정상적인 로드는 다음 메시지 중 하나가 표시 됩니다.

kd > 단일 프로세서 시스템 0: kd > 다중 프로세서 시스템아래에 표시 되는 프롬프트 Ntoskrnl.exe 파일에 대 한 기호 파일 잘못 되었음을 나타냅니다. 적절 한 다중 프로세서 또는 단일 프로세서 커널과 HAL 기호 트리로 복사 됩니다 있는지 확인 합니다. 예:Symbol search path is: C:\symbolskd: crash dump initialized [c:\dump\memory.dmp]could not determine the current processor, using zeroKernel Version 1057 Free loaded @ 0x80100000Bugcheck 0000001e : c0000005 80151d5b 00000000 00000001*** Contents Deleted ***16kd> 커널 디버거 프로세서 개수 뿐만 아니라 커널 버전 Memory.dmp 파일을 로드 하는 시기는 처음 몇 줄에 표시 됩니다. 프로세서 개수 적절 한 커널과 HAL을 사용 하 여 일치 하는지 확인 합니다. 두 기호를 로드 하거나 지연 된 드라이버 기호 정보가 표시 됩니다. 샘플 로드:Symbol search path is: C:\symbolskd: crash dump initialized [c:\dump\memory.dmp]Kernel Version 1057 Free loaded @ 0x80100000Bugcheck 0000001e : c0000005 80151d5b 00000000 00000001re-loading all kernel symbolsKD: unloading symbols for "ntoskrnl.exe"KD: deferring symbol load for "ntoskrnl.exe" at 80100000KD: 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 fc810000KD: deferring symbol load for "diskdump.sys" at fc800000KD: deferring symbol load for "hal.dll" at 80400000KD: deferring symbol load for "atapi.sys" at 80010000KD: deferring symbol load for "SCSIPORT.SYS" at 80013000KD: deferring symbol load for "Atdisk.sys" at 80001000KD: deferring symbol load for "Scsidisk.sys" at 8001b000KD: deferring symbol load for "Fastfat.sys" at 80372000Unable to read image header for Floppy.SYS at fc820000 - status c0000001*** Contents Deleted ***KD: deferring symbol load for "srv.sys" at fc9e0000KD: deferring symbol load for "ntdll.dll" at 77f80000finished re-loading all kernel symbolsNT!_PspUnhandledExceptionInSystemThread+0x18:80131ff8 b801000000 mov eax,0x1kd> 참고 커널 디버거 했다는 "이미지 헤더에 Floppy.sys fc820000-상태 c0000001 읽을 수 없습니다." 특정 드라이버 헤더 없는 현재 메모리에 있기 때문에이 메시지는 정상입니다.

작성 시간을 확인! 드라이버

사용 하는 ! 드라이버 메모리에 로드 된 드라이버를 현재 나열 하려면 명령. 드라이버의 시간과 날짜를 기록 하 고 지 대로 로드할 수를 확인 합니다. (다음 예제에서 코드 크기 및 데이터 크기 열 문서 너비에 맞게 제거 됩니다.)kd> !driversBase Code Size Data Size Driver Name Creation Time80100000 Ntoskrnl.exe Fri May 26 18:18:36 199580400000 Hal.dll Thu May 11 13:54:18 199580010000 Atapi.sys Tue May 23 21:01:41 199580013000 Scsiport.sys Fri May 05 23:11:06 199580001000 Atdisk.sys Fri May 05 23:10:40 19958001b000 Scsidisk.sys Fri May 05 23:11:01 199580372000 Fastfat.sys Mon May 22 23:57:13 1995fc820000 Floppy.sys Header Paged Outfc830000 Scsicdrm.sys Wed May 10 21:57:03 1995fc840000 Fs_Rec.sys Header Paged Outfc850000 Null.sys Header Paged Outfc860000 Beep.sys Header Paged Outfc870000 I8042prt.sys Fri May 05 23:10:42 1995fc880000 Mouclass.sys Fri May 05 23:10:45 1995fc890000 Kbdclass.sys Fri May 05 23:10:44 1995fc8b0000 Videoprt.sys Fri May 05 23:10:05 1995fc8a0000 S3.sys Fri May 19 21:18:06 1995fc8c0000 Vga.sys Fri May 05 23:10:10 1995fc8d0000 Msfs.sys Fri May 05 23:11:57 1995fc8e0000 Npfs.sys Fri May 05 23:11:40 1995fc900000 Ndis.sys Mon May 22 20:23:18 1995fc8f0000 El59x.sys Fri Feb 10 16:18:09 1995fc940000 Tdi.sys Fri May 05 23:13:09 1995fc920000 Nbf.sys Mon May 08 15:00:47 1995fc950000 Netbios.sys Fri May 05 23:13:19 1995fc960000 Parport.sys Header Paged Outfc970000 Parallel.sys Header Paged Outfc980000 Serial.sys Fri May 05 23:11:20 1995fc990000 Afd.sys Header Paged Outfc9a0000 Rdr.sys Wed May 17 17:18:16 1995fc9e0000 Srv.sys Wed May 24 21:56:59 1995TOTAL: 1ab460 (1709 kb) 3b7c0 ( 237 kb) ( 0 kb 0 kb)kd> 날짜 파일을 컴파일하는 파일의 만든 시간 note입니다. 파일 관리자를 사용 하 여 하위 Winnt\System32\Drivers 폴더를 볼 때 실제 파일의 Date\Time 스탬프 가까이이 날짜가입니다. Microsoft 개발자 네트워크 (MSDN)에 가입 하거나 Windows 장치 드라이버 키트 (DDK)를가지고, Dbg 파일 드라이버를 컴파일할 때 만들어진 동일한 파일 임을 확인 Link.exe 도구를 사용할 수 있습니다. "시간 날짜 스탬프" 아래 예제에서는 위의 출력에서는 Netbios.sys의 "작성 시간"를 찾습니다. Link.exe를 사용 하 여 "시간 날짜 스탬프" Dbg 파일 확인.

링크-덤프-\symbols\sys\netbios.dbg 헤더Microsoft (R) COFF 이진 파일 덤퍼 버전 3.00.5270 저작권 (C) Microsoft Corp 1992-1995. 모든 권리 보유입니다. Netbios.dbg 파일의 덤프

4944 서명 0 플래그 14 C 컴퓨터 (i386) 306 특징2FAAE94F 시간 날짜 스탬프 5 월 5 일 금요일 23시 13분: 19 1995

이미지의 70A0 크기의 10000 기본 이미지의 8D0B 체크섬* * 삭제 내용 * * 경우는 ! 드라이버 명령으로 생성 되는 다음과 같은 줄을 덤프에 중요 한 테이블이 손상 되었습니다. 덤프에 대 한 세부적인 분석 사용 하지 못할 수도 있습니다.

DosHeader 0583002a-00000000 상태에서 읽을 수 없습니다 DosHeader 0587002a-00000000 상태에서 읽을 수 없습니다 DosHeader 0588002a-00000000 상태에서 읽을 수 없습니다 DosHeader 058a002a-00000000 상태에서 읽을 수 없습니다 DosHeader 058c002a 인 상태에서 읽을 수 없습니다. 00000000

Unassembling 함수

기호 파일 함수와 전역 변수 이름으로 참조 하는 커널 디버거를 사용 합니다. 스팟 몇 가지 적절 한 모양이 되도록 unassembled 함수를 확인 합니다. 많은 함수가 컴파일러 최적화 및 아래 예제 반드시 맞지 않는 경우 최적화 된 컴파일러 함수는 함수 이름에는 괄호 안에 FPO로 식별 됩니다. "밀어넣기 ebp"로 일반적으로 시작 하는 함수 또는 "mov eax, fs [000000000]." 기계어 및 경험의 기본적인 지식을 인식 이러한 함수를 사용할 수 있습니다.

  • 로드 된 모듈 목록 x *!

  • (예를 들어, Ntoskrnl.exe) 특정 모듈에 대 한 기호를 나열 합니다. nt x! *

  • Unassemble 즉 하지 컴파일러를 최적화 하는 함수를 선택 합니다. u NT! _NtUnlockFile

좋은 기호

kd> u NT!_NtUnlockFileu NT!_NtUnlockFileNT!_NtUnlockFile:80156bd8 64a100000000     mov     eax,fs:[00000000]80156bde 55               push    ebp80156bdf 8bec             mov     ebp,esp80156be1 6aff             push    0xff80156be3 68200d1080       push    0x80100d2080156be8 68304f1380       push    0x80134f3080156bed 50               push    eax80156bee 64892500000000   mov     fs:[00000000],espkd> 

위의 함수의 unassembly 유사 합니다. 그러나 해당 unassembly 변경 될 수 있습니다. 해당 unassembly 적절 한 경우,이 모듈에 대 한 기호가 올바르게 로드 한 가정할 수 있습니다. 로 시작 되는 다음 unassembly "jnz NT! _NTUnlockFile + 0x22." 물론 함수의 시작 점프 명령 코드를 사용 하 여 시작할 수 없습니다. 기호 트리를 다시 한 번 확인 합니다.

잘못 된 기호

kd> u NT!_NTUnlockFileu NT!_NTUnlockFileNT!_NtUnlockFile:801574a4 7520             jnz     NT!_NtUnlockFile+0x22 (801574c6)801574a6 6a00             push    0x0801574a8 8d45dc           lea     eax,[ebp-0x24]801574ab 50               push    eax801574ac 53               push    ebx801574ad ff356c361480     push    dword ptr [NT!_CcNoDelay+0x4 (8014366c)]801574b3 6a01             push    0x1801574b5 ff7508           push    dword ptr [ebp+0x8] 

서비스 팩 기호

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

추가 정보

커널 디버깅 방법에 일련의 문서를 찾으려면 키워드 검색: debugref. Windbg 디버거에서 2.0.x 기호 기법 디버거 버전에서 2.0.x를 사용할 수 있는 추가 기호 확인 절차는 Microsoft 디버거 중 더 큰. 자세한 내용은 다음 Microsoft 웹 사이트를 참조 하십시오.

드라이버 개발 키트

추가 도움이 필요하신가요?

기술 향상
교육 살펴보기
새로운 기능 우선 가져오기
Microsoft Insider 참가

이 정보가 유용한가요?

번역 품질에 얼마나 만족하시나요?
사용 경험에 어떠한 영향을 주었나요?

소중한 의견에 감사드립니다.

×