Présentation du moteur de débogueur

Cette documentation explique comment utiliser le moteur de débogueur et comment écrire des extensions qui s’exécuteront dans WinDbg, KD, CDB et NTSD. Ces extensions de débogueur peuvent être utilisées lors de l’exécution d’un débogage en mode utilisateur ou en mode noyau sur Microsoft Windows.

Moteur de débogueur

Le moteur de débogueur fournit une interface permettant d’examiner et de manipuler les cibles de débogage en mode utilisateur et en mode noyau sur Microsoft Windows.

Le moteur de débogueur peut acquérir des cibles, définir des points d’arrêt, surveiller les événements, les symboles de requête, la mémoire de lecture et d’écriture et contrôler les threads et les processus dans une cible.

Vous pouvez utiliser le moteur de débogueur pour écrire à la fois des bibliothèques d’extensions de débogueur et des applications autonomes. Ces applications sont des applications de moteur de débogueur. Une application de moteur de débogueur qui utilise toutes les fonctionnalités du moteur de débogueur est un débogueur. Par exemple, WinDbg, CDB, NTSD et KD sont des débogueurs ; le moteur de débogueur fournit le cœur de leurs fonctionnalités.

L’API du moteur de débogueur est spécifiée par les prototypes dans le fichier d’en-tête dbgeng.h.

Documentation incomplète

Il s’agit d’un document préliminaire qui est actuellement incomplet.

Pour de nombreux concepts relatifs aux débogueurs et au moteur de débogueur qui ne sont pas encore documentés ici, consultez la section Techniques de débogage de cette documentation.

Pour obtenir certaines des fonctionnalités actuellement non documentées de l’API du moteur de débogueur, utilisez la méthode Execute pour exécuter des commandes de débogueur individuelles.

Extensions

Vous pouvez créer vos propres commandes de débogage en écrivant et en créant une DLL d’extension. Par exemple, vous pouvez écrire une commande d’extension pour afficher une structure de données complexe.

Il existe trois types de DLL d’extension de débogueur :

  • DLL d’extension DbgEng. Celles-ci sont basées sur les prototypes du fichier d’en-tête dbgeng.h. Chaque DLL de ce type peut exporter des commandes d’extension DbgEng. Ces commandes d’extension utilisent l’API moteur de débogueur et peuvent également utiliser l’API WdbgExts.

  • DLL d’extension EngExtCpp. Celles-ci sont basées sur les prototypes des fichiers d’en-tête engextcpp.h et dbgeng.h. Chaque DLL de ce type peut exporter des commandes d’extension DbgEng. Ces commandes d’extension utilisent à la fois l’API moteur de débogueur et l’infrastructure d’extension EngExtCpp, et peuvent également utiliser l’API WdbgExts.

  • DLL d’extension WdbgExts. Celles-ci sont basées sur les prototypes du fichier d’en-tête wdbgexts.h. Chaque DLL de ce type exporte une ou plusieurs commandes d’extension WdbgExts. Ces commandes d’extension utilisent exclusivement l’API WdbgExts.

L’API DbgEng peut être utilisée pour créer des extensions ou des applications autonomes. L’API WdbgExts contient un sous-ensemble des fonctionnalités de l’API du moteur de débogueur et ne peut être utilisée que par les extensions.

Toutes les extensions de débogueur doivent être compilées et générées à l’aide de l’utilitaire Build. L’utilitaire Build est inclus dans le Kit de pilotes Windows (WDK).

Les exemples de code d’extension sont installés dans le cadre du package Outils de débogage pour Windows si vous effectuez une installation personnalisée et sélectionnez le composant SDK et tous ses sous-composants. Ils se trouvent dans le sous-répertoire sdk\samples du répertoire d’installation Outils de débogage pour Windows.

Le moyen le plus simple d’écrire de nouvelles extensions de débogueur consiste à étudier les exemples d’extensions. Chaque exemple d’extension inclut des fichiers makefile et des fichiers sources à utiliser avec l’utilitaire Build. Les deux types d’extensions sont représentés dans les exemples.

Écriture d’extensions de débogueur d’analyse personnalisée

Vous pouvez étendre les fonctionnalités de la commande !analyze débogueur en écrivant un plug-in d’extension d’analyse. En fournissant un plug-in d’extension d’analyse, vous pouvez participer à l’analyse d’un bogue case activée ou d’une exception d’une manière spécifique à votre propre composant ou application. Lorsque vous écrivez un plug-in d’extension d’analyse, vous écrivez également un fichier de métadonnées qui décrit les situations pour lesquelles vous souhaitez que votre plug-in soit appelé. Lorsque !analyze s’exécute, il localise, charge et exécute les plug-ins d’extension d’analyse appropriés. Pour plus d’informations, consultez Écriture d’extensions de débogueur d’analyse personnalisée

Personnalisation de la sortie du débogueur à l’aide de DML

Vous pouvez personnaliser la sortie du débogueur à l’aide de DML. Pour plus d’informations, consultez Personnalisation de la sortie du débogueur à l’aide de DML.

Utilisation de JavaScript pour étendre les fonctionnalités du débogueur

Utilisez JavaScript pour créer des scripts qui comprennent les objets du débogueur et étendent et personnalisent les fonctionnalités du débogueur. Les fournisseurs JavaScript établissent un pont entre un langage de script et le modèle objet interne du débogueur. Le fournisseur de script du débogueur JavaScript permet l’utilisation de JavaScript avec le débogueur. Pour plus d’informations, consultez Script du débogueur JavaScript.