Come verificare i simboli di Debug di Windows

Il supporto per Windows Vista Service Pack 1 (SP1) termina il 12 luglio 2011. Per continuare a ricevere gli aggiornamenti della protezione per Windows, assicurarsi che si stia eseguendo Windows Vista con Service Pack 2 (SP2). Per ulteriori informazioni, fare riferimento alla pagina web Microsoft: .

Riepilogo

I simboli di debug di Windows devono essere verificati dopo aver avviato il debugger del kernel (I386kd.exe | Windbg.exe). il debugger può caricare e presentare una richiesta, ma se i simboli non sono corretti, futuri comandi di debug non fa riferimento corretto funzioni e variabili che conduce a risultati sporadici. Di seguito sono elencati alcuni flag rosso e un paio di metodi di controllo di validità dei simboli.

Ulteriori informazioni

In questo articolo si presuppone che il debugger del kernel è in esecuzione e ha caricato un file Memory. dmp o è connesso a un computer remoto. Comandi presentati non sono completamente documentati e vengono visualizzati solo i brani dall'output.

Articolo contenuto

  • Caricare il Debugger del Kernel

  • Il controllo ora di creazione con! driver

  • Utilizzo di Link.exe per controllare l'ora di creazione

  • Una funzione di unassembling

  • Simboli di Service Pack

Caricare il Debugger del Kernel

Un carico normale del debugger del kernel viene visualizzato uno dei seguenti messaggi:

kd > sistema monoprocessore 0: kd > sistema multiprocessoreIl prompt riportato di seguito indica che il file di simboli per il file Ntoskrnl.exe non è corretto. Verificare che il kernel multiprocessore o monoprocessore appropriato e HAL vengono copiati nella struttura di simbolo. Esempio: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> Quando il debugger del kernel viene caricato il file Memory. dmp, la versione del Kernel, nonché il numero di processori verrà le prime righe. Verificare che il numero di processori corrisponde con il kernel appropriato e HAL. Informazioni sui simboli di driver viene visualizzati come entrambi i simboli sono caricati o rinviati. Carico di esempio: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> Si noti che il debugger del kernel viene "Impossibile leggere l'intestazione dell'immagine per Floppy.sys in fc820000 - c0000001 di stato". Questo messaggio è normale perché l'intestazione particolare driver non è attualmente in memoria.

Il controllo ora di creazione con! driver

Utilizzo di ! driver comando per elencare i driver attualmente caricati in memoria. Rendere nota delle date e ore dei driver e che possono essere caricati. (Le colonne di dimensioni di codice e dati nell'esempio seguente vengono rimossi in base alla larghezza dell'articolo).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> Si noti l'ora di creazione del file, ovvero la data in cui che il file viene compilato. Questa data sta per l'indicatore di Date\Time del file effettivo quando si visualizza la sottocartella Winnt\System32\Drivers utilizzando File Manager. Se la sottoscrizione a Microsoft Developers Network (MSDN) o Windows Device Driver Kit (DDK), è possibile utilizzare lo strumento Link.exe per confermare che il file Dbg è lo stesso file creato quando il driver è stato compilato. "Data timestamp" nell'esempio riportato di seguito corrisponde a "Creare tempo" di Netbios.sys nell'output sopra. Utilizzare Link.exe per verificare il "Data timestamp" del file Dbg:

COLLEGAMENTO - dump - intestazioni \symbols\sys\netbios.dbgMicrosoft (R) COFF Binary File Dumper versione 3.00.5270 Copyright (C) Microsoft Corp 1992-1995. Tutti i diritti riservati. Dump del file Netbios.dbg

firma 4944 0 flag C 14 caratteristiche di 306 macchina (i386)2FAAE94F data timestamp venerdì maggio 05 23:13:19 1995

8D0B checksum dell'immagine 10000 base della dimensione dell'immagine di immagine 70A0* * Eliminato il contenuto * * se la ! driver comando genera tutte le righe che è simile al seguente, una tabella importante nel dump è danneggiata. Un'ulteriore analisi del dump potrebbe non essere possibile.

Impossibile leggere DosHeader in 0583002a - stato 00000000 Impossibile leggere DosHeader in 0587002a - stato 00000000 Impossibile leggere DosHeader in 0588002a - stato 00000000 Impossibile leggere DosHeader in 058a002a - stato 00000000 Impossibile leggere DosHeader in 058c002a - stato 00000000

Una funzione di unassembling

I file di simboli di attivare il debugger del kernel fare riferimento a funzioni e variabili globali in base al nome. Campione controllare un paio di funzioni smontate per assicurarsi che sembrano appropriate. Molte funzioni sono compilatore ottimizzato e non sono necessariamente conformi agli esempi riportati di seguito. Funzioni del compilatore ottimizzato sono identificate dall'oggetto FPO tra parentesi nel nome della funzione. Funzioni normalmente iniziano con una "push ebp" o "mov eax, fs [000000000]". Conoscenza di base del linguaggio macchina e l'esperienza consentirà di riconoscere queste funzioni.

  • Elenco moduli caricati x *!

  • Elenco di simboli per un particolare modulo (ad esempio, Ntoskrnl.exe). NT! *

  • Selezionare una funzione da dividere in altre parole non compilatore ottimizzato. u NT! _NtUnlockFile

Simboli appropriati

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> 

Il unassembly della funzione è simile al testo di cui sopra; Tuttavia, i unassembly sono soggette a modifiche. Se il unassembly sembra corretto, si può ritenere che i simboli sono caricati in modo corretto per questo modulo. Il unassembly seguente inizia con "jnz NT! _NTUnlockFile + 0x22." Ovviamente, all'inizio di una funzione non sarebbe iniziare con un codice di istruzione di salto. Controllare nuovamente la struttura ad albero del simbolo.

Simboli non validi

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] 

Simboli di Service Pack

Esistono casi in cui è difficile abbinare i simboli con una particolare installazione. Un certo punto nel tempo, un servizio sarebbe stato possibile aggiungere che richiedeva la copia dei file dal CD di installazione di Windows, copiare i file aggiornati con un service pack. Assicurarsi di riapplicare il service pack e i dischi di terze parti dopo la modifica di configurazione del sistema, la copia dei file dal CD di installazione di Windows. Applicare i simboli nello stesso ordine in cui l'installazione.

INFORMAZIONI AGGIUNTIVE

Per trovare la serie Kernel Debug How To degli articoli, cercare la parola chiave: debugref. Tecniche di WinDbg 2.0 simbolo Nella versione debugger 2.0 e versioni successive di Debuggers di Microsoft sono disponibili procedure simbolo aggiuntivo che possono essere utilizzate. Per ulteriori informazioni, vedere il seguente sito Web Microsoft:

Serve aiuto?

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa a Microsoft Insider

Queste informazioni sono risultate utili?

Grazie per il feedback!

Grazie per il tuo feedback! Potrebbe essere utile metterti in contatto con uno dei nostri operatori del supporto di Office.

×