Moteur de débogage

Un moteur de débogage (DE) travaille avec l’interpréteur ou le système d’exploitation pour fournir des services de débogage tels que le contrôle de l’exécution, les points d’arrêt et l’évaluation des expressions. Le DE est responsable de la surveillance de l’état d’un programme en cours de débogage. Pour ce faire, le DE utilise les méthodes disponibles dans l’environnement d’exécution pris en charge, que ce soit à partir du CPU ou des API fournies par l’environnement d’exécution.

Par exemple, le runtime common language (CLR) fournit des mécanismes pour surveiller un programme en cours d’exécution via les interfaces ICorDebugXXX. Un DE qui prend en charge le CLR utilise les interfaces ICorDebugXXX appropriées pour suivre un programme de code managé en cours de débogage. Il communique ensuite tout changement d’état au gestionnaire de session de débogage (SDM), qui transmet ces informations à l’IDE Visual Studio.

Remarque

Un moteur de débogage cible un environnement d’exécution spécifique, c’est-à-dire le système dans lequel le programme en cours de débogage s’exécute. Le CLR est l’environnement d’exécution pour le code managé, et le runtime Win32 est pour les applications Windows natives. Si le langage que vous créez peut cibler l’un de ces deux environnements d’exécution, Visual Studio fournit déjà les moteurs de débogage nécessaires. Vous devez simplement implémenter un évaluateur d’expressions.

Fonctionnement du moteur de débogage

Les services de surveillance sont implémentés via les interfaces DE et peuvent faire passer le package de débogage entre différents modes opérationnels. Pour plus d’informations, veuillez consulter la section Modes opérationnels. Il y a généralement une seule implémentation DE par environnement d’exécution.

Remarque

Bien qu’il existe des implémentations DE distinctes pour Transact-SQL et JScript, VBScript et JScript partagent un seul DE.

Le débogage dans Visual Studio permet aux moteurs de débogage de fonctionner de deux manières : soit dans le même processus que l’interface Visual Studio, soit dans le même processus que le programme cible en cours de débogage. La deuxième forme se produit généralement lorsque le processus en cours de débogage est en fait un script s’exécutant sous un interpréteur. Le moteur de débogage doit avoir une connaissance intime de l’interpréteur pour surveiller le script. Dans ce cas, l’interpréteur est en fait un runtime ; les moteurs de débogage sont destinés à des implémentations de runtime spécifiques. De plus, l’implémentation d’un seul DE peut être divisée entre les limites de processus et de machine (par exemple, le débogage à distance).

Le DE expose les interfaces de débogage de Visual Studio. Toute communication se fait via COM. Que le DE soit chargé en interne, en externe ou sur un autre ordinateur, cela n’affecte pas la communication entre les composants.

Le DE travaille avec un composant évaluateur d’expressions pour permettre au DE de comprendre la syntaxe des expressions propre à ce runtime particulier. Le DE travaille également avec un composant gestionnaire de symboles pour accéder aux informations de débogage symboliques générées par le compilateur de langage. Pour plus d’informations, veuillez consulter les sections Évaluateur d’expressions et Fournisseur de symboles.

Voir aussi