Introduzione al motore del 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 kernel in Microsoft Windows.

Motore del 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 librerie di estensioni del debugger e applicazioni autonome. Tali applicazioni sono applicazioni del motore del debugger. Un'applicazione del motore del debugger che usa la funzionalità completa del motore del debugger è un debugger. Ad esempio, WinDbg, CDB, NTSD e KD sono debugger. il motore del debugger fornisce la base delle relative funzionalità.

L'API del motore del debugger viene specificata dai prototipi nel file di intestazione dbgeng.h.

Documentazione incompleta

Questo è un documento preliminare ed è attualmente incompleto.

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

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

Estensioni

È possibile creare comandi di debug personalizzati scrivendo e compilando 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. Si basano sui prototipi nel file di intestazione dbgeng.h. Ogni DLL di questo tipo può esportare i comandi dell'estensione DbgEng. Questi comandi di estensione usano l'API del motore del debugger e possono anche usare l'API WdbgExts.

  • DLL di estensione EngExtCpp. Si basano sui prototipi nei file di intestazione engextcpp.h e dbgeng.h. Ogni DLL di questo tipo può esportare i comandi dell'estensione DbgEng. Questi comandi di estensione usano sia l'API del motore del debugger che il framework di estensione EngExtCpp e possono anche usare l'API WdbgExts.

  • DLL dell'estensione WdbgExts. Si basano sui prototipi nel file di intestazione wdbgexts.h. Ogni DLL di questo tipo esporta uno o più comandi dell'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 delle funzionalità dell'API del motore del 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 debugging tools for Windows di installazione.

Il modo più semplice per scrivere nuove estensioni del debugger è studiare le estensioni di esempio. Ogni estensione di esempio include file makefile e file di origine 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 del debugger !analyze scrivendo un plug-in di estensione di analisi. Fornendo un plug-in di estensione di analisi, è possibile partecipare all'analisi di un controllo dei 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 in 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 comprendono gli oggetti del debugger ed estendono e personalizzano le funzionalità del debugger. I provider JavaScript conseciano 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.