2013-08-15 14 views
9

Ho un problema con i file di simboli. Ho sperimentato con il percorso del file simbolo e impostare il percorso come segue:File Windbg e Symbol

srv*c:\symbols*http://msdl.microsoft.com/download/symbols;C:\Users\myuser\Desktop\driver2\objchk_win7_x86\i386 

Ma poi ho cambiato al seguente:

srv*c:\symbols*http://msdl.microsoft.com/download/symbols;C:\Users\myuser\Desktop\mydriver\objchk_win7_x86\i386 

ho cambiato il driver2 con mydriver nel percorso: questo è il percorso in cui si trova il file .pdb per il mio driver. Il problema è che .sympath stampa il percorso di destra come di seguito riportate:

kd> .sympath 
Symbol search path is: srv*c:\symbols*http://msdl.microsoft.com/download/symbols;C:\Users\myuser\Desktop\mydriver\objchk_win7_x86\i386 
Expanded Symbol search path is: srv*c:\symbols*http://msdl.microsoft.com/download/symbols;c:\users\myuser\desktop\mydriver\objchk_win7_x86\i386 

Ma i simboli per il conducente non si trovano ancora. Se eseguo il comando .reload, possiamo vedere che WinDbg sta cercando .pdb nella directory driver2/invece di mydriver/directory.

kd> .reload /f mydriver.sys 
SYMSRV: c:\symbols\mydriver.pdb\3D655E533B0449A38D7AB0AF637CE9201\mydriver.pdb not found 
SYMSRV: http://msdl.microsoft.com/download/symbols/mydriver.pdb/3D655E533B0449A38D7AB0AF637CE9201/mydriver.pdb not found 
SYMSRV: c:\users\myuser\desktop\mydriver\objchk_win7_x86\i386\mydriver.pdb\3D655E533B0449A38D7AB0AF637CE9201\mydriver.pdb not found 
DBGHELP: c:\users\myuser\desktop\driver2\objchk_win7_x86\i386\mydriver.pdb - file not found 
*** ERROR: Module load completed but symbols could not be loaded for mydriver.sys 
DBGHELP: mydriver - no symbols loaded 

Ho cancellato tutte le aree di lavoro, chiuso WinDbg, riavviato Windows, ma il driver2/articolo è ancora lì: deve essere nella cache del lavoro predefinita o da qualche parte. Come posso cancellare tutte le impostazioni personali di WinDbg incluse quelle cache, così posso riavviare WinDbg e andare con il driver2/path e farlo usare mydriver /.

Potrei anche risolvere il problema rinominando la directory mydriver/in driver2 /, ma non voglio risolvere il problema in questo modo. Voglio capire cosa sta succedendo e risolverlo il meglio che posso.

risposta

5
!sym noisy 

ti dirà perché non ha voluto caricare il pdb. Forse hai ricostruito il tuo driver e il pdb guid o pdb age non corrisponde più. Se sei sicuro che hai costruito gli stessi file di origine è possibile forzare il caricamento del PPB per

.reload /i /f yourdriver.sys 

/I è l'interruttore di magia per caricare anche PDBs non corrispondenti. Questo interruttore non caricherà alcun driver dal server dei simboli, ma considererà solo i percorsi dei file locali per caricare il driver. Anche le directory dei negozi di simboli (SRV *) non sono considerate poiché ci sarebbero molte versioni tra cui scegliere. Ma se il tuo .sympath punta direttamente al tuo pdb verrà caricato.

+0

/io lavoro per me, nel mio caso, io uso windbg 6.2.8299.0 Versione AMD64 su Windows 7 con SP1 per eseguire il debug di un file di dump completo. Sono sicuro che il .sympath è corretto, e io uso symchk per verificare che i file .dll e .pdb siano perfettamente abbinati. Ma windbg si rifiuta ancora di caricare il pdb. BTW, dalla guida di windbg,/implica anche/f anche se non si specifica/f flag. – zhaorufei

0

Il driver è stato originariamente compilato & integrato nel percorso driver2? Qual è la posizione di mydriver.sys?

For example assume I have symbol path 'c:\users\rahulsundar\desktop' set and try to load ntdll.dll, then it displays below error, 

0:000> .reload ntdll.dll 
DBGHELP: c:\users\rahulsundar\desktop\ntdll.pdb - file not found 
DBGHELP: c:\users\rahulsundar\desktop\dll\ntdll.pdb - file not found 
DBGHELP: c:\users\rahulsundar\desktop\symbols\dll\ntdll.pdb - file not found 
DBGHELP: C:\Windows\SYSTEM32\ntdll.pdb - file not found 
DBGHELP: ntdll.pdb - file not found 
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll - 
DBGHELP: ntdll - export symbols 

Note: Windbg by default searches ntdll.pdb from the same location 'C:\Windows\SYSTEM32' 

Un modo per risolvere il problema corrente, dal registro suo chiaro che si aspetta windbg file PDB nella directory 'C: \ Users \ myuser \ Desktop \ mydriver \ objchk_win7_x86 \ i386 \ mydriver.pdb \ 3D655E533B0449A38D7AB0AF637CE9201 \ mydriver .pdb'.

Quindi creare manualmente directory fino 'mydriver.pdb \ 3D655E533B0449A38D7AB0AF637CE9201' e collocare file PDB lì.

Questo è solo un modo standard (binaryfoldername \ hashid \ pdbfile) che Windows si aspetta un simbolo per un binario.

+0

Ciao, sì, posso risolvere il problema in questo modo.Posso anche risolverlo rinominando il mio driver nella directory driver2. Ho prima compilato il driver nella directory driver2, quindi ho rinominato la directory su mydriver, ho cancellato tutti i file excpect mydriver.c e ricompilato. Ho fermato il driver, l'ho cancellato e riavviato il sistema Windows debuggato; Ho anche riavviato il sistema di debug. Penso che il problema è che WinDbg ha salvato questo percorso da qualche parte nella cache e sono interessato a dove; anche la vista dello spazio di lavoro predefinito viene modificata una volta che il debuggee si connette a Windbg, quindi lo spazio di lavoro deve essere salvato da qualche parte, nonostante io lo abbia cancellato. – eleanor

+0

Sembra che per il file driver i percorsi siano stati completati. Non sono sicuro se è un vero bug in windbg o bug di documentazione. Se si sospetta che si tratti di un bug in Windbg, è possibile provare a installare l'ultima versione di windbg per verificare se risolve il problema. Puoi anche provare a eliminare le aree di lavoro predefinite appropriate (utente \ kernel \ remote ecc) e salvare quello che vuoi come predefinito da File-> Salva WS come-> Predefinito nella modalità appropriata (utente \ kernel \ remoto) –

+0

questo potrebbe essere utile: http://msdn.microsoft.com/en-us/library/windows/hardware/ff560260(v=vs.85).aspx – zinking

0

modo migliore per risolvere questo - Accendere sim rumoroso e guardare percorso a .reload/f my_driver.sys o aggiungere nuovo percorso per .sympath [+] path/to/PPB e fare lo stesso