Støtte for Windows Vista Service Pack 1 (SP1) avsluttes 12. juli 2011. Hvis du vil fortsette å motta sikkerhetsoppdateringer for Windows, pass på at du kjører Windows Vista med Service Pack 2 (SP2). For mer informasjon, kan du se dette Microsoft-webside: støtte avsluttes for enkelte versjoner av Windows.

Sammendrag

Windows debug symbolene må kontrolleres når du starter feilsøkingsprogrammet til kjernen (I386kd.exe | WinDbg.exe). feilsøkingsprogrammet kan laste inn og presentere en ledetekst, men hvis symbolene er feil, fremtidige feilsøking kommandoer refererer ikke til riktig funksjoner og variabler, som fører til sporadisk resultater. Nedenfor er noen røde flagg og på to måter å spot-sjekk gyldigheten av symbolene.

Hvis du vil ha mer informasjon

Denne artikkelen forutsetter at kjernens feilsøkingsprogram kjører og har lastet inn en Memory.dmp-fil eller er koblet til en ekstern maskin. Kommandoene vises er fullstendig dokumentert ikke, og vises bare utdrag fra utdataene.

Artikkelinnhold

  • Laster inn kjernefeilsøkeren

  • Kontrollere Opprettelsestidspunkt med! drivere

  • Bruke Link.exe til å kontrollere Opprettelsestidspunkt

  • Unassembling en funksjon

  • Service Pack-symboler

Laster inn kjernefeilsøkeren

En normal belastning på kjernefeilsøkeren viser én av følgende spørsmål:

KD > enkeltprosessor System0: kd > flerprosessorsystemLedeteksten vises nedenfor viser at filen symbol for Ntoskrnl.exe-filen er feil. Kontroller at den riktige flerprosessor eller enkeltprosessor kjerne og HAL er kopiert til symbol-treet.Eksempel: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> Når feilsøkingsprogrammet til kjernen laster Memory.dmp-fil, Kernel-versjon i tillegg til antallet prosessorer vises i de første linjene. Bekreft at prosessor-count samsvarer med den riktige kjerne og HAL. Informasjon om driver for symbol vises som enten symbolene er lastet eller utsatt.Last inn utvalg: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> Legg merke til at feilsøkingsprogrammet til kjernen var "Kan ikke lese toppteksten bildet for Floppy.sys på fc820000 - status for c0000001." Denne meldingen er normal fordi bestemt driver-hodet ikke er i minnet.

Kontrollere Opprettelsestidspunkt med! drivere

Bruk av ! drivere kommandoen for å vise driverne som er lastet inn i minnet. Kontroller notat av datoene og klokkeslettene for driverne og om de kan lastes. (Kodestørrelsen og Data kolonnene i følgende eksempel fjernes for å passe til bredden på artikkelen.)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> Vær oppmerksom på tidspunkt for opprettelse av filen, som er datoen filen kompilert. Denne datoen er nær Date\Time-stempel på den faktiske filen når du viser undermappen Winnt\System32\Drivers ved hjelp av File Manager.Hvis du abonnerer på Microsoft utviklerne nettverk (MSDN) eller har Windows Device Driver Kit (DDK), kan Link.exe-verktøyet brukes til å bekrefte at filen Dbg er den samme filen som ble opprettet da driveren ble kompilert. "Dato tidsangivelsen" i eksemplet nedenfor samsvarer med det "opprette tid" med Netbios.sys i utdataene ovenfor.Bruk Link.exe til å kontrollere "dato tidsangivelsen" av Dbg-filen:

Koble - dump - topp \symbols\sys\netbios.dbgMicrosoft (R) COFF binærfil Dumper versjon 3.00.5270Copyright (C) Microsoft Corporation 1992-1995. Med enerett.Dumping av filen Netbios.dbg

4944 signatur0 flagg14C maskin (i386)306 egenskaper2FAAE94F dato tidsangivelse fre mai 05 23:13:19 1995

8D0B-kontrollsummen for bilde10000 base av bilde70A0 størrelsen på bildet** Innholdet slettes **Hvis den ! drivere kommandoen lager linjer som ligner følgende, en viktig tabell i dump er skadet. Videre analyse av dump kan ikke være mulig.

Kan ikke lese DosHeader på 0583002a - status 00000000Kan ikke lese DosHeader på 0587002a - status 00000000Kan ikke lese DosHeader på 0588002a - status 00000000Kan ikke lese DosHeader på 058a002a - status 00000000Kan ikke lese DosHeader på 058c002a - status 00000000

Unassembling en funksjon

Symbolfilene aktivere feilsøkingsprogrammet til kjernen til å referere til funksjoner og globale variabler ved navn. Spot sjekk et par unassembled funksjoner for å kontrollere at de ser riktig. Mange funksjoner er kompilatoren har optimalisert og ikke nødvendigvis følger eksemplene nedenfor. Kompilatoren optimalisert funksjoner identifiseres av FPO i parentes i funksjonsnavnet.Funksjonene begynner vanligvis med enten "push ebp" eller "mov eax, AS [000000000]." Grunnleggende kunnskap om maskin-språk og erfaring vil aktivere én å gjenkjenne disse funksjonene.

  • Liste over lastede modulerx *!

  • Vis symboler for en bestemt modul (for eksempel Ntoskrnl.exe).x nt! *

  • Velg en funksjon til unassemble som er ikke optimalisert kompilatoren.u NT! _NtUnlockFile

God symboler

                    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 for funksjonen bør ligne på teksten ovenfor. Det er imidlertid unassembly kan endres. Hvis unassembly ser ut til å være riktig, kan du anta at symbolene har lastet inn riktig for denne modulen.Følgende unassembly som begynner med "NT-jnz! _NTUnlockFile + 0x22." I begynnelsen av en funksjon ville selvsagt ikke starter med en kode for linjehopp instruksjon. Merk symbolet treet igjen.

Ugyldig symboler

                    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]

Service Pack-symboler

Det er ganger når det er vanskelig å matche symboler med en bestemt installasjon. På et gitt tidspunkt i tid, kan en tjeneste ha blitt lagt som kreves for kopiering av filer fra Windows-installasjon CD-ROM, der kopiert over filene som ble oppdatert med en service pack. Pass på å bruke oppdateringspakken og støtte for tredjeparts-disker på nytt når du har endret systemoppsett, som overfører filer fra CD-ROMen for Windows-installasjonen. Symbolene skal brukes i samme rekkefølge som installasjonen.

TILLEGGSINFORMASJON

Hvis du vil finne kjernen Debug slik serie av artikler, søker du etter nøkkelordet: debugref.WinDbg 2.0.x Symbol teknikkerI debugger versjonen 2.0.x og høyere av Microsoft-Debuggers symbol for ekstra kontroll tiltak som kan brukes. Hvis du vil ha mer informasjon, kan du referere til følgende Microsoft-webområde:

Drivere Development Kit

Trenger du mer hjelp?

Vil du ha flere alternativer?

Utforsk abonnementsfordeler, bla gjennom opplæringskurs, finn ut hvordan du sikrer enheten og mer.