Symboles et fichiers de symboles

Lorsque des applications, des bibliothèques, des pilotes ou des systèmes d’exploitation sont liés, l’éditeur de liens qui crée les fichiers .exe et .dll crée également un certain nombre de fichiers supplémentaires appelés fichiers de symboles.

Les fichiers de symboles contiennent une variété de données qui ne sont pas réellement nécessaires lors de l’exécution des fichiers binaires, mais qui peuvent être très utiles dans le processus de débogage.

En règle générale, les fichiers de symboles peuvent contenir :

  • Variables globales

  • Variables locales

  • Noms des fonctions et adresses de leurs points d’entrée

  • Enregistrements d’omission de pointeur de trame (FPO)

  • Numéros de ligne source

Chacun de ces éléments est appelé, individuellement, un symbole. Par exemple, un fichier de symboles unique Myprogram.pdb peut contenir plusieurs centaines de symboles, y compris des variables globales et des noms de fonctions et des centaines de variables locales. Souvent, les éditeurs de logiciels publient deux versions de chaque fichier de symboles : un fichier de symboles complet contenant à la fois des symboles publics et des symboles privés, et un fichier réduit (supprimé) contenant uniquement des symboles publics. Pour plus d’informations, consultez Symboles publics et privés.

Lors du débogage, vous devez vous assurer que le débogueur peut accéder aux fichiers de symboles associés à la cible que vous déboguez. Le débogage en direct et le débogage des fichiers de vidage sur incident nécessitent des symboles. Vous devez obtenir les symboles appropriés pour le code que vous souhaitez déboguer et charger ces symboles dans le débogueur.

Symboles Windows

Windows conserve ses symboles dans les fichiers avec l’extension .pdb.

Le compilateur et l’éditeur de liens contrôlent le format des symboles. L’éditeur de liens Visual C++ place tous les symboles dans les fichiers .pdb.

Le système d’exploitation Windows a été créé en deux versions. La build gratuite (ou build de vente au détail) a des binaires relativement petits, et la build vérifiée (ou build de débogage) a des binaires plus grands, avec plus de symboles de débogage dans le code lui-même. Les builds vérifiées étaient disponibles sur les versions antérieures de Windows avant Windows 10, version 1803. Chacune de ces builds avait ses propres fichiers de symboles. Lors du débogage d’une cible sur Windows, vous devez utiliser les fichiers de symboles qui correspondent à la build de Windows sur la cible.

Le tableau suivant répertorie plusieurs répertoires qui existent dans une arborescence de symboles Windows standard :

Répertoire Contient des fichiers de symboles pour

ACM

Fichiers du Gestionnaire de compression audio Microsoft

COM

Fichiers exécutables (.com)

CPL

Panneau de configuration programmes

DLL

Fichiers de bibliothèque de liens dynamiques (.dll)

DRV

Fichiers de pilote (.drv)

EXE

Fichiers exécutables (.exe)

SCR

Fichiers d’économiseur d’écran

SYS

Fichiers de pilote (.sys)