Partager via


Symboles publics et symboles privés

Lorsque vous créez un pilote ou un autre programme, les symboles du programme sont généralement stockés dans des fichiers de symboles, bien que certains compilateurs plus anciens stockent certains symboles dans le fichier exécutable. Lorsqu’un débogueur analyse un programme, il doit accéder aux symboles du programme.

En règle générale, les fichiers de symboles peuvent inclure tout ou partie des symboles suivants :

  • Noms et adresses de toutes les fonctions

  • Toutes les définitions de type de données, de structure et de classe

  • Noms, types de données et adresses des variables globales

  • Noms, types de données, adresses et étendues des variables locales

  • Numéros de ligne dans le code source qui correspondent à chaque instruction binaire

Certains développeurs de programmes peuvent se sentir mal à l’aise de partager toutes ces informations avec leurs clients. BinPlace peut être utilisé pour réduire la quantité de symboles dans un fichier de symboles.

Certains symboles de base, tels que les noms de fonction et les variables globales, sont nécessaires même pour le débogage le plus rudimentaire. Ces symboles sont appelés symboles publics. Les symboles tels que les noms de structure de données, les variables globales visibles dans un seul fichier objet, les variables locales et les informations de numéro de ligne ne sont pas toujours nécessaires pour le débogage, bien qu’ils soient utiles pour une session de débogage plus approfondie. Ces symboles sont appelés symboles privés.

Un fichier de symboles qui contient des symboles privés et publics est appelé fichier de symboles complet. Un fichier de symboles qui contient uniquement des symboles publics est appelé fichier de symboles supprimé.

BinPlace peut créer un fichier de symboles supprimé. Pour ce faire, il crée un fichier de symboles qui contient uniquement des symboles publics ; les symboles privés sont supprimés (« supprimés »). Lorsque les options BinPlace les plus courantes sont utilisées (-a -x -s -n), les fichiers de symboles supprimés sont placés dans le répertoire répertorié après le commutateur -s , et les fichiers de symboles complets sont placés dans le répertoire répertorié après le commutateur -n .

Lorsque BinPlace supprime un fichier de symboles, les versions supprimées et complètes du fichier reçoivent des signatures identiques et d’autres informations d’identification. Cela vous permet d’utiliser l’une ou l’autre version pour le débogage.

Note BinPlace supprime les symboles privés d’un fichier de symboles lorsque celui-ci se trouve dans le même répertoire que le fichier exécutable et que vous spécifiez le nom du fichier exécutable (avec les options appropriées) sur la ligne de commande BinPlace. Vous ne devez pas spécifier le nom du fichier de symboles lui-même. Cela entraîne le déplacement du fichier par BinPlace sans le modifier.

Si vous devez déterminer si un fichier de symboles contient des symboles privés, vous pouvez utiliser l’outil SymChk . SymChk fait partie du package Outils de débogage pour Windows. Pour plus d’informations, consultez SymChk et Débogage Windows .

Si vous soumettez votre pilote au Programme de certification matérielle Windows, vous pouvez envoyer des fichiers de symboles supprimés si vous préférez ne pas partager vos symboles privés avec Microsoft. Les fichiers de symboles qui ont été supprimés par BinPlace n’exposent aucune partie de l’architecture de votre pilote qui serait normalement considérée comme confidentielle. Pour plus d’informations, consultez le Programme de certification du matériel Windows.