Introduzione al motore di debugger

Questa documentazione descrive come usare il motore del debugger e come 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 in Microsoft Windows.

Motore di debugger

Il motore del debugger fornisce un'interfaccia per esaminare e modificare le destinazioni di debug in modalità utente e in modalità kernel in Microsoft Windows.

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 sia librerie di estensioni del debugger che 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.

Documentazione incompleta

Si tratta di un documento preliminare e attualmente incompleto.

Per molti concetti relativi ai debugger e al motore di debugger non ancora documentati qui, vedere la sezione Tecniche di debug di questa documentazione.

Per ottenere alcune delle funzionalità attualmente non documentate dell'API del motore di debugger, usare il metodo Execute per eseguire singoli comandi del debugger.

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 di estensione del debugger:

  • DLL di 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 usare anche l'API WdbgExts.

  • 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 anche usare l'API WdbgExts.

  • DLL di 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.

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 usando l'utilità Di compilazione. L'utilità Build è inclusa in Windows Driver Kit (WDK).

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 di estensione di analisi. Fornendo un plug-in di estensione di analisi, è possibile partecipare all'analisi di un controllo di bug o un'eccezione in un modo specifico per il proprio componente o 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.