Jak ověřit symboly pro ladění systému Windows

Podpory pro systém Windows Vista Service Pack 1 (SP1) končí ve 12. července 2011. Chcete-li pokračovat v přijímání aktualizací zabezpečení pro systém Windows, zkontrolujte, zda že používáte systém Windows Vista s aktualizací Service Pack 2 (SP2). Další informace naleznete na této webové stránce společnosti Microsoft: končí podpora některých verzí systému Windows.

Souhrn

Symboly pro ladění systému Windows musí být ověřena po spuštění ladicího programu jádra (I386kd.exe | WinDbg.exe). ladicí program může načíst a zobrazit výzvu, ale pokud symboly jsou nesprávné, budoucí ladění příkazů Neodkazovat správné funkce a proměnné, které vede k občasnému výsledky. Níže jsou uvedeny několik příznaků červené a několik metod k kontrola platnosti symboly.

Další informace

Tento článek předpokládá, že ladicí program jádra běží a načtení souboru Memory.dmp nebo je připojen ke vzdálenému počítači. Příkazy, které jsou předkládány nejsou plně zdokumentovány a jsou zobrazeny pouze výňatků z výstupu.

Obsah článku

  • Načítání ladicí program jádra
  • Kontrola času vytvoření s! ovladače
  • Pomocí Link.exe kontrolovat čas vytvoření
  • Unassembling funkce
  • Service Pack symboly

Načítání ladicí program jádra

Normální zatížení ladicí program zobrazí jedna z následujících pokynů:
kd > jednoprocesorovém systému

0: kd > víceprocesorového systému
Výzvě zobrazené níže označuje, že symbol souboru pro soubor Ntoskrnl.exe je nesprávné. Zkontrolujte, zda příslušný počítač s více procesory nebo jednoprocesorový jadra a vrstvy HAL jsou zkopírovány do stromu symbol.


Příklad:
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>

Načtení souboru Memory.dmp jádra verze, jakož i počet procesorů v ladicí program se zobrazí v prvních několika řádků. Potvrďte, že počet procesorů odpovídá příslušné jádro a vrstvy HAL. Informace o ovladači symbol se zobrazí buď symboly jsou načteny nebo odložena.

Vzorek zatížení:
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>

Všimněte si, že ladicí program jádra byla "Nelze přečíst záhlaví obrazu pro floppy.sys – na fc820000 - c0000001 stavu." Tato zpráva je normální, protože záhlaví konkrétní ovladač není aktuálně v paměti.

Kontrola času vytvoření s! ovladače

Použití ! ovladače příkazu zobrazíte seznam ovladačů aktuálně načtených v paměti. Přesvědčte Poznámka: data a časy ovladače a zda může být načten. (V následujícím příkladu kódu a dat velikost sloupce jsou odebrány na šířku článku.)
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>

Poznámka: čas vytvoření souboru je datum, kdy soubor je zkompilován. Toto datum je blízko Date\Time razítko na skutečný soubor při zobrazení Winnt\System32\Drivers podsložku pomocí Správce souborů.

Pokud přihlásit k Microsoft vývojáři Network (MSDN) nebo mají Windows zařízení Driver Kit (DDK), nástroj Link.exe slouží k potvrzení, že Dbg soubor je stejný soubor, který byl vytvořen při ovladač byl kompilován. "Čas datum razítko" v níže uvedeném příkladu odpovídá "Vytvoření době" Netbios.sys ve výše uvedeném výstupu.

"Čas datum razítko" Dbg souboru zkontrolujte pomocí Link.exe.
ODKAZ - dump - \symbols\sys\netbios.dbg záhlaví
Microsoft (R) COFF binární soubor sklápěč verze 3.00.5270
Copyright (C) Microsoft Corp 1992-1995. Všechna práva vyhrazena.

Výpis souboru Netbios.dbg
podpis 4944
Příznaky 0
14C počítače (i386)
charakteristiky 306
2FAAE94F datum as Pá květen 05 23:13:19 1995
8D0B kontrolní součet bitové kopie

10000 základní bitové kopie

Velikost obrázku 70A0
** Obsah odstraněn **

Pokud ! ovladače příkaz vytvoří všechny řádky vypadat takto, důležité tabulkové v výpis stavu je poškozen. Další analýza výpis stavu nemusí být možné.
Nelze přečíst DosHeader na 0583002a - stav 00000000
Nelze přečíst DosHeader na 0587002a - stav 00000000
Nelze přečíst DosHeader na 0588002a - stav 00000000
Nelze přečíst DosHeader na 058a002a - stav 00000000
Nelze přečíst DosHeader na 058c002a - stav 00000000

Unassembling funkce

Soubory symbolů povolit ladicí program jádra odkazovat podle názvu funkce a globální proměnné. Místě zkontrolovat několik nesloženém funkce Ujistěte se, že vypadají správné. Mnoho funkcí jsou optimalizována kompilátor a neodpovídají nutně níže uvedených příkladech. Kompilátor optimalizovat funkce jsou označeny FPO v závorkách v názvu funkce.


Funkce obvykle začínají buď "push ebp" nebo "mov eax, [000000000] fs." Základní znalost strojového jazyka a zkušenosti se povolit jeden tyto funkce rozpoznat.
  • Seznam načtených modulů
    x *!
  • Seznam symbolů pro určitý modul (například Ntoskrnl.exe).
    x nt! *
  • Vyberte funkci, kterou chcete unassemble-rozložit tedy není kompilátor optimalizovat.
    u NT! _NtUnlockFile

Funkční symboly

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 funkce by podobný text výše; unassembly je však může změnit. Pokud vypadá unassembly řádné, lze předpokládat, že jste správně načíst symboly pro tento modul.


Začíná následujícím unassembly "jnz NT! _NTUnlockFile + 0x22." Samozřejmě začátku funkce nespustí s kódem instrukce skoku. Ještě jednou zkontrolujte symbol stromu.

Chybné symboly

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 symboly

Existují situace, kdy je obtížné odpovídat symboly s konkrétní instalaci. V určitém okamžiku v čase služby by byly přidány vyžadující kopírování souborů z disku CD-ROM instalace systému Windows zkopírovány přes soubory, které byly aktualizovány pomocí aktualizace service pack. Ujistěte se, že po změně nastavení systému, který kopíruje soubory z disku CD-ROM instalace systému Windows znovu použít aktualizace service pack a všechny disky podpory třetích stran. Symboly je použito ve stejném pořadí jako instalace.

DALŠÍ INFORMACE

Hledání jádra ladění jak na řadu článků, hledání na klíčové slovo: debugref.

WinDbg 2.0.x Symbol techniky

V ladicí verzi 2.0.x a větší Debuggers Microsoft další symbol ověření kroky, které lze použít. Další informace naleznete na následujícím webu společnosti Microsoft:
Vlastnosti

ID článku: 148660 - Poslední kontrola: 10. 1. 2017 - Revize: 1

Váš názor