Introduction au moteur du débogueur

Cette documentation explique comment utiliser le moteur du 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 pour effectuer un débogage en mode utilisateur ou en mode noyau sur Microsoft Windows.

Moteur du débogueur

Le moteur du 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 du débogueur peut acquérir des cibles, définir des points d’arrêt, surveiller des événements, interroger des symboles, lire et écrire de la mémoire, et contrôler les threads et les processus dans une cible.

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

L’API du moteur du 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 liés aux débogueurs et au moteur du débogueur qui ne sont pas encore documentés ici, consultez la section techniques de débogage de cette documentation.

Pour obtenir une partie des fonctionnalités actuellement non documentées de l’API du moteur du 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 générant une DLL d’extension. Par exemple, vous souhaiterez peut-être écrire une commande d’extension pour afficher une structure de données complexe.

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

  • Dll d’extension dbgeng. Ceux-ci sont basés 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 du moteur du débogueur et peuvent également utiliser l’API WdbgExts.

  • Dll d’extension EngExtCpp. Celles-ci sont basées sur les prototypes dans les 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 du moteur du débogueur et l’infrastructure d’extension EngExtCpp, et peuvent également utiliser l’API WdbgExts.

  • Dll d’extension wdbgexts. Ceux-ci sont basés 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 uniquement 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 du débogueur et peut être utilisée uniquement par les extensions.

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

les exemples de code d’Extension sont installés dans le cadre des outils de débogage pour Windows package 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 des 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 comprend des fichiers makefile et sources à utiliser avec l’utilitaire de génération. 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 du débogueur ! analyze en écrivant un plug-in d’extension d’analyse. En fournissant un plug-in d’extension d’analyse, vous pouvez participer à l’analyse d’une vérification de bogue ou à une exception d’une façon 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é. Quand ! analyze s’exécute, il localise, charge et exécute les plug-ins d’extensions 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 de débogueur et étendent et personnalisent les fonctionnalités du débogueur. Les fournisseurs JavaScript pontent un langage de script vers le modèle objet interne du débogueur. Le fournisseur de script du débogueur JavaScript permet à d’utiliser JavaScript avec le débogueur. Pour plus d’informations, consultez script du débogueur JavaScript.