GDB - Symboles de débogage

UNE Debugging Symbol Tablemappe les instructions du programme binaire compilé à leur variable, fonction ou ligne correspondante dans le code source. Ce mappage pourrait être quelque chose comme:

  • Instruction du programme ⇒ nom de l'élément, type d'élément, fichier d'origine, numéro de ligne défini.

Les tables de symboles peuvent être intégrées au programme ou stockées dans un fichier séparé. Donc, si vous prévoyez de déboguer votre programme, il est alors nécessaire de créer une table de symboles qui contiendra les informations requises pour déboguer le programme.

Nous pouvons déduire les faits suivants concernant les tables de symboles:

  • Une table de symboles fonctionne pour une version particulière du programme - si le programme change, une nouvelle table doit être créée.

  • Les versions de débogage sont souvent plus volumineuses et plus lentes que les versions de détail (sans débogage); les builds de débogage contiennent la table des symboles et d'autres informations auxiliaires.

  • Si vous souhaitez déboguer un programme binaire que vous n'avez pas compilé vous-même, vous devez obtenir les tables de symboles auprès de l'auteur.

Pour permettre à GDB de lire toutes ces informations ligne par ligne de la table des symboles, nous devons la compiler un peu différemment. Normalement, nous compilons nos programmes comme:

gcc hello.cc -o hello

Au lieu de faire cela, nous devons compiler avec l'indicateur -g comme indiqué ci-dessous:

gcc -g hello.cc -o hello