Debug Kernel-Mode locale

Gli strumenti di debug per Windows supportano il debug del kernel locale. Si tratta del debug in modalità kernel in un singolo computer. In altre parole, il debugger viene eseguito nello stesso computer di cui viene eseguito il debug.

Configurazione del debug di Kernel-Mode locali

Per informazioni sulla configurazione del debug in modalità kernel locale, vedere Configurazione manuale del debug di Kernel-Mode locali di un singolo computer.

Avvio della sessione di debug

Uso di WinDbg

Aprire WinDbg come amministratore. Scegliere Debug kernel dal menu File. Nella finestra di dialogo Debug kernel aprire la scheda Locale . Selezionare OK.

È anche possibile avviare una sessione con WinDbg aprendo una finestra del prompt dei comandi come amministratore e immettendo il comando seguente:

windbg -kl

Uso di KD

Aprire una finestra del prompt dei comandi come Amministratore e immettere il comando seguente:

kd -kl

Comandi non disponibili

Non tutti i comandi sono disponibili in una sessione di debug del kernel locale. In genere, non è possibile usare alcun comando che causa l'arresto del computer di destinazione, anche momentaneamente, perché non è possibile riprendere l'operazione.

In particolare, non è possibile usare i comandi seguenti:

  • Comandi di esecuzione, ad esempio g (Go), p (step), t (Trace), wt (Trace and Watch Data), tb (Trace to Next Branch), gh (Go with Exception Handled), and gn (Go with Exception Not Handled) (Vai con eccezione non gestita)

  • Comandi di arresto e dump dei file, ad esempio arresto anomalo, dump e riavvio

  • Comandi dei punti di interruzione, ad esempio bp, bu, ba, bc, bd, be e bl

  • Registrare i comandi di visualizzazione, ad esempio r e varianti

  • Comandi di analisi dello stack, ad esempio k e varianti

Se si esegue il debug del kernel locale con WinDbg, anche tutti i comandi di menu e i pulsanti equivalenti non sono disponibili.

Comandi disponibili

Sono disponibili tutti i comandi di input e output di memoria. È possibile leggere liberamente dalla memoria utente e dalla memoria del kernel. È anche possibile scrivere in memoria. Assicurarsi di non scrivere nella parte sbagliata della memoria del kernel, perché può danneggiare le strutture di dati e spesso causa l'arresto anomalo del computer.

Difficoltà nell'esecuzione del debug del kernel locale

Il debug del kernel locale è un'operazione molto delicata. Prestare attenzione a non danneggiare o arrestare il sistema.

Uno degli aspetti più difficili del debug del kernel locale è che lo stato del computer cambia costantemente. La memoria viene inserita e in uscita, il processo attivo cambia costantemente e i contesti degli indirizzi virtuali non rimangono costanti. Tuttavia, in queste condizioni, è possibile analizzare in modo efficace gli elementi che cambiano lentamente, ad esempio determinati stati del dispositivo.

I driver in modalità kernel e il sistema operativo Windows inviano spesso messaggi al debugger del kernel usando DbgPrint e le funzioni correlate. Questi messaggi non vengono visualizzati automaticamente durante il debug del kernel locale. È possibile visualizzarli usando l'estensione !dbgprint .

LiveKD

Lo strumento LiveKD simula il debug del kernel locale. Questo strumento crea un file di dump "snapshot" della memoria del kernel, senza arrestare effettivamente il kernel mentre viene creato questo snapshot. Pertanto, lo snapshot potrebbe non mostrare effettivamente un singolo stato istantaneo del computer.

LiveKD non fa parte del pacchetto Strumenti di debug per Windows. È possibile scaricare LiveKd dal sito Sysinternals di Windows.