Recherche de symboles

Une fois qu’un fichier de symboles a été chargé dans le gestionnaire de symboles, une application peut utiliser les fonctions de localisateur de symboles pour retourner les informations de symbole pour une adresse spécifiée. Ces fonctions peuvent également trouver un nom de fichier de code source et un emplacement de numéro de ligne pour une adresse.

Énumération des fichiers de symboles

Pour récupérer la liste de tous les fichiers de symboles chargés par nom de module, appelez la fonction SymEnumerateModules64 . Pour obtenir un exemple, consultez Énumération des modules de symboles. Pour récupérer une liste de symboles pour un module donné, appelez la fonction SymEnumSymbols . Pour obtenir un exemple, consultez Énumération de symboles.

Récupération de symboles par adresse

Pour récupérer des informations symboliques pour une adresse spécifique, utilisez la fonction SymFromAddr . Cette fonction récupère des informations et les stocke dans une structure SYMBOL_INFO . Étant donné que les noms de symboles sont de longueur variable, vous devez fournir un espace tampon supplémentaire suivant la déclaration de structure SYMBOL_INFO . Pour obtenir un exemple, consultez Récupération des informations de symbole par adresse.

Notez que l’adresse n’a pas besoin d’être sur une limite de symbole. Si l’adresse vient après le début d’un symbole mais avant la fin du symbole (le début du symbole plus la taille du symbole), la fonction localisera le symbole.

Récupération de symboles par nom de symbole

Pour récupérer des informations symboliques dans une structure SYMBOL_INFO pour un module et un nom de symbole spécifiques, utilisez la fonction SymFromName . Si le chargement différé des symboles est défini, SymFromName tente de charger le fichier de symboles d’un module s’il n’a pas déjà été chargé. Pour spécifier un nom de module avec un nom de symbole, utilisez le module de syntaxe ! SymName. Le caractère " ! » délimite le nom du module du nom du symbole. Pour obtenir un exemple, consultez Récupération des informations de symbole par nom.

Récupération des numéros de ligne par adresse

Pour récupérer l’emplacement du code source pour une adresse spécifique, utilisez la fonction SymGetLineFromAddr64 . Cette fonction remplit une structure IMAGEHLP_LINE64 qui inclut le nom de fichier source et l’emplacement du numéro de ligne référencé par l’adresse spécifiée. Pour obtenir un exemple, consultez Récupération des informations de symbole par adresse.

Récupération des numéros de ligne par nom de symbole

Pour récupérer l’emplacement du code source pour un nom de symbole spécifique, utilisez la fonction SymGetLineFromName64 . Cette fonction est similaire à SymGetSymFromName64, mais récupère une structure IMAGEHLP_LINE64 . Pour utiliser SymGetLineFromAddr64 ou SymGetLineFromName64, vous devez définir l’option de lignes de chargement (SYMOPT_LOAD_LINES) à l’aide de la fonction SymSetOptions . Pour obtenir un exemple, consultez Récupération des informations de symbole par nom.