Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questa sezione include:
Panoramica del motore di debugger
uso dell'API del motore di debugger
scrittura di estensioni DbgEng
scrittura di estensioni WdbgExts
personalizzazione dell'output del debugger tramite DML
Uso di JavaScript per estendere le funzionalità del debugger
Sviluppare moduli di estendibilità del trasporto KDNET
Questa documentazione descrive come usare interfacce come quelle fornite dal motore di debugger per scrivere estensioni che verranno eseguite in WinDbg, KD, CDB e NTSD. Queste estensioni del debugger possono essere usate quando si esegue il debug in modalità utente o in modalità kernel.
Motore debugger
Il motore del debugger fornisce un'interfaccia per esaminare e modificare le destinazioni di debug in modalità utente e in modalità kernel.
Il motore del debugger può acquisire destinazioni, impostare punti di interruzione, monitorare eventi, simboli di query, leggere e scrivere memoria e controllare thread e processi in una destinazione.
È possibile usare il motore del debugger per scrivere librerie di estensioni del debugger e applicazioni autonome. Tali applicazioni sono applicazioni del motore di debugger. Un'applicazione del motore di debugger che usa la funzionalità completa del motore di debugger è un debugger . Ad esempio, WinDbg, CDB, NTSD e KD sono debugger; il motore del debugger fornisce il nucleo delle relative funzionalità.
L'API del motore di debugger viene specificata dai prototipi nel file di intestazione dbgeng.h.
Per altre informazioni, vedere Debugger Engine Overview and Using the Debugger Engine API.For more information, see Debugger Engine Engine Overview and Using the Debugger Engine API.
estensioni
È possibile creare comandi di debug personalizzati scrivendo e creando una DLL di estensione. Ad esempio, è possibile scrivere un comando di estensione per visualizzare una struttura di dati complessa.
Esistono tre diversi tipi di DLL dell'estensione del debugger:
DLL dell'estensione DbgEng. Questi sono basati sui prototipi nel file di intestazione dbgeng.h. Ogni DLL di questo tipo può esportare i comandi di estensione DbgEng. Questi comandi di estensione usano l'API del motore di debugger e possono anche usare l'API WdbgExts.
Per altre informazioni, vedere Scrittura di estensioni DbgEng.
DLL di estensione EngExtCpp. Questi sono basati sui prototipi nei file di intestazione engextcpp.h e dbgeng.h. Ogni DLL di questo tipo può esportare i comandi di estensione DbgEng. Questi comandi di estensione usano sia l'API del motore di debugger che il framework di estensione EngExtCpp e possono usare anche l'API WdbgExts.
DLL dell'estensione WdbgExts. Questi sono basati sui prototipi nel file di intestazione wdbgexts.h. Ogni DLL di questo tipo esporta uno o più comandi di estensione WdbgExts. Questi comandi di estensione usano esclusivamente l'API WdbgExts. Per altre informazioni, vedere Scrittura di estensioni WdbgExts.
L'API DbgEng può essere usata per creare estensioni o applicazioni autonome. L'API WdbgExts contiene un subset della funzionalità dell'API del motore di debugger e può essere usata solo dalle estensioni.
Tutte le estensioni del debugger devono essere compilate e compilate con Visual Studio.
Gli esempi di codice di estensione vengono installati come parte del pacchetto Debugging Tools for Windows se si esegue un'installazione personalizzata e si seleziona il componente SDK e tutti i relativi sottocomponenti. Sono disponibili nella sottodirectory sdk\samples della directory di installazione degli strumenti di debug per Windows.
Il modo più semplice per scrivere nuove estensioni del debugger consiste nello studiare le estensioni di esempio. Ogni estensione di esempio include file makefile e origini da usare con l'utilità Di compilazione. Entrambi i tipi di estensioni sono rappresentati negli esempi.
scrittura di estensioni del debugger di analisi personalizzate
È possibile estendere le funzionalità del comando !analyze debugger scrivendo un plug-in dell'estensione di analisi. Fornendo un plug-in di estensione di analisi, è possibile partecipare all'analisi di un controllo di bug o di un'eccezione in modo specifico per il componente o l'applicazione. Quando si scrive un plug-in di estensione di analisi, si scrive anche un file di metadati che descrive le situazioni per cui si vuole chiamare il plug-in. Quando !analyze viene eseguito, individua, carica ed esegue i plug-in dell'estensione di analisi appropriati. Per altre informazioni, vedere Scrittura di estensioni del debugger di analisi personalizzate
personalizzazione dell'output del debugger tramite DML
È possibile personalizzare l'output del debugger usando DML. Per altre informazioni, vedere Personalizzazione dell'output del debugger tramite DML.
Uso di JavaScript per estendere le funzionalità del debugger
Usare JavaScript per creare script che comprendano gli oggetti debugger ed estendono e personalizzano le funzionalità del debugger. I provider JavaScript consentono di collegare un linguaggio di scripting al modello a oggetti interno del debugger. Il provider di scripting del debugger JavaScript consente l'uso di JavaScript con il debugger. Per altre informazioni, vedere scripting del debugger JavaScript .
Sviluppare moduli di estendibilità del trasporto KDNET
Il trasporto KDNET può essere esteso per l'esecuzione su qualsiasi hardware tramite l'uso di una DLL del modulo di estendibilità del driver hardware separato. I moduli di estendibilità del trasporto KDNET vengono sviluppati dai fornitori di schede di rete per aggiungere il supporto del debug del kernel a schede di rete specifiche.
KDNET è un trasporto di debug del kernel che consente il debug del kernel di windows in rete. È progettato in modo che il livello di supporto hardware sia integrato in un modulo separato dal livello di elaborazione dei pacchetti di rete e dell'interfaccia kernel. Questo livello di supporto del driver hardware è denominato modulo di estendibilità KDNET. Per altre informazioni, vedere Sviluppare moduli di estendibilità del trasporto KDNET.