WinDbg - WinDbg

WinDbg
Sviluppatore/i Microsoft
Rilascio stabile
10.0.220153.1000 / 29 aprile 2020 ( 2020-04-29 )
Sistema operativo Microsoft Windows
Tipo Debugger
Licenza Commerciale
Sito web Strumenti di debug su docs.microsoft.com


WinDbg è un debugger multiuso per il sistema operativo del computer Microsoft Windows , distribuito da Microsoft. Il debug è il processo di ricerca e risoluzione degli errori in un sistema ; nell'informatica include anche l'esplorazione del funzionamento interno del software come aiuto allo sviluppo. Può essere utilizzato per eseguire il debug di applicazioni in modalità utente , driver di dispositivo e il sistema operativo stesso in modalità kernel .

Panoramica

Come il più noto Visual Studio Debugger, WinDbg ha un'interfaccia utente grafica (GUI), ma è più potente e ha poco altro in comune. WinDbg può caricare automaticamente file di simboli di debug (ad es. file PDB ) da un server soddisfacendo vari criteri (ad es. timestamp, CRC, versione a processore singolo o multiprocessore) tramite SymSrv (SymSrv.dll), invece del compito più lungo di creare un albero dei simboli per un ambiente di destinazione di debug. Se è configurato un server di simboli privato, i simboli possono essere correlati con il codice sorgente per il binario. Ciò semplifica l'onere dei problemi di debug che hanno varie versioni dei binari installati sulla destinazione del debug, eliminando la necessità di trovare e installare una versione di simboli specifici sull'host di debug. Microsoft dispone di un server di simboli pubblico che contiene la maggior parte dei simboli pubblici per Windows 2000 e versioni successive di Windows (inclusi i service pack ).

WinDbg può essere utilizzato anche per il debug di dump della memoria in modalità kernel , creati dopo quello che viene comunemente chiamato Blue Screen of Death che si verifica quando viene emesso un controllo di bug . Può anche essere utilizzato per eseguire il debug di dump di arresto anomalo in modalità utente. Questo è noto come debug post-mortem .

Le versioni recenti di WinDbg sono state e vengono distribuite come parte della suite gratuita Debugging Tools for Windows , che condivide un back-end di debug comune tra WinDbg e front-end del debugger da riga di comando come KD , CDB e NTSD . La maggior parte dei comandi può essere utilizzata così com'è con tutti i front-end del debugger inclusi.


Nel 2017 Microsoft ha annunciato la nuova versione di WinDbg chiamata WinDbg Preview (aka WinDbgX). Una delle caratteristiche più importanti di WinDbg Preview è il cosiddetto Time-Travel-Debugging (TTD). L'idea principale qui è che è possibile registrare un processo live effettivo (con una riduzione delle prestazioni) per eseguire il debug in un secondo momento andando avanti e indietro nel tempo. Questa funzione è particolarmente utile durante il processo di reverse engineering. Consente inoltre di scrivere script in linguaggio JavaScript.

Estensioni

WinDbg consente il caricamento di DLL di estensione che possono aumentare i comandi supportati del debugger e consentire assistenza nel debug di scenari specifici: ad esempio, la visualizzazione di un documento MSXML dato un IXMLDOMDocument o il debug di Common Language Runtime (CLR) . Queste estensioni sono una parte importante di ciò che rende WinDbg un debugger così potente. WinDbg viene utilizzato dal team del prodotto Microsoft Windows per creare Windows e tutto il necessario per eseguire il debug di Windows è incluso in queste DLL di estensione.

I comandi di estensione sono sempre preceduti da ! .

Sebbene alcune estensioni siano utilizzate solo all'interno di Microsoft, la maggior parte di esse fa parte del pacchetto pubblico di Debugging Tools for Windows.

Il modello di estensione è documentato nel file della guida incluso con gli strumenti di debug per Windows.

Ext.dll

Ext è un'estensione standard di Windows Debugger fornita con WinDBG e viene caricata per impostazione predefinita.

!comando analizza

Il comando più comunemente usato è !analyze -v , che analizza lo stato corrente del programma in fase di debug e lo stato della macchina/processo al momento dell'arresto anomalo o del blocco. Questo comando è spesso in grado di eseguire il debug del problema corrente in modo completamente automatico.

Se utilizzato senza interruttori, !analyze restituisce semplicemente i risultati della sua analisi. I -v e -vv dare ulteriori dettagli su tale analisi.

Wow6432exts.dll

Wow6432exts è un'estensione standard di Windows Debugger fornita con WinDBG. Viene utilizzato per eseguire il debug dei processi in esecuzione all'interno di WoW64 (processi a 32 bit in esecuzione in Windows a 64 bit).

SOS.dll

L'estensione di debug SOS (Son of Strike) (SOS.dll) consente di eseguire il debug di programmi gestiti in Visual Studio e WinDbg fornendo informazioni sull'ambiente Common Language Runtime (CLR) interno. Questo strumento richiede che un progetto abbia abilitato il debug non gestito. SOS.dll viene installato automaticamente con .NET Framework. Per utilizzare SOS.dll in Visual Studio, installare Windows Driver Kit (WDK). Per eseguire il debug di un processo o di un dump della memoria, la versione di sos.dll deve corrispondere alla versione di .NET Framework. Psscor2 e Psscor4 sono un superset di SOS.

Psscor2.dll

Psscor2 è l'estensione del debugger di Windows utilizzata per eseguire il debug di applicazioni .NET Framework che utilizzano .NET CLR versione 2.0 (versioni di .NET Framework da 2 a 3.5). Psscor2 è stato sviluppato per uso interno in Microsoft come parte degli strumenti di Product Support Services. Sebbene Microsoft abbia rilasciato Psscor2 solo nel 2010, Microsoft pubblicava comandi dall'estensione diversi anni prima, causando difficoltà a coloro che stavano cercando di seguire i propri processi.

Psscor4.dll

Psscor4 è un'estensione di Windows Debugger utilizzata per eseguire il debug di applicazioni .NET Framework 4.

Accoppiamento con macchine virtuali

WinDbg consente il debug di un kernel Microsoft Windows in esecuzione su una macchina virtuale da VMware , VPC o Parallels utilizzando una named pipe . Ciò può essere ottenuto utilizzando una porta COM virtuale . Nel caso di VMware e VirtualBox , l'estensione VirtualKD aggiunge il supporto nativo per il debug VM al kernel di Windows, affermando di accelerare il debug di un fattore fino a 45. Per Windows 8 e versioni successive, è consentito il debug del kernel sulla rete, consentendo un kernel veloce debug senza configurazione speciale.

Protocollo

Il protocollo WinDbg non è documentato, ma è supportato dai disassemblatori IDA Pro e radare2 .

Guarda anche

Riferimenti

link esterno