Programmes d'assistance du Kit de développement logiciel pour le débogage
Ces fonctions et déclarations sont des fonctions d'assistance globales pour implémenter des moteurs de débogage, les évaluateurs d'expression, et les fournisseurs de symbole en C++.
Notes
Il n'existe aucune version managée de ces fonctions et déclarations de référence.
Vue d'ensemble
Pour que les moteurs de débogage, des évaluateurs d'expression, et les fournisseurs de symbole soient utilisés par Visual Studio, ils doivent être enregistrés. Cela est fait en définissant des sous-clés et des entrées de Registre, sinon appelées « métriques du paramètre. » Les fonctions globales suivantes sont conçues pour simplifier le processus de mise à jour ces métriques. Consultez la section sur les emplacements de Registre pour découvrir la disposition de chaque sous-clé de Registre qui est mise à jour par ces fonctions.
fonctions métriques générales
Ce sont des fonctions générales utilisées par les moteurs de débogage. Les fonctions spécialisées pour les évaluateurs d'expression et des fournisseurs de symboles sont détaillées ultérieurement.
méthode de GetMetric
Récupère une valeur métrique du Registre.
HRESULT GetMetric(
LPCWSTR pszMachine,
LPCWSTR pszType,
REFGUID guidSection,
LPCWSTR pszMetric,
DWORD * pdwValue,
LPCWSTR pszAltRoot
);
Paramètre |
Description |
---|---|
pszMachine |
[in] le nom probablement d'un ordinateur distant dont le registre sera écrit (NULL signifie l'ordinateur local). |
pszType |
[in] L'un des types métriques. |
guidSection |
[in] GUID d'un moteur, d'un évaluateur, d'une exception, etc. spécifiques. Cela spécifie une sous-section sous un type métrique d'un élément spécifique. |
pszMetric |
[in] La métrique à obtenir. Cela correspond à un nom de valeur spécifique. |
pdwValue |
[in] L'emplacement de stockage de la valeur de la métrique. Il existe plusieurs versions de GetMetric qui peuvent retourner une valeur DWORD (comme dans cet exemple), un BSTR, un GUID, ou un tableau de GUID. |
pszAltRoot |
[in] Une autre racine de Registre à utiliser. Affectez à NULL pour utiliser la valeur par défaut. |
méthode de SetMetric
Définit la valeur métriques spécifiée dans le Registre.
HRESULT SetMetric(
LPCWSTR pszType,
REFGUID guidSection,
LPCWSTR pszMetric,
const DWORD dwValue,
bool fUserSpecific,
LPCWSTR pszAltRoot
);
Paramètre |
Description |
---|---|
pszType |
[in] L'un des types métriques. |
guidSection |
[in] GUID d'un moteur, d'un évaluateur, d'une exception, etc. spécifiques. Cela spécifie une sous-section sous un type métrique d'un élément spécifique. |
pszMetric |
[in] La métrique à obtenir. Cela correspond à un nom de valeur spécifique. |
dwValue |
[in] L'emplacement de stockage de la valeur dans la métrique. Il existe plusieurs versions de SetMetric qui peuvent inscrire un DWORD (dans cet exemple), un BSTR, un GUID, ou un tableau de GUID. |
fUserSpecific |
[in] TRUE si la métrique est spécifique à l'utilisateur et s'il est écrit dans la ruche de l'utilisateur au lieu de la ruche de l'ordinateur local. |
pszAltRoot |
[in] Une autre racine de Registre à utiliser. Affectez à NULL pour utiliser la valeur par défaut. |
méthode de RemoveMetric
Supprime la métrique spécifiée du Registre.
HRESULT RemoveMetric(
LPCWSTR pszType,
REFGUID guidSection,
LPCWSTR pszMetric,
LPCWSTR pszAltRoot
);
Paramètre |
Description |
---|---|
pszType |
[in] L'un des types métriques. |
guidSection |
[in] GUID d'un moteur, d'un évaluateur, d'une exception, etc. spécifiques. Cela spécifie une sous-section sous un type métrique d'un élément spécifique. |
pszMetric |
[in] La métrique à supprimer. Cela correspond à un nom de valeur spécifique. |
pszAltRoot |
[in] Une autre racine de Registre à utiliser. Affectez à NULL pour utiliser la valeur par défaut. |
méthode d'EnumMetricSections
énumère les différentes sections métriques dans le Registre.
HRESULT EnumMetricSections(
LPCWSTR pszMachine,
LPCWSTR pszType,
GUID * rgguidSections,
DWORD * pdwSize,
LPCWSTR pszAltRoot
);
Paramètre |
Description |
---|---|
pszMachine |
[in] le nom probablement d'un ordinateur distant dont le registre sera écrit (NULL signifie l'ordinateur local). |
pszType |
[in] L'un des types métriques. |
rgguidSections |
[in, out] Tableau pré-allouée de GUID à accomplir. |
pdwSize |
[in] Le nombre maximal de GUID qui peut être enregistré dans le tableau d' rgguidSections . |
pszAltRoot |
[in] Une autre racine de Registre à utiliser. Affectez à NULL pour utiliser la valeur par défaut. |
Fonctions évaluateur d'expression
Fonction |
Description |
---|---|
GetEEMetric |
Récupère une valeur métrique du Registre. |
SetEEMetric |
Définit la valeur métriques spécifiée dans le Registre. |
RemoveEEMetric |
Supprime la métrique spécifiée du Registre. |
GetEEMetricFile |
Obtient un nom de fichier de la métrique spécifié et la charge, en retournant le contenu du fichier en tant que chaîne. |
fonctions d'exception
Fonction |
Description |
---|---|
GetExceptionMetric |
Récupère une valeur métrique du Registre. |
SetExceptionMetric |
Définit la valeur métriques spécifiée dans le Registre. |
RemoveExceptionMetric |
Supprime la métrique spécifiée du Registre. |
RemoveAllExceptionMetrics |
Supprime toutes les métriques d'exception du Registre. |
fonctions de fournisseur de symbole
Fonction |
Description |
---|---|
GetSPMetric |
Récupère une valeur métrique du Registre. |
SetSPMetric |
Définit la valeur métriques spécifiée dans le Registre. |
RemoveSPMetric |
Supprime la métrique spécifiée du Registre. |
fonctions d'énumération
Fonction |
Description |
---|---|
EnumMetricSections |
Énumère toutes les métriques pour un type métriques spécifié. |
EnumDebugEngine |
énumère les moteurs de débogage enregistrés. |
EnumEEs |
énumère les évaluateurs d'expression enregistrés. |
EnumExceptionMetrics |
Énumère toutes les métriques d'exception. |
définitions métriques
Ces définitions peuvent être utilisées pour les noms métriques prédéfinis. Tous les noms correspondent à des clés de Registre et à noms de la valeur et sont définis comme des chaînes à caractères larges : par exemple, extern LPCWSTR metrictypeEngine.
types métriques prédéfinis |
description : la clé de base pour…. |
---|---|
metrictypeEngine |
Toutes les métriques du moteur de débogage. |
metrictypePortSupplier |
Tous passent des métriques de fournisseur. |
metrictypeException |
Toutes les métriques d'exception. |
metricttypeEEExtension |
Toutes les extensions évaluateur d'expression. |
Propriétés du moteur de débogage |
Description |
---|---|
metricAddressBP |
Ayant une valeur différente de zéro pour indiquer la prise en charge des points d'arrêt sur adresse mémoire. |
metricAlwaysLoadLocal |
Ayant une valeur différente de zéro afin de charger toujours le moteur de débogage localement. |
metricLoadInDebuggeeSession |
NO UTILISÉ |
metricLoadedByDebuggee |
Affectez une valeur différente de zéro pour indiquer que le moteur de débogage sera toujours chargée avec ou par le programme débogué. |
metricAttach |
L'ensemble à une valeur différente de zéro pour indiquer la prise en charge de la pièce jointe à exister programme. |
metricCallStackBP |
Ayant une valeur différente de zéro pour indiquer la prise en charge des points d'arrêt de la pile des appels. |
metricConditionalBP |
Ayant une valeur différente de zéro pour indiquer la prise en charge du paramètre des points d'arrêt conditionnels. |
metricDataBP |
Ayant une valeur différente de zéro pour indiquer la prise en charge du paramètre des points d'arrêt sur les modifications des données. |
metricDisassembly |
Ayant une valeur différente de zéro pour indiquer la prise en charge de la production d'obtenir l'intégralité du code machine. |
metricDumpWriting |
Ayant une valeur différente de zéro pour indiquer la prise en charge de l'écriture de dump (faire un dump de la mémoire à un périphérique de sortie). |
metricENC |
Affectez une valeur différente de zéro pour indiquer la prise en charge de la modification et de continuer. Notes Un moteur de débogage personnalisé ne doit jamais définir cela ou doit toujours le définir à 0. |
metricExceptions |
Ayant une valeur différente de zéro pour indiquer la prise en charge des exceptions. |
metricFunctionBP |
Ayant une valeur différente de zéro pour indiquer la prise en charge des points d'arrêt nommés (points d'arrêt qui arrête lorsqu'une certaine nom de fonction est appelé). |
metricHitCountBP |
Ayant une valeur différente de zéro pour indiquer la prise en charge du paramètre des points d'arrêt « de point de correspondance » (points d'arrêt qui sont déclenchés uniquement après est atteint un certain nombre de fois). |
metricJITDebug |
Ayant une valeur différente de zéro en signe en charge le débogage juste-à-temps (le débogueur est lancé lorsqu'une exception se produit dans un processus en cours de exécution). |
metricMemory |
NO UTILISÉ |
metricPortSupplier |
Affectez -lui le CLSID du fournisseur de port s'il est implémenté. |
metricRegisters |
NO UTILISÉ |
metricSetNextStatement |
Ayant une valeur différente de zéro pour indiquer la prise en charge de définir l'instruction suivante (qui ignore l'exécution des instructions intermédiaires). |
metricSuspendThread |
Ayant une valeur différente de zéro pour indiquer la prise en charge d'interrompre l'exécution des threads. |
metricWarnIfNoSymbols |
Affectez une valeur différente de zéro pour indiquer qu'il doit être informé l'utilisateur s'il n'y a aucun symbole. |
metricProgramProvider |
Affectez -lui le CLSID du fournisseur de programme. |
metricAlwaysLoadProgramProviderLocal |
Affectez -lui une valeur différente de zéro pour indiquer que le fournisseur de programme doit toujours être chargé localement. |
metricEngineCanWatchProcess |
Affectez -lui une valeur différente de zéro pour indiquer que le moteur de débogage regardera alors pour les événements de processus au lieu du fournisseur de programme. |
metricRemoteDebugging |
Affectez -lui une valeur différente de zéro en signe en charge le débogage distant. |
metricEncUseNativeBuilder |
Affectez -lui une valeur différente de zéro pour indiquer que la modification et reprise du gestionnaire doit utiliser l'encbuild.dll du moteur de débogage pour générer pour la modification et de continuer. Notes Un moteur de débogage personnalisé ne doit jamais définir cela ou doit toujours le définir à 0. |
metricLoadUnderWOW64 |
Affectez -lui une valeur différente de zéro pour indiquer que le moteur de débogage doit être chargé dans le processus du programme débogué sous le WOW lors de le débogage d'un processus 64 bits ; sinon, le moteur de débogage sera chargé dans le processus Visual Studio (qui s'exécute sous WOW64). |
metricLoadProgramProviderUnderWOW64 |
Affectez -lui une valeur différente de zéro pour indiquer que le fournisseur de programme doit être chargé dans le processus du programme débogué lors de le débogage d'un processus 64 bits sous le WOW ; sinon, il est chargé dans le processus Visual Studio. |
metricStopOnExceptionCrossingManagedBoundary |
Affectez -lui une valeur différente de zéro pour indiquer que le processus doit arrêter si une exception non gérée est levée au delà de les limites managées/code non managé. |
metricAutoSelectPriority |
Affectez -lui une priorité pour la sélection automatique du moteur de débogage (les valeurs supérieures est égal à la priorité supérieure). |
metricAutoSelectIncompatibleList |
Clé de Registre contenant les entrées qui spécifient les GUID pour les moteurs de débogage sont ignorés dans la sélection automatique. Ces entrées sont un nombre (0, 1, 2, etc.) avec un GUID exprimé sous la forme d'une chaîne. |
metricIncompatibleList |
Clé de Registre contenant les entrées qui spécifient GUID pour les moteurs de débogage qui sont incompatibles avec ce moteur de débogage. |
metricDisableJITOptimization |
Affectez -lui une valeur différente de zéro pour indiquer que les optimisations juste-à-temps (pour le code managé) doivent être désactivées lors de le débogage. |
Propriétés évaluateur d'expression |
Description |
---|---|
metricEngine |
Cela contient le nombre de moteurs de débogage qui prennent en charge l'évaluateur d'expression spécifié. |
metricPreloadModules |
Affectez -lui une valeur différente de zéro pour indiquer que les modules doivent être préchargés lorsqu'un évaluateur d'expression est lancé à un programme. |
metricThisObjectName |
Définissez ce paramètre en « this » nom de l'objet. |
Propriétés d'extension évaluateur d'expression |
Description |
---|---|
metricExtensionDll |
Nom de la DLL qui prend en charge cette extension. |
metricExtensionRegistersSupported |
liste de registres pris en charge. |
metricExtensionRegistersEntryPoint |
Point d'entrée pour les registres accès. |
metricExtensionTypesSupported |
liste de types pris en charge. |
metricExtensionTypesEntryPoint |
Point d'entrée pour les types d'accès. |
propriétés de fournisseur de port |
Description |
---|---|
metricPortPickerCLSID |
Le CLSID de le sélecteur de port (une boîte de dialogue que l'utilisateur peut sélectionner des ports et d'ajouter des ports à utiliser pour le débogage). |
metricDisallowUserEnteredPorts |
Une valeur différente de zéro si les ports utilisateur-entrés ne peuvent pas être ajoutés au fournisseur de port (cela rend la boîte de dialogue de port-récolteuse essentiellement en lecture seule). |
metricPidBase |
L'ID de processus de base utilisé par le fournisseur de port en allouant les ID de processus. |
Types prédéfinis du magasin de SP |
Description |
---|---|
storetypeFile |
Les symboles sont stockés dans un fichier séparé. |
storetypeMetadata |
Les symboles sont stockés sous forme de métadonnées dans un assembly. |
Diverses propriétés |
Description |
---|---|
metricShowNonUserCode |
Affectez -lui une valeur différente de zéro pour afficher le code non-utilisateur. |
metricJustMyCodeStepping |
Affectez -lui une valeur différente de zéro pour indiquer que le pas - à - pas peut se produire uniquement dans le code utilisateur. |
metricCLSID |
Le CLSID pour un objet d'un type métriques spécifique. |
metricName |
Nom convivial d'un objet d'un type métriques spécifique. |
metricLanguage |
Nom de la langue. |
emplacements de Registre
Les mesures sont lues à partir de et écrites dans le Registre, en particulier dans la sous-clé d' VisualStudio .
Notes
Le plus souvent, la métrique sera entrée à la clé HKEY_LOCAL_MACHINE.Toutefois, il arrive que HKEY_CURRENT_USER est la clé de destination.Dbgmetric.lib traite les deux clés.En obtenant un métriques, il recherche HKEY_CURRENT_USER d'abord, puis HKEY_LOCAL_MACHINE.Lorsqu'il définit un métriques, un paramètre spécifie quelle clé de niveau supérieur à utiliser.
[clé de Registre]\
Software\
Microsoft\
VisualStudio\
[racine de version]\
[racine métriques]\
[type métriques]\
[métriques] = [valeur métriques]
[métriques] = [valeur métriques]
[métriques] = [valeur métriques]
Espace réservé |
Description |
---|---|
[clé de Registre] |
HKEY_CURRENT_USER ou HKEY_LOCAL_MACHINE. |
[racine de version] |
la version de Visual Studio (par exemple, 7.0, 7.1, ou 8.0). Toutefois, cette racine peut également être modifiée à l'aide de le commutateur d'/rootsuffix à devenv.exe. Pour VSIP, ce modificateur est généralement Exp, donc la racine de version est, par exemple, 8.0Exp. |
[racine métriques] |
c'est ou AD7Metrics ou AD7Metrics(Debug), selon que la version debug de dbgmetric.lib est utilisé. Notes Si dbgmetric.lib est utilisé, cette convention d'affectation de noms doit être adhérée si vous avez des différences entre les versions debug et Release qui doivent être pris en compte dans le Registre. |
[type métriques] |
Le type de la métrique à écrire : Engine, ExpressionEvaluator, SymbolProvider, etc. Ils sont tous sont définis comme dans dbgmetric.h comme, où est le nom spécifique de type. |
[métriques] |
Le nom d'une entrée pour assigner une valeur pour définir la métrique. l'organisation réelle de la métrique dépend du type métrique. |
[valeur métriques] |
la valeur assignée au métrique. Le type que la valeur doit avoir (chaîne, nombre, etc.). dépend de la métrique. |
Notes
Tout le GUID sont stockés dans le format d' {GUID}.Par exemple, {123D150B-FA18-461C-B218-45B3E4589F9B}.
moteurs de débogage
Voici l'organisation de la métrique de moteurs de débogage dans le Registre. Engine est le nom de type métrique d'un moteur de débogage et correspond à [type métriques] dans la sous-arborescence ci-dessus de Registre.
Engine\
[guid du moteur]\
CLSID = [guid de classe]
[métriques] = [valeur métriques]
[métriques] = [valeur métriques]
[métriques] = [valeur métriques]
PortSupplier\
0 = [guid de fournisseur de port]
1 = [guid de fournisseur de port]
Espace réservé |
Description |
---|---|
[guid du moteur] |
GUID du moteur de débogage. |
[guid de classe] |
GUID de la classe qui implémente ce moteur de débogage. |
[guid de fournisseur de port] |
GUID du fournisseur de port le cas échéant. De nombreuses moteurs de débogage utilisent le fournisseur de port par défaut et ne spécifient pas leur propre fournisseur. Dans ce cas, la sous-clé PortSupplier est absente. |
déplacez les fournisseurs
Voici l'organisation de la métrique de fournisseur de port dans le Registre. PortSupplier est le nom de type métrique d'un fournisseur de port et correspond à [type métriques].
PortSupplier\
[guid de fournisseur de port]\
CLSID = [guid de classe]
[métriques] = [valeur métriques]
[métriques] = [valeur métriques]
Espace réservé |
Description |
---|---|
[guid de fournisseur de port] |
GUID du fournisseur de port |
[guid de classe] |
GUID de la classe qui implémente ce fournisseur de port |
fournisseurs de symbole
Voici l'organisation de la métrique de fournisseur de symbole dans le Registre. SymbolProvider est le nom de type métrique du fournisseur de symbole et correspond à [type métriques].
SymbolProvider\
[guid de fournisseur de symbole]\
file\
CLSID = [guid de classe]
[métriques] = [valeur métriques]
[métriques] = [valeur métriques]
metadata\
CLSID = [guid de classe]
[métriques] = [valeur métriques]
[métriques] = [valeur métriques]
Espace réservé |
Description |
---|---|
[guid de fournisseur de symbole] |
GUID du fournisseur de symbole |
[guid de classe] |
GUID de la classe qui implémente ce fournisseur de symbole |
évaluateurs d'expression
Voici l'organisation de la métrique évaluateur d'expression dans le Registre. ExpressionEvaluator est le nom de type métrique pour l'évaluateur d'expression et correspond à [type métriques].
Notes
Le type mesures de ExpressionEvaluator n'est pas défini dans dbgmetric.h, car il est supposé que toutes les modifications métriques pour les évaluateurs d'expression aboutissent via les fonctions métriques évaluateur d'expression approprié (la disposition de la sous-clé d' ExpressionEvaluator est quelque peu complexe, les détails sont masqués à l'intérieur de dbgmetric.lib).
ExpressionEvaluator\
[guid de langage]\
[guid de fournisseur]\
CLSID = [guid de classe]
[métriques] = [valeur métriques]
[métriques] = [valeur métriques]
Engine\
0 = [guid du moteur de débogage]
1 = [guid du moteur de débogage]
Espace réservé |
Description |
---|---|
[guid de langage] |
GUID d'un langage |
[guid de fournisseur] |
GUID d'un fournisseur |
[guid de classe] |
GUID de la classe qui implémente l'évaluateur d'expression |
[guid du moteur de débogage] |
GUID d'un moteur de débogage avec lequel cet évaluateur d'expression fonctionne |
Extensions évaluateur d'expression
Voici l'organisation de la métrique d'extension évaluateur d'expression dans le Registre. EEExtensions est le nom de type métrique pour les extensions évaluateur d'expression et correspond à [type métriques].
EEExtensions\
[guid d'extension]\
[métriques] = [valeur métriques]
[métriques] = [valeur métriques]
Espace réservé |
Description |
---|---|
[guid d'extension] |
GUID d'une extension évaluateur d'expression |
Exceptions
Voici l'organisation de la métrique d'exceptions dans le Registre. Exception est le nom de type métrique pour les exceptions et correspond à [type métriques].
Exception\
[guid du moteur de débogage]\
[types d'exceptions]\
[exception]\
[métriques] = [valeur métriques]
[métriques] = [valeur métriques]
[exception]\
[métriques] = [valeur métriques]
[métriques] = [valeur métriques]
Espace réservé |
Description |
---|---|
[guid du moteur de débogage] |
GUID d'un moteur de débogage qui prend en charge des exceptions. |
[types d'exceptions] |
Un titre général pour la sous-clé identifiant la classe de les gérer. Les noms classiques sont C++ Exceptions, Win32 Exceptions, Common Language Runtime Exceptions, et Native Run-Time Checks. ces noms sont également utilisés pour identifier une classe particulière d'exception à l'utilisateur. |
[exception] |
un nom pour une exception : par exemple, _com_error ou Control-Break. ces noms sont également utilisés pour identifier une exception particulière à l'utilisateur. |
Configuration requise
Ces fichiers se trouvent dans le répertoire d'installation de Microsoft Visual Studio 2010 Kit de développement logiciel (par défaut, [lecteur]\Program Files\Microsoft Visual Studio 2010 SDK \).
en-tête : inclut \ dbgmetric.h
bibliothèque : bibliothèques \ ad2de.lib, bibliothèques \ dbgmetric.lib