Partager via


Utilisation de symboles

Pour obtenir une vue d’ensemble des symboles, notamment l’utilisation de fichiers de symboles et de serveurs de symboles, consultez Symboles.

Noms et emplacements de symboles

Pour trouver l’emplacement d’un symbole en fonction de son nom, utilisez GetOffsetByName. Pour plus d’informations sur la syntaxe utilisée pour spécifier des noms de symboles, consultez Syntaxe des symboles et Correspondance de symboles.

Si le nom exact d’un symbole n’est pas connu ou si plusieurs symboles portent le même nom, StartSymbolMatch commence une recherche de symboles dont le nom correspond à un modèle donné. Pour plus d’informations sur la syntaxe, consultez Syntaxe générique de chaîne.

Pour trouver le nom d’un symbole en fonction de son emplacement, utilisez GetNameByOffset. Pour rechercher les noms des symboles dans un module près d’un emplacement donné, utilisez GetNearNamebyOffset.

Note Dans la mesure du possible, qualifiez le symbole avec le nom du module, par exemple mymodule !main. Sinon, si le symbole n’existe pas (par exemple, en raison d’une erreur typographique), le moteur devra charger et rechercher les symboles pour chaque module ; Il peut s’agir d’un processus lent, en particulier pour le débogage en mode noyau. Si le nom du symbole a été qualifié avec un nom de module, le moteur doit uniquement rechercher les symboles pour ce module.

Un symbole est identifié de manière unique à l’aide de la structure DEBUG_MODULE_AND_ID. Cette structure est retournée par les méthodes GetSymbolEntriesByName et GetSymbolEntriesByOffset, qui recherchent des symboles en fonction de leur nom et de leur emplacement, respectivement.

La méthode GetSymbolEntryInformation retourne une description d’un symbole à l’aide de la structure DEBUG_SYMBOL_ENTRY .

Pour rechercher le décalage d’un champ dans une structure, utilisez GetFieldOffset. Pour rechercher le nom d’un champ en fonction de son index dans une structure, utilisez GetFieldName. Pour rechercher le nom d’une constante d’énumération en fonction de sa valeur, utilisez GetConstantName.

La méthode GetSymbolInformation peut effectuer plusieurs demandes d’informations sur les symboles.

Options de symbole

Un certain nombre d’options contrôlent la façon dont les symboles sont chargés et déchargés. Pour obtenir une description de ces options, consultez Définition des options de symbole.

Les options de symbole peuvent être activées à l’aide de AddSymbolOptions et désactivées à l’aide de RemoveSymbolOptions.

GetSymbolOptions retourne les options de symbole actuelles. Pour définir toutes les options de symbole à la fois, utilisez SetSymbolOptions.

Symboles de rechargement

Après avoir chargé les fichiers de symboles, le moteur stocke les informations sur les symboles dans un cache interne. Pour vider ce cache, utilisez Recharger. Ces symboles devront être chargés à nouveau maintenant ou ultérieurement.

Symboles synthétiques

Les symboles synthétiques sont un moyen d’étiqueter une adresse arbitraire pour faciliter la référence. Des symboles synthétiques peuvent être créés dans n’importe quel module existant. La méthode AddSyntheticSymbol crée un symbole synthétique. Les symboles synthétiques peuvent être supprimés à l’aide de RemoveSyntheticSymbol. Le rechargement des symboles pour le module supprime tous les symboles synthétiques associés à ce module.

Chemin du symbole

Pour ajouter un répertoire ou un serveur de symboles au chemin des symboles, utilisez la méthode AppendSymbolPath. Le chemin du symbole entier est retourné par GetSymbolPath et peut être modifié à l’aide de SetSymbolPath.