Ambienti di debug
Esistono sei ambienti di debug disponibili:
- WinDbg
- WinDbg (versione classica)
- Debugger del kernel (KD)
- NTKD
- Debugger console (CDB)
- Debugger simbolico NT (NTSD)
Le sezioni seguenti descrivono gli ambienti di debug.
Windbg
WinDbg è la versione più recente di WinDbg con oggetti visivi moderni, finestre più veloci e un'esperienza di scripting completa, creata con il front-end e il centro del debugger estendibile. WinDbg usa lo stesso motore sottostante di WinDbg (versione classica), quindi tutti i comandi, le estensioni e i flussi di lavoro usati per continueranno a funzionare come in precedenza.
Per altre informazioni, vedere Funzionalità di WinDbg
WinDbg (versione classica)
Microsoft Windows Debugger WinDbg (versione classica) è un debugger basato su Windows in grado di eseguire il debug in modalità utente e in modalità kernel. WinDbg fornisce il debug per il kernel windows, i driver in modalità kernel e i servizi di sistema, nonché le applicazioni e i driver in modalità utente.
WinDbg usa i formati di simboli di debug di Visual Studio per il debug a livello di origine. Può accedere a qualsiasi simbolo o variabile da un modulo con file di simboli PDB e può accedere a qualsiasi nome di funzione pubblica esposto da moduli compilati con file di simboli COFF (ad esempio file con estensione dbg di Windows).
WinDbg può visualizzare il codice sorgente, impostare punti di interruzione, visualizzare variabili (inclusi oggetti C++), analisi dello stack e memoria. La finestra Di comando debugger consente all'utente di eseguire un'ampia gamma di comandi.
Per il debug in modalità kernel, WinDbg richiede in genere due computer (il computer host e il computer di destinazione). WinDbg supporta anche varie opzioni di debug remoto per le destinazioni in modalità utente e in modalità kernel.
WinDbg è un'interfaccia grafica controparte di CDB/NTSD e KD/NTKD.
KD
Microsoft Kernel Debugger (KD) è un programma console basato su caratteri che consente l'analisi approfondita dell'attività in modalità kernel in tutti i sistemi operativi basati su NT. È possibile usare KD per eseguire il debug di componenti e driver in modalità kernel o per monitorare il comportamento del sistema operativo stesso. KD supporta anche il debug multiprocessore.
In genere, KD non viene eseguito nel computer sottoposto a debug. Sono necessari due computer (il computer host e il computer di destinazione) per il debug in modalità kernel.
NTKD
Esiste una variante del debugger KD denominato NTKD. È identico a KD in ogni modo, ad eccezione del fatto che genera una nuova finestra di testo all'avvio, mentre KD eredita la finestra del prompt dei comandi da cui è stato richiamato.
CDB
Microsoft Console Debugger (CDB) è un programma console basato su caratteri che consente l'analisi di basso livello della memoria e dei costrutti in modalità utente di Windows. Il nome Debugger console viene usato per indicare il fatto che CDB è classificato come applicazione console. Non implica che l'applicazione di destinazione sia un'applicazione console. Infatti, CDB è completamente in grado di eseguire il debug di applicazioni console e programmi Windows grafici.
CDB è estremamente potente per il debug di un programma che è attualmente in esecuzione o ha recentemente arrestato in modo anomalo (analisi in tempo reale), ma semplice da configurare. Può essere usato per analizzare il comportamento di un'applicazione funzionante. Nel caso di un'applicazione con errori, è possibile usare CDB per ottenere un'analisi dello stack o per esaminare i parametri colpevoli. Funziona bene in una rete (usando un server di accesso remoto), perché è basato su caratteri.
Con CDB è possibile visualizzare ed eseguire il codice del programma, impostare punti di interruzione ed esaminare e modificare i valori in memoria. CDB può analizzare il codice binario disassemblandolo e visualizzando le istruzioni dell'assembly. Può anche analizzare direttamente il codice sorgente.
Poiché CDB può accedere ai percorsi di memoria tramite indirizzi o simboli globali, è possibile fare riferimento ai dati e alle istruzioni in base al nome anziché all'indirizzo, semplificando l'individuazione e il debug di sezioni specifiche del codice. CDB supporta il debug di più thread e processi. È estendibile e può leggere e scrivere sia la memoria di paging che quella non di paging.
Se l'applicazione di destinazione è un'applicazione console, la destinazione condividerà la finestra della console con CDB. Per generare una finestra della console separata per un'applicazione console di destinazione, usare l'opzione della riga di comando -2 .
NTSD
Esiste una variante del debugger CDB denominato Debugger simbolico Microsoft NT (NTSD). È identico a CDB in ogni modo, ad eccezione del fatto che genera una nuova finestra di testo all'avvio, mentre CDB eredita la finestra del prompt dei comandi da cui è stato richiamato.
Poiché il comando start può essere usato anche per generare una nuova finestra della console, le due costruzioni seguenti restituiranno gli stessi risultati:
start cdb parameters
ntsd parameters
È possibile reindirizzare l'input e l'output da NTSD (o CDB) in modo che possa essere controllato da un debugger del kernel (Visual Studio, WinDbg o KD). Se questa tecnica viene usata con NTSD, non verrà visualizzata alcuna finestra della console. Il controllo di NTSD dal debugger del kernel è quindi particolarmente utile perché comporta un debugger estremamente leggero che non comporta alcun carico sul computer che contiene l'applicazione di destinazione. Questa combinazione può essere usata per eseguire il debug di processi di sistema, arresto e fasi successive dell'avvio. Per informazioni dettagliate, vedere Controllo del debugger in modalità utente dal debugger del kernel.