Telefonino.net network
Win Base Win Adv Win XP Vista Windows 7 Registri Software Manuali Humor Hardware Recensioni Blog Download Foto
INDICE SEZIONE NEWS WEB NEWS SOFTWARE PUBBLICITA'
Analisi dei crash dump

generiamo un Memory.dmp con la tastiera

Finita la premessa andiamo al sodo, prima di tutto, serve un dump e quindi una BSOD. La mia sarà provocata volontariamente tramite innesco da tastiera. Una spiegazione su come effettuarla la trovate qui:

KB244139 di Microsoft

Per quanto riguarda le tastiere USB non bisogna agganciare l'hook a i8042prt (il gestore della porte PS/2 classiche delle tastiere) bensì su kbhid che si trova sempre sotto Services.


Adesso mano al Debugging Tools for Windows. Il programma che ci interessa è WinDbg. Perciò una volta installato sul menu Start Debugging Tools for Windows->Windbg (se usato Vista o 7 con UAC attivo, eseguitelo in modalità amministratore)


Manca un passo prima di poter analizzare il crash dump, ossia indicare i simboli da usare dal debugger SIMBOLICO. Cosa sono i simboli? Sono delle informazioni che vengono aggiunte al codice binario che rivelano il costrutto sorgente. Potete considerarlo del codice sorgente che è stato codificato all'interno del file binario, utilissimo per capire le funzioni eseguite da un programma.

Siccome unire queste informazioni direttamente sulle dll e sugli eseguibili, gonfierebbe la dimensione dei file, Microsoft offre i simboli dei suoi file di sistema liberi da scaricare, direttamente dal sito del Debugging Tools. Ma c'è un altra via che permette di non scaricare l'intero pacchetto e prendere solo i simboli che ci interessano. Da windbg, fate File -> Symbol file path e inserite la seguente stringa:

SRV*directory*http://msdl.microsoft.com/download/symbols

dove directory è la cartella locale dove verranno salvati i simboli scaricati.

ATTENZIONE: nel server pubblico non sono ancora inclusi quelli di windows 7... Per reperirli dovete andare nella sezione whdc di Microsoft e scaricarli manualmente dal programma Connect nella sezione Ecosystem di Connect oppure sul sito MSDN (se siete membri). Inoltre per quanto riguarda driver, i simboli sono alquanto limitati. Se siete membri del MSDN potete scaricarvi le versioni checked (ossia ricche di informazioni per i debugging) dei sistemi operativi.

Una volta inserita questa stringa (o magari averla settata come variabile in _NT_SYMBOL_PATH), è possibile fare il debugging. Per maggiori informazioni: Utilizzare il server del codice di Microsoft per ottenere file di simboli di debug (KB311503).

Per farlo andimao su File -> Open crash dump e indichiamo il dump. Attendiamo lo scaricamento dei simboli noti (alcuni simboli di driver specie non di Microsoft non saranno disponibili), alla fine del caricamento comparirà Bugcheck Analysis dove potremo visualizzare la descrizione del bug e l'elemento ritenuto colpevole. Possiamo ripetere l'analisi con !analyze -v (spesso viene richiesta per caricare simboli aggiuntivi).


Ora abbiamo un probabile colpevole. Se volessimo osservare meglio la situazione il debugger ci offre alcuni comandi (che potete trovare nella guida di Windbg). Elenco quelli più utili:

  • !kv - La famosa call trace: ossia la lista delle chiamate di funzioni che hanno portato il sistema in quella situazione. Fondamentale per capire il programma provocante (il crash dump può indicarmi il driver di sistema ad esempio che ha causato il problema...ma chi ha chiamato quel driver?). Fare attenzione che non è facile per il sistema ricavare l'elenco delle funzioni chiamati specialmente in ambiente multithread, perciò la lista del call trace verrà indicata come inaffidabile da un punto in poi. -> dd stampa il contenuto in memoria Inoltre sono disponibili i cambi di contesto che servono a concentrarsi su uno stato particolare del sistema (abbastanza tecnico), tra cui:
  • .trap - molto utile se si stanno controllando problemi relativi ai driver (IRQL_NOT_LESS_OR_EQUAL ad esempio) , permette di visualizzare del trap frame
  • .cxr - utile per controllare eccezioni non gestite generati da BSOD KMODE_EXCEPTION_NOT_HANDLED. Permette di vedere gli argomenti passati alla funzione che ha causato la BSOD.
  • .ext - utile per controllare eccezioni non gestite generati da BSOD KMODE_EXCEPTION_NOT_HANDLED. Permette di vedere il record di eccezione e di contesto della funzione che ha causato la BSOD

Nella guida di Windbg inoltre è inclusa la lista dei bugcheck.

<< Tools e preparativi... Driver verifier... >>

 In evidenza Registrare la TV da iPhone e iPad



Nel Web in WinTricks
Copyright © 1999-2012 Master New Media s.r.l. p.iva: 02947530784
COPYRIGHT . PRIVACY . REDAZIONE . STORIA . SUPPORTA
 

Warning: include(/mnt/host/www/wintricks/wintricks.it/www/bottom.php) [function.include]: failed to open stream: Permission denied in /mnt/host/www/wintricks/wintricks.it/www/vista/analisi-crash-dump3.html on line 140

Warning: include() [function.include]: Failed opening '/mnt/host/www/wintricks/wintricks.it/www/bottom.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /mnt/host/www/wintricks/wintricks.it/www/vista/analisi-crash-dump3.html on line 140
</