Slik kontrollerer du Windows Debug symboler

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 System

0: kd > flerprosessorsystem
Ledeteksten 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:\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>
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:\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>
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> !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>
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.dbg
Microsoft (R) COFF binærfil Dumper versjon 3.00.5270
Copyright (C) Microsoft Corporation 1992-1995. Med enerett.

Dumping av filen Netbios.dbg

4944 signatur
0 flagg
14C maskin (i386)
306 egenskaper
2FAAE94F dato tidsangivelse fre mai 05 23:13:19 1995

8D0B-kontrollsummen for bilde

10000 base av bilde

70A0 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 00000000
Kan ikke lese DosHeader på 0587002a - status 00000000
Kan ikke lese DosHeader på 0588002a - status 00000000
Kan ikke lese DosHeader på 058a002a - status 00000000
Kan 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 moduler
    x *!

  • 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!_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 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!_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]

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 teknikker

I 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?

Utvid ferdighetene dine
Utforsk opplæring
Vær først ute med de nye funksjonene
Bli med i Microsoft Insiders

Var denne informasjonen nyttig?

Hvor fornøyd er du med kvaliteten på oversettelsen?

Hva påvirket opplevelsen din?

Har du ytterligere tilbakemeldinger? (valgfritt)

Takk for tilbakemeldingen!

×