Come si identificano (e si accede a) moduli / simboli di debug da utilizzare quando viene fornito un Windows .dmp o .minidmp

StackOverflow https://stackoverflow.com/questions/402314

Domanda

In un modo che segue da leggere un file Windows * .dmp

Dopo aver ricevuto un file di dump da un cliente casuale, eseguendo la sessione di debug per vedere l'arresto anomalo, spesso si trova in una libreria MS o di terze parti. Il prossimo problema è che potresti non essere a conoscenza della configurazione del PC a tal punto da assicurarti di avere i moduli effettivamente disponibili.

Ad esempio, al momento sono bloccato nel tentativo di ottenere i simboli da caricare per ntdll.dll (5.01.2600.5512). In MSVC 2005 la colonna del percorso nella finestra dell'elenco dei moduli mostra un * prima del nome file completo e rifiuta di caricare i simboli che ho scaricato per XP / SP1 / SP1a / SP2 / SP3.

Ho il server dei simboli configurato per il download da Internet e l'archiviazione in una cache locale che sembra funzionare bene per i moduli che ho sul mio PC. Utilizzo della GUI equondante al metodo

Set _NT_SYMBOL_PATH=srv*d:\SymbolCache*\\server1\Third-Party-PDB;srv*d:\SymbolCache*\\server2\Windows\Symbols*http://msdl.microsoft.com/download/symbols

Forse ho i simboli sbagliati, ma poiché quelli nuovi non vengono scaricati, dove posso andare dopo? Devo contattare il cliente e chiedere quale SP ha installato e eventuali altre patch? Devo installare quella macchina e quindi eseguire il debugger con il file dmp per ottenere i simboli di cui ho bisogno?

È stato utile?

Soluzione

Cosa stai usando per eseguire il debug del minidump? Ad esempio, WinDBG o Visual Studio? E come è stato generato il minidump?

Dovrebbero esserci abbastanza informazioni nel minidump per risolvere correttamente i simboli di dll di sistema. Stai utilizzando un download locale di simboli o http://msdl.microsoft.com/ ?

Aggiornamento: dovresti essere in grado di aggiungere l'archivio pubblico di simboli Microsoft a Tools- > Options- > Debugging- > Symbols- > Symbol file (.pdb), quindi caricare manualmente i simboli facendo clic con il tasto destro sul modulo nella finestra Moduli e caricandoli se non viene eseguito automaticamente.

È anche probabile (probabilmente) che VS 2005 non guardi _NT_SYMBOL_PATH per risolvere i simboli di minidump.

Altri suggerimenti

Se stai digitando " Imposta _NT_SYMBOL_PATH = srv ... " in un prompt dei comandi, ci sono due cose da considerare:

    Il comando cmd.exe set non ignora gli spazi bianchi, quindi definisce una variabile chiamata " _NT_SYMBOL_PATH " ;, non " ; _NT_SYMBOL_PATH ".
  • È necessario avviare il debugger come figlio del prompt dei comandi. Tuttavia, non è necessario eseguire questa operazione se si utilizza il Pannello di controllo per impostare variabili di ambiente persistenti o se si utilizza il comando setx (in Windows Vista o uno dei kit di risorse di Windows).

Se stai impostando il percorso del simbolo in un altro modo, questo non si applica.

Prova a seguire le istruzioni in questo articolo kb e assicurati che il percorso del tuo simbolo sia configurato correttamente, quel WinDbg ha accesso ad esso e che i simboli ntdll (ad esempio) vengono effettivamente scaricati nella cache dei simboli. L'articolo fornisce anche istruzioni su come scaricare e verificare manualmente i simboli nella cache tramite lo strumento SymChk.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top